gulp-注入 gulp-jade

gulp-inject with gulp-jade

这是我与 gulp 的第一天 - 我正在尝试使用 gulp-inject 将应用程序文件夹中存在的一些脚本文件和 jade 文件转换为 html 到'temp' 文件夹正在使用网络服务器为 html 提供服务。如果我只使用 static 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));
});

您应该将 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 任务完成后注入。