2015-08-21 66 views
0

我想选择几个文件,并从中生成连接文件。还想连接我更改的文件。
这是我的资产树:gulp - 如何连接多个文件与手表?

assets 
    - css 
    - js 
    - sass 
    - _midia_queries.scss 
    - media-combine.scss 
    - query.scss 

所以,我要生成maximum.css./assets/css/media-combine.min.css)和medium.css./assets/css/media-combine.min.css,./assets/css/query.min.css)。

两者.min文件已生成我的css任务。请看下图:

gulp.task('css', function (done) { 
    gulp.src(paths.sass.src) 
     .pipe(plugins.changed('dist')) 
     .pipe(plugins.sass()) 
     .pipe(plugins.combineMediaQueries()) 
     .pipe(plugins.autoprefixer()) 
     .pipe(isProduction ? plugins.minifyCss() : gutil.noop()) 
     .pipe(isProduction ? plugins.rename({ suffix: ".min" }) : gutil.noop()) 
     .pipe(gulp.dest(paths.css.dest)) 
     .on("end", done); 
}); 

而且我CONCAT,CSS任务是用我的坏的多代文件的方法:

gulp.task('concat-css', ['css'], function (done) { 
    concatType("css", done); 
}); 

function concatType (type, done) { 
    if (isProduction) { 
     var task = gulp; 
     filesToConcat[type].forEach(function (value) { 
      value.files.forEach(function (file, fileIndex) { 
       value.files[fileIndex] = paths[type].dest + file; 
      }); 

      gutil.log('File', gutil.colors.green(value.compiled), 'is beign concatenated'); 
      task = gulp.src(value.files) 
       .pipe(plugins.concat(value.compiled)) 
       .pipe(gulp.dest(paths[type].dest)); 
      gutil.log('Ready to go!'); 
     }); 
     task.on("end", done); 
    } 
} 

更新

当我我的控制台上输入一饮而尽 /终端,它运行完美我的cssconcat-css任务,但是,当手表任务是由一个文件改变触发的,两者都运行,但是,只有css工作。我的.min文件已更新,但是,我的连接文件不是。 Gulp file running

任何想法来解决这个问题?谢谢。

+1

难道这是由于这一口默认情况下同时运行任务的事实呢?你的css和css-concat任务可能会同时运行。 [这SO帖子可能会帮助](http://stackoverflow.com/questions/22824546/how-to-run-gulp-tasks-synchronously-one-after-the-other) – jonowzz

+0

它帮助。我做了一些改变。所以,现在唯一的问题是当我的* .scss *文件被更新时,它表示它连接我的文件,但它不会发生。 – klauskpm

+1

只尝试引用默认和监视任务中的'concat-css'脚本,否则您将运行css部分两次。即。 'gulp.task(“default”,['concat-css','watch']);'和'gulp.watch(paths.sass.src,[“concat-css”])' – jonowzz

回答

0

对不起,这是一个逻辑问题。

在我concatType功能,当我建立了有针对性的文件的路径,但是,当它被值班运行路径设置了第二次,就像这样:

./assets/ css /./resources/css/query.min.css

它永远不会工作。所以,我已经改变了这一点:

value.files.forEach(function (file, fileIndex) { 
    value.files[fileIndex] = paths[type].dest + file; 
}); 

task = gulp.src(value.files) 

对于这一点:

files = []; 
value.files.forEach(function (file) { 
    files.push(paths[type].dest + file); 
}); 

task = gulp.src(files)