【发布时间】:2014-01-27 18:55:23
【问题描述】:
我刚刚开始使用 Gulp 来改进我的工作流程。我目前有一个名为styles 的任务,它编译.less 文件,还有一个名为watch 的任务,用于监视任何.less 文件中的变化,然后运行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 时,它会启动任务并在我第一次更改.less 文件时运行styles 任务。第一次之后,我只记录了消息(File X was changed, running tasks...)。我做错了吗?
感谢任何提示或帮助!
编辑
根据要求提供一些信息:我正在运行 Node.js 0.10.24 和 Gulp 3.4.0。下面是提示输出的截图:
【问题讨论】:
-
请添加您的 gulp 版本以及终端输出的副本。
-
嗨,@SteveLacy!我刚刚用您提出的信息更新了问题!
-
感谢您添加它们。似乎您的“样式”在记录时可能存在问题,但没有调用 gulp.run 。它应该调用
[gulp] Finished 'styles' in 347 μs。示例:i.imgur.com/yyOCpss.png 我会向 gulp 的创建者(我和他一起工作)询问更多信息。 -
这是我不知道的信息,@SteveLacy!当我手动运行任务时,它只记录
[gulp] running 'task'...,并且确实运行了任务,因为文件已编译、连接等。但我从未收到显示[gulp] Finished 'styles' in X μs的消息。我期待着 gulp 创建者的反馈。谢谢! -
我刚和他谈过,gulp.watch 是由凝视构建的:github.com/shama/gaze,
gulp.watch的任何问题通常与凝视有关。建议:拆开所有零件,直到您拥有可以工作的手表。然后添加其他任务,直到您拥有完整的文件。它可能只是一个没有被样式调用的函数
标签: javascript node.js gulp