所以我设置了一个正在观看在Windows上运行文件的glup watch任务。一切正常但它只会记录一次到控制台。手表似乎只运行一次。如果我调用cb()然后它在循环中运行。传入的文件数组是单个文件而不是文件夹。
var gulp = require('gulp'),
watch = require('gulp-watch'),
minCss = require('gulp-minify-css'),
autoprefixer = require('gulp-autoprefixer'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
pathConfig = require('./pathconfig.js'),
config = require(pathConfig.config),
fs = require('fs'),
gutil = require('gulp-util'),
buildCssImport = function (files) {
var file = '';
config.cssFilesWPath.forEach(function(value) {
if (value.charAt(0) != '!') {
file = file + '\n' + '@import url(\'/' + value.replace(pathConfig.path, '') + '\');';
}
});
fs.writeFileSync(pathConfig.path + config.cssDest + '/' + 'app.css', file);
},
buildJsImport = function () {
fs.writeFileSync(pathConfig.path + config.jsDest + '/' + 'app.js.json', JSON.stringify(config.jsFiles));
};
gulp.task('build-css', function(cb) {
buildCssImport(config.cssFilesWPath);
gulp.src(config.cssFilesWPath)
.pipe(concat('app.min.css'))
.pipe(autoprefixer())
.pipe(minCss())
.pipe(gulp.dest(pathConfig.path + config.cssDest))
.on("finish", function() {
gutil.log('built css');
});
});
gulp.task('build-js', function(cb) {
buildJsImport();
gulp.src(config.jsFilesWPath)
.pipe(concat('app.js'))
.pipe(gulp.dest(pathConfig.path + config.jsDest))
.pipe(uglify())
.pipe(concat('app.min.js'))
.pipe(gulp.dest(pathConfig.path + config.jsDest))
.on("finish", function() {
gutil.log('built js');
});
});
gulp.task('watch', function(cb) {
var cssFilesWPath = [],
jsFilesWPath = [];
config.cssFiles.forEach(function (cssFile) {
cssFilesWPath.push(pathConfig.path + cssFile);
});
config.jsFiles.forEach(function (jsFile) {
jsFilesWPath.push(pathConfig.path + jsFile);
});
config.cssFilesWPath = cssFilesWPath;
config.jsFilesWPath = jsFilesWPath;
gulp.watch(cssFilesWPath, ['build-css'])
gulp.watch(jsFilesWPath, ['build-js'])
});
答案 0 :(得分:0)
我遇到了这个问题,因为它位于已安装的Windows网络位置。 Gulp Version 4假设要修复此问题,但该错误仍然存在。 https://github.com/gulpjs/gulp/issues/1116