Gulp 文件 运行 任务并通知两次
Gulp file running tasks and notifying twice
我刚开始第一次使用gulp,需要所有我想使用的插件并编写了sass编译的第一个任务。它似乎有效,但有两个问题,首先,当我在命令行上键入 gulp 时,它似乎需要 3 或 4 秒才能启动,这似乎比 g运行t 慢(我开始使用 gulp 因为我知道它更快)。这正常吗?
但主要问题是我有一个调用 sass 任务的默认任务。命令行输出似乎表明两者都是 运行,这意味着 sass 被编译了两次。它还输出我的单个 gulp-notify 通知两次,这似乎不正确。
这是命令行输出...
λ gulp default
[00:53:40] Using gulpfile ~\Desktop\jon\gulpfile.js
[00:53:40] Starting 'sass'...
[00:53:40] Finished 'sass' after 10 ms
[00:53:40] Starting 'default'...
[00:53:40] Finished 'default' after 7.93 μs
[00:53:41] gulp-notify: [Gulp notification] Css created
[00:53:41] gulp-notify: [Gulp notification] Css created
这是我的 gulp 完整文件...
var gulp = require('gulp'),
gutil = require('gulp-util'),
compass = require('gulp-compass'),
rename = require('gulp-rename'),
uglify = require('gulp-uglify'),
watch = require('gulp-watch'),
concat = require('gulp-concat'),
notify = require('gulp-notify'),
jshint = require('gulp-jshint'),
autoprefixer = require('gulp-autoprefixer'),
minifyCSS = require('gulp-minify-css'),
traceur = require('gulp-traceur'),
svgmin = require('gulp-svgmin'),
imagemin = require('gulp-imagemin'),
ngAnnotate = require('gulp-ng-annotate'),
expect = require('gulp-expect-file'),
sourcemaps = require('gulp-sourcemaps');
var paths = {
src: "src",
css: "stylesheets",
img: "images",
js: "js"
}
// Compile Our Sass
gulp.task('sass', function() {
gulp.src(paths.src + '/sass/*.scss')
.pipe(sourcemaps.init())
.pipe(compass({
sass: 'src/sass',
environment: 'development',
outputStyle: 'expanded',
debugInfo: false,
noLineComments: true
}))
.pipe(autoprefixer('> 5%', 'last 2 version', 'ie 9'))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(paths.css))
.pipe(notify({ message: 'Css created' }));
});
// Dev Task
gulp.task('default', ['sass']);
有人知道这是怎么回事吗?我是否误解了 Gulp 任务的工作原理?
使用 gulp 的 onLast
选项-如果您只希望每个流有一个通知:
//...
.pipe(notify({message: 'Css created', onLast: true}));
我刚开始第一次使用gulp,需要所有我想使用的插件并编写了sass编译的第一个任务。它似乎有效,但有两个问题,首先,当我在命令行上键入 gulp 时,它似乎需要 3 或 4 秒才能启动,这似乎比 g运行t 慢(我开始使用 gulp 因为我知道它更快)。这正常吗?
但主要问题是我有一个调用 sass 任务的默认任务。命令行输出似乎表明两者都是 运行,这意味着 sass 被编译了两次。它还输出我的单个 gulp-notify 通知两次,这似乎不正确。
这是命令行输出...
λ gulp default
[00:53:40] Using gulpfile ~\Desktop\jon\gulpfile.js
[00:53:40] Starting 'sass'...
[00:53:40] Finished 'sass' after 10 ms
[00:53:40] Starting 'default'...
[00:53:40] Finished 'default' after 7.93 μs
[00:53:41] gulp-notify: [Gulp notification] Css created
[00:53:41] gulp-notify: [Gulp notification] Css created
这是我的 gulp 完整文件...
var gulp = require('gulp'),
gutil = require('gulp-util'),
compass = require('gulp-compass'),
rename = require('gulp-rename'),
uglify = require('gulp-uglify'),
watch = require('gulp-watch'),
concat = require('gulp-concat'),
notify = require('gulp-notify'),
jshint = require('gulp-jshint'),
autoprefixer = require('gulp-autoprefixer'),
minifyCSS = require('gulp-minify-css'),
traceur = require('gulp-traceur'),
svgmin = require('gulp-svgmin'),
imagemin = require('gulp-imagemin'),
ngAnnotate = require('gulp-ng-annotate'),
expect = require('gulp-expect-file'),
sourcemaps = require('gulp-sourcemaps');
var paths = {
src: "src",
css: "stylesheets",
img: "images",
js: "js"
}
// Compile Our Sass
gulp.task('sass', function() {
gulp.src(paths.src + '/sass/*.scss')
.pipe(sourcemaps.init())
.pipe(compass({
sass: 'src/sass',
environment: 'development',
outputStyle: 'expanded',
debugInfo: false,
noLineComments: true
}))
.pipe(autoprefixer('> 5%', 'last 2 version', 'ie 9'))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(paths.css))
.pipe(notify({ message: 'Css created' }));
});
// Dev Task
gulp.task('default', ['sass']);
有人知道这是怎么回事吗?我是否误解了 Gulp 任务的工作原理?
使用 gulp 的 onLast
选项-如果您只希望每个流有一个通知:
//...
.pipe(notify({message: 'Css created', onLast: true}));