我想选择几个文件,并从中生成连接文件。并且还希望连接我更改的文件。
这是我的资产树:
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);
}
}
当我在控制台/终端上输入 gulp 时,它会完美地运行我的 css 和 concat-css 任务,但是,当< strong> watch 任务由文件更改触发,两者都运行,但只有 css 有效。我的 .min 文件已更新,但我的连接文件未更新。
任何想法接近这个?感谢。
答案 0 :(得分:0)
抱歉,这是一个逻辑问题。
在我的concatType函数中,当我设置目标文件的路径时,但是当它在watch上运行时,路径第二次被设置,如下所示:
./资产/ CSS /./资产/ 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)