2

ユーザーが入力する必要がないように、Gulp ビルド プロセスをリファクタリングしていますV=1.2.88

major gulp buildむしろ、ユーザーに「 、minor gulp buildまたは」と入力してもらいたいと思いますpatch gulp build。もちろん、これはバージョン番号を繰り返します。

これが機能するには、作成された最後のビルドのフォルダー名を読み取るために gulp が必要です。

ここに画像の説明を入力

バージョン番号を生成する現在の Gulp タスク:

var version = '';
var env = process.env.V; // V={version number} ie: V=1.0.1 gulp build

gulp.task('version', function() {
    return printOut(env);
});

function errorlog(err) {
    console.log(err.message);
    this.emit('end');
}

function printOut(ver) {
    gutil.log(gutil.colors.blue.bold('Last build: '+paths.last));
    version = ver;
    if (version === undefined) {
        version = '0.0.0';
    }
    gutil.log(gutil.colors.blue.bold('##################################################'));
    gutil.log(gutil.colors.blue.bold('         Building Dashboard version '+version));
    gutil.log(gutil.colors.green.bold('~~           All change is detectable           ~~'));
    gutil.log(gutil.colors.blue.bold('##################################################'));
}

Gulpでこれを達成する方法を知っている人はいますか?

これは私がこれまでに見つけたものです

そのため、プラグインを使用して、Gulp-folders最初に実行される次のタスクを作成しました。

    gulp.task('build:getLastBuild', folders(paths.lastBuild, function(folder) {
    console.log( 'Last version number is: '+folder);
    return lastVersion = folder;
    //This will loop over all folders inside pathToFolder main, secondary
    //Return stream so gulp-folders can concatenate all of them
    //so you still can use safely use gulp multitasking
    // return gutil.colors.blue.bold('Last build folder: '+folder);
    // return gulp.src(path.join(paths.lastBuild, folder))
    //     .pipe(console.log(' Getting last version number: '+folder))
    //     .pipe(lastVersion = folder);
}));

ビルドを実行したら、以下を確認してください。console.log でフォルダーの名前を取得していますが、プロセスでエラーが発生します:(

TypeError: e.pipe は関数ではありません

ここに画像の説明を入力

4

2 に答える 2

1

とった!少し大まかなことは認めますが、node readdirをグーグルで検索したところ、 __dirnameが見つかりました console.log(__dirname);

それで、以下の変数とタスクを作成しました。

var fs   = require('fs'),
    path = require('path');

gulp.task('build:getLastBuild', function() {
    return fs.readdirSync(paths.lastBuild).filter(function(file) {
        console.log(' build:getLastBuild: '+file);
        if (file != 'static') {
            lastVersion = file;
        }
        else {
            console.log('  lastVersion: '+lastVersion);
        }
    });
}); 

だから今これを手に入れよう!これで、ユーザーがビルド プロセスを実行するときにバージョン番号を上げるために操作できる文字列ができました。

ここに画像の説明を入力

于 2016-03-25T19:21:31.810 に答える