Gulp 不监视任何 SCSS 更改。我必须使用 gulp-ruby-sass 吗?
Gulp doesnt watch for any SCSS changes. Do I have to use gulp-ruby-sass?
我已设置 gulp 文件以监视更改。我正在使用 Redux 架构在 ReactJS 中开发应用程序。我注意到 gulp 不会监视 SCSS 文件中的任何更改。
/*eslint-disable */
var path = require('path');
var runSequence = require('run-sequence');
var install = require('gulp-install');
var spawn = require('child_process').spawn;
var $ = require('gulp-load-plugins')({
pattern: [
'gulp',
'gulp-*',
'gulp.*',
'merge-stream',
'del',
'browserify',
'watchify',
'vinyl-source-stream',
'vinyl-transform',
'vinyl-buffer',
'glob',
'lodash',
'less-plugin-*',
'mochify'
],
replaceString: /^gulp(-|\.)/,
rename: {
'merge-stream': 'mergeStream',
'del': 'delete'
}
});
var env = require('env-manager')({
argv: process.argv,
dir: path.join(__dirname, 'environments'),
base: 'base.js',
pattern: '{env}.js',
defaults: {
'env': 'development'
}
});
$.util.log($.util.colors.magenta('Running in ' + env.name + ' environment'));
require('gulp-tasks-registrator')({
gulp: $.gulp,
dir: path.join(__dirname, 'tasks'),
args: [$, env],
verbose: true,
panic: true,
group: true
});
$.gulp.task('clean', ['clean:server', 'clean:client'], function task(done) {
done();
});
$.gulp.task('install', function () {
return $.gulp.src([ './package.json']).pipe(install());
});
$.gulp.task('build', function task(done) {
return runSequence(
//'lint',
// 'install',
'clean',
'build:server',
'build:client:images',
'build:client:fonts',
[
'build:client:scripts',
'build:client:styles'
],
'build:client:html',
done
);
});
$.gulp.task('run-wrapper', function(done) {
var server = spawn('node', ['serviceWrapper.js'], {stdio: ['inherit']});
server.stderr.on('data', function(data){
process.stderr.write(data);
});
server.stdout.on('data', function(data) {
process.stdout.write(data);
});
server.unref();
});
$.gulp.task('default', function task(done) {
runSequence('build', ['serve', 'run-wrapper','watch'], done);
});
$.gulp.task('run', function task(done) {
runSequence('serve', done);
});
/*eslint-enable */
在您提供的内容中,没有 watch 任务或 Sass 任务(尽管您确实调用了名为 watch
的任务,因此如果 运行 gulp
(默认任务)没有给你一个错误,你必须在某处定义名为 watch
的任务)。
gulp有两个Sass插件,一个使用Ruby Sass(gulp-ruby-sass) and one using LibSass (gulp-sass). You can read about the difference here,简而言之gulp-sass 可能会更快。找出答案的最佳方法是尝试一个然后另一个并比较 gulp 的控制台日志(其中显示 "finished task after x ms")。
这是一个 SASS 观看示例,根据 gulp-sass 自述文件中的示例稍作编辑(假设 gulp-sass在您的 package.json 中,在这种情况下,它将由您的 gulp-load-plugins 调用导入)。 $.
已添加以匹配您提供的代码
$.gulp.task('sass', function () {
return gulp.src('yourstylespath/*.scss') // grab the .scss files
.pipe(sass().on('error', sass.logError)) // compile them into css, loggin any errors
.pipe(gulp.dest('yourcompiledcsspath')); // save them in yourcompiledcsspath
});
$.gulp.task('sass:watch', function () {
gulp.watch('yourstylespath/*.scss', ['sass']); // "run the task 'sass' when there's a change to any .scss file in yourstylespath
});
旁注:
考虑到您使用的所有包都不遵循 "gulp-packagename" 命名方案,像这样单独写出来可能更有效(当然取决于您使用了多少包)
var delete = require('del'),
mergeStream = require('merge-stream'),
...;
看起来你的 run
任务可能就是这个? $.gulp.task('run', ['serve']);
我已设置 gulp 文件以监视更改。我正在使用 Redux 架构在 ReactJS 中开发应用程序。我注意到 gulp 不会监视 SCSS 文件中的任何更改。
/*eslint-disable */
var path = require('path');
var runSequence = require('run-sequence');
var install = require('gulp-install');
var spawn = require('child_process').spawn;
var $ = require('gulp-load-plugins')({
pattern: [
'gulp',
'gulp-*',
'gulp.*',
'merge-stream',
'del',
'browserify',
'watchify',
'vinyl-source-stream',
'vinyl-transform',
'vinyl-buffer',
'glob',
'lodash',
'less-plugin-*',
'mochify'
],
replaceString: /^gulp(-|\.)/,
rename: {
'merge-stream': 'mergeStream',
'del': 'delete'
}
});
var env = require('env-manager')({
argv: process.argv,
dir: path.join(__dirname, 'environments'),
base: 'base.js',
pattern: '{env}.js',
defaults: {
'env': 'development'
}
});
$.util.log($.util.colors.magenta('Running in ' + env.name + ' environment'));
require('gulp-tasks-registrator')({
gulp: $.gulp,
dir: path.join(__dirname, 'tasks'),
args: [$, env],
verbose: true,
panic: true,
group: true
});
$.gulp.task('clean', ['clean:server', 'clean:client'], function task(done) {
done();
});
$.gulp.task('install', function () {
return $.gulp.src([ './package.json']).pipe(install());
});
$.gulp.task('build', function task(done) {
return runSequence(
//'lint',
// 'install',
'clean',
'build:server',
'build:client:images',
'build:client:fonts',
[
'build:client:scripts',
'build:client:styles'
],
'build:client:html',
done
);
});
$.gulp.task('run-wrapper', function(done) {
var server = spawn('node', ['serviceWrapper.js'], {stdio: ['inherit']});
server.stderr.on('data', function(data){
process.stderr.write(data);
});
server.stdout.on('data', function(data) {
process.stdout.write(data);
});
server.unref();
});
$.gulp.task('default', function task(done) {
runSequence('build', ['serve', 'run-wrapper','watch'], done);
});
$.gulp.task('run', function task(done) {
runSequence('serve', done);
});
/*eslint-enable */
在您提供的内容中,没有 watch 任务或 Sass 任务(尽管您确实调用了名为 watch
的任务,因此如果 运行 gulp
(默认任务)没有给你一个错误,你必须在某处定义名为 watch
的任务)。
gulp有两个Sass插件,一个使用Ruby Sass(gulp-ruby-sass) and one using LibSass (gulp-sass). You can read about the difference here,简而言之gulp-sass 可能会更快。找出答案的最佳方法是尝试一个然后另一个并比较 gulp 的控制台日志(其中显示 "finished task after x ms")。
这是一个 SASS 观看示例,根据 gulp-sass 自述文件中的示例稍作编辑(假设 gulp-sass在您的 package.json 中,在这种情况下,它将由您的 gulp-load-plugins 调用导入)。 $.
已添加以匹配您提供的代码
$.gulp.task('sass', function () {
return gulp.src('yourstylespath/*.scss') // grab the .scss files
.pipe(sass().on('error', sass.logError)) // compile them into css, loggin any errors
.pipe(gulp.dest('yourcompiledcsspath')); // save them in yourcompiledcsspath
});
$.gulp.task('sass:watch', function () {
gulp.watch('yourstylespath/*.scss', ['sass']); // "run the task 'sass' when there's a change to any .scss file in yourstylespath
});
旁注:
考虑到您使用的所有包都不遵循 "gulp-packagename" 命名方案,像这样单独写出来可能更有效(当然取决于您使用了多少包)
var delete = require('del'), mergeStream = require('merge-stream'), ...;
看起来你的
run
任务可能就是这个?$.gulp.task('run', ['serve']);