【问题标题】:gulp stream does not generate dest filesgulp 流不生成 dest 文件
【发布时间】:2016-03-31 13:19:08
【问题描述】:

在跟踪 gulp 流时有一个错误,但我找不到在哪里。

var processors = [autoprefixer({ browsers: ['last 2 version']}),
                  cssnano(),];

var myjob = gulp.src(['app/css/normalize.css',
                      'app/css/org.scss'])
        .pipe(watch('app/css/org.scss', {verbose: true}))
        .pipe(gulpif('*.scss', sass()))
        .pipe(concat('org.css'))
        .pipe(postcss(processors))
        .pipe(flatten())
        .pipe(gulp.dest('dist'));

问题dist/org.css 没有重新生成

这里一定有我遗漏的东西。

【问题讨论】:

    标签: javascript gulp gulp-watch gulp-sass gulp-concat


    【解决方案1】:

    问题在于gulp-concat 不会推送连接的org.css 文件,除非它从上游接收到end 事件。由于gulp-watch 从不发出end 事件,gulp-concat 只是无限期挂起。

    解决方案是简单地将gulp-concat 替换为gulp-continuous-concat

    var continuousConcat = require('gulp-continuous-concat');
    
    var processors = [autoprefixer({ browsers: ['last 2 version']}),
                      cssnano(),];
    
    gulp.task('default', function() {
      return gulp.src(['app/css/normalize.css',
                       'app/css/org.scss'])
        .pipe(watch('app/css/org.scss', {verbose: true}))
        .pipe(gulpif('*.scss', sass()))
        .pipe(continuousConcat('org.css'))
        .pipe(postcss(processors))
        .pipe(flatten())
        .pipe(gulp.dest('dist'));
    });
    

    【讨论】:

      【解决方案2】:

      最佳做法是使用 glob 根“./”作为路径前缀。即“./app/css/normalize.css”等等。

      尝试使用gulp-debug 查看管道中有多少文件(如果有)。您可以在每个步骤之间添加一个调试管道以查看发生了什么。

      【讨论】:

      • 感谢您的全球提示。我会解决的。我确实使用了gulp-debug,它输出文件名但没有生成文件。 @Sven Schcenung 的回答解决了我的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多