在我,gulpfile.js
我有一个任务,调用另外两个任务.运行先前的任务时,应触发通知.
var notify = require('gulp-notify');
gulp.task('build', ['build:js', 'build:css'], function() {
console.log('hello', arguments);
gulp.src('gulpfile.js').pipe( notify({ title: 'Production Build', message: 'Done' }) );
});
Run Code Online (Sandbox Code Playgroud)
有没有办法在不gulp.src('gulpfile.js').pipe(
先打电话的情况下触发通知?虽然不是真正的问题,但这种方法对我来说是不必要的.我的问题完全有可能是由于对gulp的理解不充分.所以请随意指出任何误解.
我正在进入许多Gulp流,并遇到了一个混乱的主题.我想在所有任务实际完成时发布通知.我看到任务已执行但默认情况下是异步运行的.
如果我想在每个步骤完成后显示通知,并且在所有步骤完成后结束,该怎么办?
在gulp中获得更多控制任务时间的最佳方法是什么?
目前,我正在使用gulp-notify来显示通知.
我真的没有任何错误,但是想更好地了解这里的操作顺序以及如何触发我自己的所有任务完成时的通知.这是一个例子.
var gulp = require('gulp'),
gp_concat = require('gulp-concat'),
gp_notify = require('gulp-notify');
gulp.task('task1', function() {
return gulp.src(['file1.js','file2.js'])
.pipe(gp_concat('file1_2.js')
.pipe(gp_notify({ message: "file1_2 created." }
})
gulp.task('task2', function() {
return gulp.src(['file3.js','file4.js'])
.pipe(gp_concat('file3_4.js')
.pipe(gp_notify({ message: "file3_4 created." }
})
gulp.task('mainTask', ['task1','task2'], function() {
gulp.src('file*_*.js')
.pipe(gp_notify({ message: "All tasks complete." }))
});
Run Code Online (Sandbox Code Playgroud)
在控制台,通知,现在时机正确,但在执行结束时,右侧前完成"MainTask的" XX毫秒后的最终"所有任务完成消息触发关闭[N-1]次,其中n是计数子任务.
导致此最终通知被多次触发的原因是什么,以及如何抑制?
这应该很容易......我正在尝试创建del完成的通知.
Del = https://www.npmjs.com/package/del
Notify = https://www.npmjs.com/package/gulp-notify
我有:
gulp.task('clean', function() {
return del(['distFolder']);
});
Run Code Online (Sandbox Code Playgroud)
这会在重建之前清除distFolder中的所有内容.
我想要做的是如下:
gulp.task('clean', function() {
return del(['distFolder']).pipe(notify('Clean task finished'));
});
Run Code Online (Sandbox Code Playgroud)
以上返回错误 - "TypeError:del(...).pipe不是函数"
我使用browserify这样我就可以用我的前端代码NPM模块,并吞掉做我的构建任务.这很好用:
var browserify = require('gulp-browserify');
gulp.task('js', ['clean'], function() {
gulp
.src('./public/js/src/index.js')
.pipe(browserify({
insertGlobals : true,
debug : ! gulp.env.production
}))
.pipe(gulp.dest('./public/js/dist'))
});
Run Code Online (Sandbox Code Playgroud)
但是,如果我的JS中存在语法错误,我希望通过OS X通知收到错误通知.我已经看到了这个类似的问题和修改我的代码添加.on('error'...)
后.browserify()
:
// Browserify/bundle the JS.
gulp
.src('./public/js/src/index.js')
.pipe(browserify({
insertGlobals : true,
debug : ! gulp.env.production
}).on('error', function(err){
notify.onError({
message: "Error: <%= error.message %>",
title: "Failed running browserify"
}
this.emit('end');
})
.pipe(gulp.dest('./public/js/dist'))
Run Code Online (Sandbox Code Playgroud)
但是,当我的JS被破坏时,这不会通知.在里面添加console.log()on('error',...)
也不会记录.我怀疑是因为这个问题不涉及使用gulp管道.
如何在浏览浏览器时获得错误通知?
我刚刚开始使用gulp,需要我想要使用的所有插件并编写第一个用于sass编译的任务.它似乎工作,但有两个问题,首先当我在命令行上输入gulp时,似乎需要3或4秒才能启动,这似乎比grunt慢(我开始使用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
Run Code Online (Sandbox Code Playgroud)
这是我的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 = …
Run Code Online (Sandbox Code Playgroud) 那么,整天都在研究新的FE工作流程,主要的想法是通过观察者运行一些任务,我们将拥有IDE和一个窗口,浏览器每次发生变化时都会刷新(scss,js,html,等等).
所以,如果一切顺利,我们什么都看不到:浏览器将重新加载,我们将继续工作.
但是,我们希望使用gulp notify来处理错误,所以如果我们出错了,会弹出通知程序,此时,您可以检查控制台并查看错误.
失败时我们的sass任务示例:
对于我们的样式任务,一切正常,但我无法为JS文件完成此任务.
主要是,我不能按照我的意愿制作gulp-jshint.
这将是这样的:你保存你的js文件,如果失败,弹出窗口出现,当你看到这个,你去控制台,你看到jshint-stylish的输出.
有人能帮助我吗?
这是我的(非工作)解决方案:
gulp.task( 'js-hint', function() {
return gulp.src( config.source )
.pipe( plumber() )
.pipe( jshint( config.jsHintRules ) )
.pipe( jshint.reporter( 'jshint-stylish' ) )
.on('error', notify.onError( { message: 'JS hint fail' } ) );
});
Run Code Online (Sandbox Code Playgroud)
显然,我对概念有疑问,那么有人可以请我指出正确的方向吗?
请注意,我只是想一直发出相同的消息"JS提示失败"
然后,控制台(感谢jshint-stylish)将为我们提供更多信息.
此外,这将是一个观察者.在JS提示传递之后,将执行更多的任务,比如borwserify,所以重要的是如果它停止,"等待"直到我完成修复然后继续.
谢谢 !
PS,Im使用:
gulp 3.8.10 gulp-jshint 1.8.6 gulp-notify 2.0.1
通过OSX 10.9.4