【发布时间】:2017-02-06 01:49:17
【问题描述】:
背景
我有这个 gulp watch 任务来处理 sass 编译:
import gulp from 'gulp';
import sass from 'gulp-sass';
import concat from 'gulp-concat';
gulp.task("compile-scss", () => {
return gulp.src("assets/scss/**/*.scss")
.pipe(sass({ outputStyle: 'compressed' })
.on("error", sass.logError))
.pipe(concat("style.css"))
.pipe(gulp.dest("dist/css"));
});
gulp.task("watch-scss", ['compile-scss'], () => {
gulp.watch("assets/scss/**/*.scss", ["compile-scss"]);
});
然后我运行gulp watch-scss,该过程正确编译我的文件并开始观察新的变化。
问题
当我想停止观看时,我在终端中按 Ctrl+C,一切看起来都正常。
然后我在.scss 文件中进行了更改,并希望它不会被 gulp 任务处理(应该已经停止)。无论如何,此更改由 watch 任务处理,因为它似乎仍在运行。
查看终端代码,您可以看到我从哪里开始 gulp watch-scss,我在哪里按 Ctrl+C 以及任务在哪里继续执行更改。
环境详情
操作系统: OS X 10.11 (El Capitan)
gulp 版本: 3.9.1
节点版本: 6.2。 2
babel-core 版本: 6.11.4
历史
问题可能与 Node 本身有关。朝着这个方向前进,我尝试了几种解决方案,例如从 gulp 中终止进程,如下所示:
process.on('SIGINT', function() {
process.exit();
});
它没有帮助。 阅读有关该主题的大量信息,但没有任何帮助。以下是两个相关的问题,但也无济于事:
如果需要,我可以提供更多详细信息。
【问题讨论】:
-
暂停进程时会发生什么?你能
Ctrl+Z然后通过使用ps T查找进程ID 来杀死停止的进程吗? -
按两次
Ctrl-c会退出吗? -
另外,用 node 的 LTS 版本 (4.4.0) 试试这个
-
@MarcoS 做
Ctrl-C两次没有帮助。 @EliranMalka 我尝试做Ctrl+Z,然后成功终止了该进程。问题是这不是一个长期的解决方案。我想让Ctrl+C或Ctrl+Z工作。 有趣的事情: 当我执行Ctrl+Z时,我收到此错误throw er; // Unhandled 'error' event ^ Error: read EIO at exports._errnoException (util.js:1007:11) at TTY.onread (net.js:563:26)
标签: javascript node.js reactjs gulp webpack