私はこれを2時間かけて裂いてきました。それぞれのプロジェクトのバージョンの資産に引いた後、ビルドプロセスでそれらを使用し、gitコマンドが終了するまでgulp-gitを一時停止するには?
var gulp = require('gulp');
var concat = require("gulp-concat");
var rename = require("gulp-rename");
var run_sequence = require("run-sequence");
var del = require("del");
var git = require("gulp-git");
var wait = require("gulp-wait");
var dest = 'build/';
var vendor_javascript_files = [
'node_modules/jquery/dist/jquery.js',
];
var app_javascript_files = [
'app.js',
];
// Remove the existing build directory
gulp.task("prepare",function() {
return del([dest, "branding_assets/"]);
});
gulp.task("get-branding", function() {
return git.clone('http://gitserver.local/prod-branding.git', {args: './branding_assets'}, function (err) {
if (err) {
throw err;
}
});
});
gulp.task("get-dev-branding", function() {
return git.clone('http://gitserver.local/dev-branding.git', {args: './branding_assets'}, function (err) {
if (err) {
throw err;
}
});
});
gulp.task('vendor-js', function() {
return gulp.src(vendor_javascript_files)
.pipe(concat("vendor.js"))
.pipe(gulp.dest(dest+"app"));
});
gulp.task('app-files', function() {
return gulp.src(['app.js'])
.pipe(gulp.dest(dest+"app"));
});
gulp.task('branding', function() {
return gulp.src('branding_assets/*')
.pipe(wait(2000))
.pipe(gulp.dest(dest+"assets"))
});
gulp.task('app-js', function() {
return gulp.src("index.html.dist")
.pipe(rename("index.html"))
.pipe(gulp.dest(dest));
});
gulp.task('build', function() {
run_sequence(
"prepare",
"get-branding",
[
"app-files",
"app-js",
"vendor-js",
// imagine there are many more tasks here - "app-css", "vendor-css", "app-sass", etc. Upwards of 10 tasks.
"branding",
],
);
});
gulp.task('build-dev', function() {
run_sequence(
"prepare",
"get-dev-branding",
[
"app-files",
"app-js",
"vendor-js",
// imagine there are many more tasks here - "app-css", "vendor-css", "app-sass", etc. Upwards of 10 tasks.
"branding",
],
);
});
gulp.task('default', ['build']);
私は何をしようとしていることで、ゴクゴク作業中:
は、ここに私の簡略化gulpfileです。
問題は、クローンが完了する前にgulp.clone
タスクがすぐに戻ることです。したがって、起動時にファイルがまだ存在しないため、branding
タスクは何も行いません。
ブランディングタスクを一時停止するために.wait(2000)
を使用しましたが、実際には動作しません(数十ミリ秒でブランディングタスクが完了します)。2)一時停止が発生しても機能しませんでしたsrc
関数が実行された時点でソースファイルが選択されているため、正しく表示されますか?
多分gulp
は私の仕事のための適切なタスクランナーではありませんが、私は選択がありません - 生産環境はgulpを使用します。
get-branding
タスクを個々のビルドタスク(「アプリファイル」など)に依存するように使用すると、代わりにget-dev-branding
を実行することがあります。私は、タスクがクローンが終了する直前に常に戻ってきて、動作しないので、依存関係としてget-branding
で個別のアプリケーションビルドタスクを別々のタスクに移動する "ネスト"戦略を実行しようとしました。
"このファイルが存在するまで待つ"というものは見つかりません。ソースファイルを列挙する前に、グルップタスクを確実に一時停止するためのものは何も見つかりません。私は同じページを何度も何度も何度も打つGoogleのサークルに入っています。
ああ私の神、それは働いた...ありがとう!あなたはちょうどより多くの別れた髪から頭皮を救った。 :-) – fdmillion