我正在测试Apollo的GraphQL Server以及将nodemon集成到它的内容.这是示例文件结构: build/src/server.js 这里我的npm脚本看起来像这样 "scripts": { "start": "babel --presets es2015,stage-2 server.js -d build/ no
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的开发,那就更好了.
您可以使用 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.
并且不要忘记要求gulpfile.js中的所有包
const gulp = require('gulp') const babel = require('gulp-babel') const nodemon = require('gulp-nodemon')