Gulp watch() 方法未监视文件更改
Gulp watch() method is not watching file changes
我正在尝试使用 Gulp 自动执行某些任务以进行 Wordpress 主题开发。除了 gulp.watch
不会自动监视我的文件的更改外,我已经设法让一切正常工作。
Gulp版本:
CLI version 2.0.1
Local version 3.9.1
操作系统:
- Windows 10
Package.json:
{
"name": "theme-development-boilerplate",
"version": "1.0.0",
"description": "A boilerplate for Theme Development automated with Gulp. Includes SASS, Bootstrap, jQuery, Normalize, Mordernizer, among other stacks",
"main": "gulpfile.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Manuel Abascal",
"license": "MIT",
"devDependencies": {
"gulp": "^3.9.1",
"gulp-concat": "^2.6.1",
"gulp-error-notifier": "^1.1.0",
"gulp-imagemin": "^5.0.3",
"gulp-livereload": "^4.0.1",
"gulp-sass": "^4.0.2",
"gulp-uglify": "^3.0.1"
},
"dependencies": {
"browser-sync": "^2.26.3",
"gulp-watch": "^5.0.1"
}
}
Gulp文件:
var gulp = require('gulp');
var watch = require('gulp-watch');
var imagemin = require('gulp-imagemin');
var uglify = require('gulp-uglify');
var errorNotifier = require('gulp-error-notifier');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
// Logs Message
gulp.task('message', function(){
return console.log('Gulp is running...');
});
// Optimize Images
gulp.task('imageMin', function (){
gulp.src('src/images/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/images'))
});
// Minify JS
gulp.task('minify', function(){
gulp.src('src/js/*.js')
.pipe(uglify())
.pipe(gulp.dest('dist/js'));
});
// Compile Sass into CSS
gulp.task('sass', function(){
gulp.src('src/sass/*.scss')
.pipe(errorNotifier.handleError(sass({outputStyle: 'compressed'})).on('error', sass.logError))
.pipe(gulp.dest('dist/css'));
});
// Scripts Concatenation
gulp.task('scripts', function(){
gulp.src('src/js/*.js')
.pipe(concat('main.js'))
.pipe(uglify())
.pipe(gulp.dest('dist/js'));
});
gulp.task('default', ['message', 'imageMin', 'sass', 'scripts']);
gulp.task('watch', function(){
gulp.watch('src/js/*.js', ['scripts']);
gulp.watch('src/images/*', ['imageMin']);
gulp.watch('src/sass/*.scss', ['sass']);
});
当我使用命令 gulp
时,它就像一个魅力,但是当我 运行 gulp watch
我在控制台中得到这个输出:
Starting 'watch'...
Finished 'watch' after 12 ms
但它不监视任何东西。关于如何调试这个的任何想法?我读到 Windows 操作系统可能是问题或版本。我现在不知道。
提前致谢!
windows没有问题,我每天都在windows上使用gulp。
关于版本,我也不认为这是罪魁祸首,但无论如何您都应该更新到最新版本(即 4.0.0)。
尝试在 watch
中使用函数而不是 task
,像这样:
(这是官方示例here中所做的,也是我所做的并且有效)
// Scripts Concatenation
function transpile_scripts(cb) {
gulp.src('src/js/*.js')
.pipe(concat('main.js'))
.pipe(uglify())
.pipe(gulp.dest('dist/js'))
.on('end', cb);
}
gulp.watch('src/js/*.js', transpile_scripts)
另请注意,我向我的函数传递了一个回调,并在管道完成后 运行 它。此回调由 gulp 隐式提供,它可以跟踪任务何时完成。在某些情况下,不传递和执行这会导致警告甚至错误。反正以防万一也无妨。
我正在尝试使用 Gulp 自动执行某些任务以进行 Wordpress 主题开发。除了 gulp.watch
不会自动监视我的文件的更改外,我已经设法让一切正常工作。
Gulp版本:
CLI version 2.0.1
Local version 3.9.1
操作系统:
- Windows 10
Package.json:
{
"name": "theme-development-boilerplate",
"version": "1.0.0",
"description": "A boilerplate for Theme Development automated with Gulp. Includes SASS, Bootstrap, jQuery, Normalize, Mordernizer, among other stacks",
"main": "gulpfile.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Manuel Abascal",
"license": "MIT",
"devDependencies": {
"gulp": "^3.9.1",
"gulp-concat": "^2.6.1",
"gulp-error-notifier": "^1.1.0",
"gulp-imagemin": "^5.0.3",
"gulp-livereload": "^4.0.1",
"gulp-sass": "^4.0.2",
"gulp-uglify": "^3.0.1"
},
"dependencies": {
"browser-sync": "^2.26.3",
"gulp-watch": "^5.0.1"
}
}
Gulp文件:
var gulp = require('gulp');
var watch = require('gulp-watch');
var imagemin = require('gulp-imagemin');
var uglify = require('gulp-uglify');
var errorNotifier = require('gulp-error-notifier');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
// Logs Message
gulp.task('message', function(){
return console.log('Gulp is running...');
});
// Optimize Images
gulp.task('imageMin', function (){
gulp.src('src/images/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/images'))
});
// Minify JS
gulp.task('minify', function(){
gulp.src('src/js/*.js')
.pipe(uglify())
.pipe(gulp.dest('dist/js'));
});
// Compile Sass into CSS
gulp.task('sass', function(){
gulp.src('src/sass/*.scss')
.pipe(errorNotifier.handleError(sass({outputStyle: 'compressed'})).on('error', sass.logError))
.pipe(gulp.dest('dist/css'));
});
// Scripts Concatenation
gulp.task('scripts', function(){
gulp.src('src/js/*.js')
.pipe(concat('main.js'))
.pipe(uglify())
.pipe(gulp.dest('dist/js'));
});
gulp.task('default', ['message', 'imageMin', 'sass', 'scripts']);
gulp.task('watch', function(){
gulp.watch('src/js/*.js', ['scripts']);
gulp.watch('src/images/*', ['imageMin']);
gulp.watch('src/sass/*.scss', ['sass']);
});
当我使用命令 gulp
时,它就像一个魅力,但是当我 运行 gulp watch
我在控制台中得到这个输出:
Starting 'watch'...
Finished 'watch' after 12 ms
但它不监视任何东西。关于如何调试这个的任何想法?我读到 Windows 操作系统可能是问题或版本。我现在不知道。
提前致谢!
windows没有问题,我每天都在windows上使用gulp。
关于版本,我也不认为这是罪魁祸首,但无论如何您都应该更新到最新版本(即 4.0.0)。
尝试在 watch
中使用函数而不是 task
,像这样:
(这是官方示例here中所做的,也是我所做的并且有效)
// Scripts Concatenation
function transpile_scripts(cb) {
gulp.src('src/js/*.js')
.pipe(concat('main.js'))
.pipe(uglify())
.pipe(gulp.dest('dist/js'))
.on('end', cb);
}
gulp.watch('src/js/*.js', transpile_scripts)
另请注意,我向我的函数传递了一个回调,并在管道完成后 运行 它。此回调由 gulp 隐式提供,它可以跟踪任务何时完成。在某些情况下,不传递和执行这会导致警告甚至错误。反正以防万一也无妨。