当我inputnpm start时如何开始Gulp监视任务

我有一个gulp.js文件,其中包括:

gulp.task('default', ['watch']); 

启动监视任务

 gulp.task('watch', function(){ gulp.watch(productionScripts, ['autoConcat']); }); 

然后,在任何已保存的对productionScripts文件所做的更改中,监视任务将对这些文件进行连接。

我想要做的,是在我的package.json中,当我键入npm start(这已经启动我的节点服务器)时,我想暂停此表。

的package.json

  "start": "node server.js", 

更新 ——–

本(b3nj4m.com),我试过你所说的。 手表和服务器启动。 然而,一切都运行两次(可能是由于编辑器,而不是相关),但是当我用gulp启动它时,确实会丢失我的服务器日志。

 [15:31:18] Starting 'autoConcat'... [15:31:18] Finished 'autoConcat' after 147 ms [15:31:19] Starting 'autoConcat'... [15:31:19] Finished 'autoConcat' after 138 ms [15:31:20] Starting 'autoConcat'... [15:31:20] Finished 'autoConcat' after 127 ms [15:31:23] Starting 'autoConcat'... 

这就好像服务器在更改时重新启动和连接文件更改之间存在一个循环。

你可以从你的gulpfile运行你的服务器:

 var child = require('child_process'); var fs = require('fs'); gulp.task('default', ['server', 'watch']); gulp.task('server', function() { var server = child.spawn('node', ['server.js']); var log = fs.createWriteStream('server.log', {flags: 'a'}); server.stdout.pipe(log); server.stderr.pipe(log); }); gulp.task('watch', function(){ gulp.watch(productionScripts, ['autoConcat']); }); 

然后改变你的npm start定义如下所示:

 "scripts": { "start": "gulp" } 

你可以在你的package.json使用这个包concurrently地连接多个任务,如下所示:

 { "start": "concurrent \"node server.js\" \"gulp\" " } 

并从您的terminal运行npm start 。 这将在start执行所有的语句。

有关参考: https : //www.npmjs.com/package/concurrently

在我的一个项目中,我有这样的事情。 请注意,它将同时处理这两个进程 – 您可以使用ps来获取ID并使用kill <pid>停止它。

 "scripts": { "start": "{ gulp watch & node server.js & }" } 

要禁用日志logging,也要:

 "scripts": { "start": "{ gulp watch --silent & node server.js & }" } 

最好的做法是使用nodemon和gulp -nodemon ,然后像接受的答案一样,用npm start从npm触发gulp脚本。 它的速度非常快,您可以在文件更改时重新启动节点服务器。 例如:

gulpfile.js

 var gulp = require('gulp'); var nodemon = require('gulp-nodemon'); ... var nodemonOptions = { script: 'bin/www.js', ext: 'js', env: { 'NODE_ENV': 'development' }, verbose: false, ignore: [], watch: ['bin/*', 'routes/*', 'app.js'] }; gulp.task('start', function () { nodemon(nodemonOptions) .on('restart', function () { console.log('restarted!') }); }); 

的package.json

 { ... "scripts": { "start": "gulp start" }, "devDependencies": { "gulp": "^3.9.0", "gulp-nodemon": "^2.0.4" } }