Gulp 没有正确观看
Gulp not watching correctly
我是 gulp 的新手,我想我已经正确设置了它,但它似乎没有做它应该做的事情。
我的 gulpfile.js 有
gulp.task('compass', function() {
return gulp.src('sites/default/themes/lsl_theme/sass/**/*.scss')
.pipe(compass({
config_file: 'sites/default/themes/lsl_theme/config.rb',
css: 'css',
sass: 'scss'
}))
.pipe(gulp.dest('./sites/default/themes/lsl_theme/css'))
.pipe(notify({
message: 'Compass task complete.'
}))
.pipe(livereload());
});
和
gulp.task('scripts', function() {
return gulp.src([
'sites/default/themes/lsl_theme/js/**/*.js'
])
.pipe(plumber())
.pipe(concat('lsl.js'))
.pipe(gulp.dest('sites/default/themes/lsl_theme/js'))
// .pipe(stripDebug())
.pipe(uglify('lsl.js'))
.pipe(rename('lsl.min.js'))
.pipe(gulp.dest('sites/default/themes/lsl_theme/js'))
.pipe(sourcemaps.write())
.pipe(notify({
message: 'Scripts task complete.'
}))
.pipe(filesize())
.pipe(livereload());
});
和手表功能
gulp.task('watch', function() {
livereload.listen();
gulp.watch('./sites/default/themes/lsl_theme/js/**/*.js', ['scripts']);
gulp.watch('./sites/default/themes/lsl_theme/sass/**/*.scss', ['compass']);
});
当我运行gulp时,结果是
[16:14:36] Starting 'compass'...
[16:14:36] Starting 'scripts'...
[16:14:36] Starting 'watch'...
[16:14:37] Finished 'watch' after 89 ms
并且没有注册任何更改。
文件结构,我的gulpfile.js在根目录,sass,css,js都在root/sites/default/themes/lsl_theme,sass 包含 'components' 充满部分的文件夹。
我的假设是你在 windows?如果我错了,请纠正我。
存在 gulp-notify
会破坏 gulp.watch
函数的问题。尝试注释掉
// .pipe(notify({
// message: 'Scripts task complete.'
// }))
看看问题是否仍然存在。
如果这确实解决了问题,this thread 的解决方案可能会有所帮助。
You can use the gulp-if
plugin in combination with
the os
node module
to determine if you are on Windows, then exclude gulp-notify
, like
so:
var _if = require('gulp-if');
//...
// From
var isWindows = /^win/.test(require('os').platform());
//...
// use like so:
.pipe(_if(!isWindows, notify('Coffeescript compile successful')))
事实证明,我的问题的很大一部分只是作为 Gulp 的菜鸟而已。当我从我的 gulp 手表中删除 'scripts'
时,它开始工作了。
然后我建立连接,它正在监视与放置新的串联和缩小的 js 文件的目录相同的目录,因此它正在放置新文件,检查该文件,并一遍又一遍地循环导致内存问题以及不允许 'compass'
到 运行.
在创建一个 'dest' 文件夹来保存新的 js 之后,一切都开始正常工作了。
我是 gulp 的新手,我想我已经正确设置了它,但它似乎没有做它应该做的事情。
我的 gulpfile.js 有
gulp.task('compass', function() {
return gulp.src('sites/default/themes/lsl_theme/sass/**/*.scss')
.pipe(compass({
config_file: 'sites/default/themes/lsl_theme/config.rb',
css: 'css',
sass: 'scss'
}))
.pipe(gulp.dest('./sites/default/themes/lsl_theme/css'))
.pipe(notify({
message: 'Compass task complete.'
}))
.pipe(livereload());
});
和
gulp.task('scripts', function() {
return gulp.src([
'sites/default/themes/lsl_theme/js/**/*.js'
])
.pipe(plumber())
.pipe(concat('lsl.js'))
.pipe(gulp.dest('sites/default/themes/lsl_theme/js'))
// .pipe(stripDebug())
.pipe(uglify('lsl.js'))
.pipe(rename('lsl.min.js'))
.pipe(gulp.dest('sites/default/themes/lsl_theme/js'))
.pipe(sourcemaps.write())
.pipe(notify({
message: 'Scripts task complete.'
}))
.pipe(filesize())
.pipe(livereload());
});
和手表功能
gulp.task('watch', function() {
livereload.listen();
gulp.watch('./sites/default/themes/lsl_theme/js/**/*.js', ['scripts']);
gulp.watch('./sites/default/themes/lsl_theme/sass/**/*.scss', ['compass']);
});
当我运行gulp时,结果是
[16:14:36] Starting 'compass'...
[16:14:36] Starting 'scripts'...
[16:14:36] Starting 'watch'...
[16:14:37] Finished 'watch' after 89 ms
并且没有注册任何更改。
文件结构,我的gulpfile.js在根目录,sass,css,js都在root/sites/default/themes/lsl_theme,sass 包含 'components' 充满部分的文件夹。
我的假设是你在 windows?如果我错了,请纠正我。
存在 gulp-notify
会破坏 gulp.watch
函数的问题。尝试注释掉
// .pipe(notify({
// message: 'Scripts task complete.'
// }))
看看问题是否仍然存在。
如果这确实解决了问题,this thread 的解决方案可能会有所帮助。
You can use the
gulp-if
plugin in combination with theos
node module to determine if you are on Windows, then excludegulp-notify
, like so:var _if = require('gulp-if'); //... // From var isWindows = /^win/.test(require('os').platform()); //... // use like so: .pipe(_if(!isWindows, notify('Coffeescript compile successful')))
事实证明,我的问题的很大一部分只是作为 Gulp 的菜鸟而已。当我从我的 gulp 手表中删除 'scripts'
时,它开始工作了。
然后我建立连接,它正在监视与放置新的串联和缩小的 js 文件的目录相同的目录,因此它正在放置新文件,检查该文件,并一遍又一遍地循环导致内存问题以及不允许 'compass'
到 运行.
在创建一个 'dest' 文件夹来保存新的 js 之后,一切都开始正常工作了。