我正在测试Apollo中的GraphQL Server以及将nodemon集成到它的内容。这是示例文件结构:
build/
src/
server.js
这里我的npm脚本看起来像这样
"scripts": {
"start": "babel --presets es2015,stage-2 server.js -d build/ && node build/server.js",
"dev": "nodemon server.js" // Sample code here
}
npm run start
将使用babel将ES6代码转换为build/server.js
并执行它。这将正确启动服务器。
我想要的是观察server.js
或src/
中的更改,并在发生更改时重新启动服务器。如果发生任何变化,我想执行npm run start
命令。什么是正确的' nodemon'命令我的需要。如果我可以使用npm run dev
like命令来使用nodemon开始开发,那就更好了。
答案 0 :(得分:0)
您可以使用gulpjs观看特定文件夹中的任何更改,然后命令它执行某些操作。 对于您的示例,您还希望将代码转换为es6。所以它还需要gulp-bable和。如果需要,您可以添加babel-preset-stage-2。所以你可以简单地将下面的代码放在gulpfile.js
中gulp.task('build-es2015', () => {
return gulp.src('server.js')
.pipe(babel({
presets: ['es2015']
}))
.pipe(gulp.dest('build'));
});
gulp.task('watch', () => {
gulp.watch(['./app/*.js'], ['build-es2015'])
})
基本上,“监视”任务将继续观看特定文件。当它们被保存时,它将执行任务'build-es2015'以转换为es6。
然后是nodemon,它需要gulp-nodemon然后你就可以在gulpfile.js上做了
gulp.task('server', () => {
nodemon({
script: 'build/server.js',
ext: 'js',
ignore: [
'server.js',
'node_modules/**',
'test/**',
'build/**'
]
})
.on('restart', () => { console.log(`Server restarted!`) })
})
以上将继续关注build / server.js'。无论何时更改,nodemon都会自动重启服务器。
gulpfile.js的最后一篇
gulp.task('dev', ['server', 'watch'])
包括gulp命令需要执行的任务。
$ gulp dev
或使用npm命令
"scripts": {
"start": "gulp dev"
}
所以你也可以npm run start
。
并且不要忘记要求gulpfile.js中的所有包
const gulp = require('gulp')
const babel = require('gulp-babel')
const nodemon = require('gulp-nodemon')