我有一个简单的gulpfile,它从json文件加载一个javascript对象(根据环境获取路径),编译我的scss文件,将它们移动到我的公共目录,还将任何javascript文件移动到公共目录。 / p>
所以我的资产在/ app / Http / assets / js和scss中 编译并移动到/ public / assets / js和css
这是我的gulpfile.js:
var gulp = require('gulp');
var gutil = require('gulp-util');
var notify = require('gulp-notify');
var sass = require('gulp-sass');
var autoprefix = require('gulp-autoprefixer');
// Load the application config
var config = require('./env.config.json');
// Where do you store your Sass files?
var sassDir = 'app/Http/Assets/scss';
// Which directory should Sass compile to?
var targetCSSDir = config.assets_path + '/css';
// Where do you store your CoffeeScript files?
var jsDir = 'app/Http/Assets/js';
// Which directory should CoffeeScript compile to?
var targetJSDir = config.assets_path + '/js';
/** Tasks **/
// Compile Sass, autoprefix CSS3, and save to target CSS directory
gulp.task('css', function () {
return gulp.src(sassDir + '/**/*.scss')
.pipe(sass())
.pipe(autoprefix('last 10 version'))
.pipe(gulp.dest(targetCSSDir))
.pipe(notify('CSS minified'))
});
// Move Javascript
gulp.task('js', function () {
return gulp.src(jsDir + '/**/*.js')
.pipe(gulp.dest(targetJSDir))
});
// Keep an eye on Sass and Javascript files for changes...
gulp.task('watch', function () {
gulp.watch(sassDir + '/**/*.scss', ['css']);
gulp.watch(jsDir + '/**/*.js', ['js']);
});
// What tasks does running gulp trigger?
gulp.task('default', ['css', 'js', 'watch']);
这对我的javascript工作正常。此外,当我第一次运行“gulp”时,它会编译我的所有scss文件并相应地移动它们。但是,监视任务不适用于我的scss文件。它适用于javascript文件。真正奇怪的是(对我而言)当我将scss源更改为特定文件时,手表会起作用。所以,
gulp.task('css', function () {
return gulp.src(sassDir + '/**/app.scss')
.pipe(sass())
// and the rest is the same
会观察并编译我的app.scss文件的任何更改,但显然不会对任何其他scss文件。
我尽我所能重新安排和谷歌搜索。我不明白为什么它不能用于观看scss。
编辑:奇怪的是,似乎是通知破坏了css观察者。当我这样评论时:
gulp.task('css', function () {
return gulp.src(sassDir + '/**/*.scss')
.pipe(sass())
.pipe(autoprefix('last 10 version'))
.pipe(gulp.dest(targetCSSDir))
//.pipe(notify('CSS minified'))
});
一切都按预期工作。
提前致谢。