我有一个包含以下内容的gulp.js文件:
gulp.task('default', ['watch']);
启动监视任务
gulp.task('watch', function(){
gulp.watch(productionScripts, ['autoConcat']);
});
然后,对于bioScripts中文件的任何已保存更改,watch任务将连接文件。
我想要做的是,在我的package.json中,当我输入npm start时,我想把这个表调整一下(这已经启动了我的节点服务器)。
的package.json
"start": "node server.js",
更新 --------
Ben(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'...
在服务器重新启动更改和连接文件更改之间存在循环。
答案 0 :(得分:19)
您可以从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"
}
答案 1 :(得分:9)
您可以使用包start
在package.json
concurrently
中连接多个任务:
{
"start": "concurrent \"node server.js\" \"gulp\" "
}
从您的终端运行npm start
。这将执行start
中的所有语句。
答案 2 :(得分:6)
我的一个项目中有类似的东西。请注意,它会介绍两个流程 - 您可以使用ps
获取ID并使用kill <pid>
停止。
"scripts": {
"start": "{ gulp watch & node server.js & }"
}
也要禁用日志记录:
"scripts": {
"start": "{ gulp watch --silent & node server.js & }"
}
答案 3 :(得分:6)
要考虑的一个最佳做法是使用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"
}
}