1

一連の gulp タスクの最後にシェル コマンドを実行しようとしています。プロジェクトのファイルに書き込まれた変更が、シェル コマンドがファイルの一部を取得して別の場所にコピーする前に書き込まれていないことに気付きました。gulp-shell を使用してシェル コマンドを実行しています。

ファイルをコピーする前に「ls」コマンドを実行すると、ファイルをコピーしようとする前にすべてのファイルが書き込まれるのに十分な遅延があることがわかりました。これを行うためのよりクリーンな方法はありますか?

グラントファイルは次のとおりです。

var gulp = require('gulp');
var shell = require('gulp-shell');

var jshint = require('gulp-jshint');
var changed = require('gulp-changed');
var imagemin = require('gulp-imagemin');
var minifyHTML = require('gulp-minify-html');
var concat = require('gulp-concat');
//Uncomment out this line before going to production
//var stripDebug = require('gulp-strip-debug');
var uglify = require('gulp-uglify');
var autoprefix = require('gulp-autoprefixer');
var minifyCSS = require('gulp-minify-css');

// JS hint task
gulp.task('jshint', function() {
  gulp.src('./code/js/*.js')
  .pipe(jshint())
  .pipe(jshint.reporter('default'));
});

// minify new images
gulp.task('imagemin', function() {
  var imgSrc = './code/img/**/*', imgDst = './www/img';
  gulp.src(imgSrc)
  .pipe(changed(imgDst))
  .pipe(imagemin())
  .pipe(gulp.dest(imgDst));
});

// minify new or changed HTML pages
gulp.task('htmlpage', function() {
  var htmlSrc = './code/*.html', htmlDst = './www';
  gulp.src(htmlSrc)
  .pipe(changed(htmlDst))
  .pipe(minifyHTML())
  .pipe(gulp.dest(htmlDst));
});

// JS concat, strip debugging and minify
gulp.task('scripts', function() {
  gulp.src(['./code/js/index.js', './code/js/*.js'])
  .pipe(concat('script.js'))
  //Uncomment out this line before going to production
  //.pipe(stripDebug())
  .pipe(uglify())
  .pipe(gulp.dest('./www/'));
});

// CSS concat, auto-prefix and minify
gulp.task('styles', function() {
  gulp.src(['./code/css/*.css'])
  .pipe(concat('styles.css'))
  .pipe(autoprefix('last 2 versions'))
  .pipe(minifyCSS())
  .pipe(gulp.dest('./www/'));
});

gulp.task('prepare', shell.task(['ls', 'cordova prepare']));

// default gulp task
gulp.task('default', ['imagemin', 'htmlpage', 'scripts', 'styles', 'prepare'], function() {
});

これは準備タスクです。実行すると、他のファイルの実行はまだ完了していません。

準備する前に終了する必要がある依存タスクを設定できるようです。

gulp.task('prepare', [styles], shell.task(['ls', 'cordova prepare']));

私はそれをテストしていませんが、これはうまくいくと思いますか?

4

1 に答える 1

0

gulp-run-sequence を試してくださいGulp タスクは非同期であり、これにより同期的に起動できます。あなたの問題を解決する必要があります。

于 2014-11-06T11:36:14.757 に答える