0

gulp を使用した最初の日 - gulp-inject を使用して、アプリ フォルダーに存在する html に変換されたスクリプト ファイルと jade ファイルを、Web サーバーを使用して html を提供する「一時」フォルダーに配置しようとしています。静的な html を使用しているだけなら問題なく動作しますが、jade に切り替えると、最初に gulp を実行した後にしか機能しません (最初の gulp-jade 'jade()' をまだ処理しているので推測しています)。挿入するhtmlがないので、このコードがあります(チュートリアルの途中であるため、これはgulpを使用する適切な方法ではないかもしれませんが、チュートリアルは私が好む翡翠を使用していません)

var gulp = require('gulp');
var server = require('gulp-webserver');
var jade = require('gulp-jade');
var inject = require('gulp-inject');

var paths = {
  app: 'app/**/*.js',
  bower: 'bower_components',
  jade: 'app/*.jade',
  temp: 'temp',
  tempVendor: 'temp/vendor',
  index: 'temp/index.html'
}

gulp.task('default', ['scripts']);


gulp.task('scripts', function(){
  gulp.src(paths.jade)
    .pipe(jade())
    .pipe(gulp.dest(paths.temp));

var appFiles = gulp.src(paths.app).pipe(gulp.dest(paths.temp));
var vendor = gulp.src(mainBower()).pipe(gulp.dest(paths.tempVendor));

gulp.src(paths.index)
  .pipe(inject(appFiles,{relative:true}))
  .pipe(inject(vendor, {relative:true, name: 'vendorinject'}))
  .pipe(gulp.dest(paths.temp));
});
4

1 に答える 1

0

gulp タスクを 2 つのタスクに分割し、gulp 依存関係を使用して、1 つが実行され、他のタスクが開始する前に終了するようにする必要があります。

var gulp = require('gulp');
var server = require('gulp-webserver');
var jade = require('gulp-jade');
var inject = require('gulp-inject');

var paths = {
  app: 'app/**/*.js',
  bower: 'bower_components',
  jade: 'app/*.jade',
  temp: 'temp',
  tempVendor: 'temp/vendor',
  index: 'temp/index.html'
}

gulp.task('default', ['scripts']);

gulp.task('jade', function() {
    return gulp.src(paths.jade)
    .pipe(jade())
    .pipe(gulp.dest(paths.temp));
});

gulp.task('scripts', ['jade'], function(){ 
    var appFiles = gulp.src(paths.app).pipe(gulp.dest(paths.temp));
    var vendor = gulp.src(mainBower()).pipe(gulp.dest(paths.tempVendor));

    gulp.src(paths.index)
      .pipe(inject(scripts,{relative:true}))
      .pipe(inject(vendor, {relative:true, name: 'vendorinject'}))
      .pipe(gulp.dest(paths.temp));
});

このようにして、スクリプト タスクは jade タスクが終了した後にのみ実行され、挿入されます。

于 2015-05-05T17:30:48.030 に答える