2016-04-11 30 views
0

Yerel olarak gulp işlemi ile kurulum ve konfigürasyon yapıyorum ve şimdi de Teamcity ile çalışmayı deniyorum.Takım halinde çalkantılı ve tartışmalı

Zaten düğüm yüklü ve yutkunmak fiş içinde var. Ben% birikmesi sayı% değişken kullanın ve ayarlamak için kullanabilirsiniz böylece edilir Yutkunuyorum-yumru kullanıyorum yudum paketlerinin

Bir package.json dosyasının sürümü. Ben bu ben

gulp.task('setVersion', function() { 
    var msg = 'Setting version'; 
    var version = args.version; 
    var options = {}; 
    if (version) { 
     options.version = version; 
     msg += ' to ' + version; 
    } 
    log(msg); 
    return gulp 
     .src(config.packages) 
     .pipe($.print()) 
     .pipe(version ? $.bump(options) : $.util.noop()) 
     .pipe(gulp.dest(config.dest.root)); 
}); 

bu işe almak için kullanıyorum yudum iştir

komut satırından argümanlar okuyabilmesi için ben

gulp build --version=2.3.4 
çağrı komut satırından, yargs kullanıyorum

yapı, çalıştırmak istediğim yontma görevidir ve --version, komut satırından okumak istediğim değerdir.

Görev setVersion, yapım görevinin bir bağımlılığıdır. Paket.json dosyasını kullanan tüm .css ve js dosyalarının op'una dahil edilmek üzere kullanılan diğer yontma görevler vardır, ancak bunlar 'run-sequence' paketi 'run-sequence'

Bunu komut satırından çalıştırdığımda, her şey beklendiği gibi çalışır.

Ekibimin yapısında, tanımlanmış iki adım var.

Adım 1, Node.js olduğunu NPM runner, tüm ilgili paketleri doğru bir şekilde aşağı çekerek görebilirsiniz.

Adım 2, Gulp koşucusunu kullanıyor. Bu görevde, gulp görevini "derleme" olarak ayarladım ve ek komut satırı parametreleri olarak --version =% build.number%

Ancak sürüm numarasının doğru olarak ayarlandığı görünmüyor yapı içinde bu

söylediğini log rağmen

Ben yapı sonra css ve js dosyaları gözden olduğu gibi düzgün versiyonunu ayar değil

, bunlar kullanmıyorsunuz "2.3.4 sürümünü ayarlama" doğru versiyonu.

Ancak bir sonraki görev,% build.number% ve nuget'in dosya adı olarak ayarlanan bir nuget dosyası oluşturmak için% build.number% doğru bir şekilde kullandığınızı biliyorum. üretilen dosya sürüm numarasını doğru şekilde içerir.

Sadece package.json içerisindeki versiyonun doğru bir şekilde kurulum sürecinin bir parçası olarak ayarlanamıyorum.

Ben doğru inşa sayısında Başka ne geçmek yapabilirim ve doğru olarak package.json sürümünü belirlemek için

comments aldıktan sonra, ben hata ile olduğunu keşfettiler

Güncelleme

paketini okuduğum yol: gulpfile.Sonra sayfanın üst tarafındaki başlığa eklemek için paket yudum-header kullanıyordum

var pkg = require('./package.json'); 
var banner = ['/**', 
    ' * <%= pkg.name %>', 
    ' * @version v<%= pkg.version %>', 
    ' */', 
    ''].join('\n'); 

: js aşağıdaki vardı. Bu sorunun cevabı baktığımızda

$.header(banner, { pkg: pkg }) 

: Javascript: get package.json data in gulpfile.js o dosya önbelleğe alınır package.json yük gerektirir ve kullandığınızda herhangi süreç package.json dosyasını değiştirmesi durumunda, yutkunmak güncelleme olmayacak bahsedildi Önbelleğe almış olduğu sürüm. Benim süreçlerde Yani

var fs = require('fs'); 
function getPackageJson() { 
    return JSON.parse(fs.readFileSync('./package.json')); 
} 

başlığı iliştirerek nerede, ben getPackageJson aramaya değişti:

Yani talep üzerine package.json dosyasını okumak için rutin güncellenmiştir. Şimdi süreci ekip halinde çalıştırdığımda, doğru sürüm

doğru ayarlanıyor.

var pkg = getPackageJson(); 
return gulp 
    .src(config.src.sass) 
    .pipe($.sass()) 
    .pipe($.header(banner, { pkg: pkg })) 
+0

'config.dest.root daha sonraki işlemler tarafından kullanılan konum değildir, bu nedenle package.config toplanan paket farklıdır; package.config öğesinin değiştirilmesi – harishr

+0

@entre my config.dest.root 'olarak tanımlanır./'ve package.json kullanan sonraki süreçler, gereksinim olarak tanımlanan bir pkg değişkenine atıfta bulunur (' ./ package.json '); Bu yüzden hepsinin aynı dosyaya başvurduğundan oldukça eminim. –

+0

@entre Yorumunuz beni düşünmüş ve şu soruyu buldum: http://stackoverflow.com/questions/22645779/javascript-get-package-json-data-in-gulpfile-js Paket dosyasını okuyorum İşlemin bir ihtiyaç olarak başlaması ve dosya içeriğinin önbelleğe alınması. Daha sonra, package.json içindeki değişkeni çarptığımda, önbellekteki dosya güncellenmiyor. Bu dosyanın içeriğini nasıl okuduğumu değiştirmem gerekiyor gibi görünüyor –

cevap

0

hemen altında

güncelleme

package.json
gulp.task('bump-version', function() { 
    return gulp.src(['./bower.json', './package.json']) 
    .pipe(plugins.if(!bumpOpt.type, plugins.prompt.prompt(bumpPrompt, function(res){ bumpOpt.type = res.bump; }))) 
    .pipe(plugins.bump(bumpOpt).on('error', plugins.util.log)) 
    .pipe(gulp.dest('./')); 
}); 

çalışıp çalışmadığını kontrol etmek ve daha sonra

function getPackageJsonVersion() { 
//We parse the json file instead of using require because require caches multiple calls so the version number won't be updated 
return JSON.parse(fs.readFileSync('./package.json', 'utf8')).version; 
}; 

kullanarak versiyonunu okuyup

gulp.task('create-new-tag', function (cb) { 
    var version = getPackageJsonVersion(); 
    plugins.git.tag(version, 'Created Tag for version: ' + version, function (error) { 
    if (error) { return cb(error); } 
    plugins.git.push('origin', 'master', {args: '--tags'}, cb); 
    }); 
}); 
0 gibi bu işlevi kullanın
İlgili konular