coo*_*ool 65 javascript workflow node.js gulp gulp-watch
我正在开发一个Gulpfile.一旦它改变就可以重新启动吗?我正在用CoffeeScript开发它.可以Gulp观看Gulpfile.coffee以便在保存更改时重新启动?
Cai*_*nha 59
您可以创建一个task这种意愿gulp.watch的gulpfile.js,只是spawn另一个一饮而尽child_process.
var gulp = require('gulp'),
argv = require('yargs').argv, // for args parsing
spawn = require('child_process').spawn;
gulp.task('log', function() {
console.log('CSSs has been changed');
});
gulp.task('watching-task', function() {
gulp.watch('*.css', ['log']);
});
gulp.task('auto-reload', function() {
var p;
gulp.watch('gulpfile.js', spawnChildren);
spawnChildren();
function spawnChildren(e) {
// kill previous spawned process
if(p) { p.kill(); }
// `spawn` a child `gulp` process linked to the parent `stdio`
p = spawn('gulp', [argv.task], {stdio: 'inherit'});
}
});
Run Code Online (Sandbox Code Playgroud)
我用yargs它来接受我们需要重启后运行的"主要任务".所以为了运行它,你会打电话给:
gulp auto-reload --task watching-task
Run Code Online (Sandbox Code Playgroud)
要测试,请调用touch gulpfile.js或touch a.css查看日志.
小智 39
我创建条美洲是gulp.js CLI包装以重新启动gulpfile变化一饮而尽.
你可以简单地用gulper替换gulp.
$ gulper <task-name>
Run Code Online (Sandbox Code Playgroud)
Sim*_*amp 11
我为此目的使用了一个小的shell脚本.这也适用于Windows.
按Ctrl+C停止脚本.
// gulpfile.js
gulp.task('watch', function() {
gulp.watch('gulpfile.js', process.exit);
});
Run Code Online (Sandbox Code Playgroud)
Bash shell脚本:
# watch.sh
while true; do
gulp watch;
done;
Run Code Online (Sandbox Code Playgroud)
Windows版本: watch.bat
@echo off
:label
cmd /c gulp watch
goto label
Run Code Online (Sandbox Code Playgroud)
我EADDRINUSE在Caio Cunha的答案中遇到了一堆错误.我的gulpfile打开一个带有connect和LiveReload的本地网络服务器.看起来新的gulp进程在旧进程被杀死之前与旧的进程短暂共存,因此端口仍然在即将到来的进程中使用.
这是一个解决共存问题的类似解决方案(主要基于此):
var gulp = require('gulp');
var spawn = require('child_process').spawn;
gulp.task('gulp-reload', function() {
spawn('gulp', ['watch'], {stdio: 'inherit'});
process.exit();
});
gulp.task('watch', function() {
gulp.watch('gulpfile.js', ['gulp-reload']);
});
Run Code Online (Sandbox Code Playgroud)
这样做效果很好,但有一个相当严重的副作用:最后一个吞咽过程与终端断开连接.因此,当gulp watch退出时,孤立的gulp进程仍在运行.我无法解决这个问题,可以手动杀死额外的gulp进程,或者只是将语法错误保存到gulpfile.js.
| 归档时间: |
|
| 查看次数: |
18947 次 |
| 最近记录: |