我刚刚开始使用 Gulp 来改善我的工作流程。我目前有一个名为styles
的任务,用于编译.less
个文件和一个名为watch
的任务,以监视任何.less
文件中的更改,然后运行{ {1}}任务。我的styles
包含以下代码:
gulpfile.js
问题是,当我运行var gulp = require( 'gulp' ),
less = require( 'gulp-less' ),
autoprefixer = require( 'gulp-autoprefixer' ),
minifycss = require( 'gulp-minify-css' ),
jshint = require( 'gulp-jshint' ),
uglify = require( 'gulp-uglify' ),
imagemin = require( 'gulp-imagemin' ),
rename = require( 'gulp-rename' ),
clean = require( 'gulp-clean' ),
concat = require( 'gulp-concat' ),
notify = require( 'gulp-notify' ),
cache = require( 'gulp-cache' ),
header = require( 'gulp-header' ),
footer = require( 'gulp-footer' );
// styles task
gulp.task( 'styles', function() {
return gulp.src( 'src/styles/main.less' )
.pipe( less({ paths: ['src/styles/'] }) )
.pipe( autoprefixer( 'last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4' ) )
.pipe( gulp.dest( 'dist/assets/css' ) )
.pipe( rename( 'main.min.css' ) )
.pipe( minifycss() )
.pipe( gulp.dest( 'dist/assets/css' ) )
.pipe( notify({ message: 'Styles task complete' }) );
} )
(...)
// watch task
gulp.task('watch', function() {
// Watch .less files
gulp.watch('src/styles/**/*.less', function(event) {
console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
gulp.run('styles');
});
});
时,它会在我第一次更改gulp watch
文件时启动任务并运行styles
任务。在第一次之后,我只记录了消息(.less
)。我做错了吗?
感谢任何提示或帮助!
根据要求提供一些信息:我正在使用 Gulp 3.4.0 运行 Node.js 0.10.24 。以下是提示输出的屏幕截图:
答案 0 :(得分:9)
在@SteveLacy建议打破我的任务部分并检查其中是否有任何一个导致麻烦后,我得到了非常愚蠢错误导致错误:gulp-notify
仅适用于Mac和Linux,我的操作系统是Windows。来自插件说明:
将消息发送到Mac通知中心或Linux通知(使用 notify-send)使用node-notifier模块。也可以指定自定义 通知者(例如低吼通知)。
对我感到羞耻。
我遵循了一个关于Gulp入门的非常好的教程,gulp-notify
是其上使用的插件之一。我的mystake没有注意插件的细节。
我从gulp-notify
删除gulpfile.js
后,一切正常,我得到了所有正确的日志,我的gulp watch
任务就像魅力一样!
简而言之: AWAYS检查插件与您的操作系统的兼容性。
感谢所有花时间试图帮助我的人!
答案 1 :(得分:3)
我遇到了同样的问题,而且我的新手问题很严重。如果有人像我一样对我来说是一个可怜的新手,请确保您的触发观看功能以done()
结尾:
gulp.task("watch", function() {
gulp.watch("lib/*.js, "foobar");
});
gulp.task("foobar", function(done) {
// This task completion was omitted.
done();
});
答案 2 :(得分:0)
如果我没记错gulp.run在Gulp 3.5版中已被弃用。尝试将gulp.run();
替换为gulp.start();
,看看是否有效。