2016-12-25 414 views
3

我正在从Apollo测试GraphQL Server以及如何将nodemon集成到它。下面是示例文件结构:使用nodemon命令运行npm脚本

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会做的是使用通天ES6代码转换成build/server.js并执行它。这将正确启动服务器。

我想要的是观察server.jssrc/中的更改,并在发生更改时重新启动服务器。如果发生任何更改,我希望执行npm run start命令。根据我的需要,什么是正确的'nodemon'命令?它更好,如果我可以使用npm run dev like命令来开始使用nodemon进行开发。

回答

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!`) }) 
}) 

以上将继续关注编译/ server.js'呢。无论什么时候改变,nodemon都会自动重启服务器。

而对于gulpfile.js

gulp.task('dev', ['server', 'watch']) 

最后一块包括需要一饮而尽命令要执行的任务。

$ 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') 
相关问题