使用nodemon命令运行npm脚本

Cha*_*a94 5 node.js npm nodemon

我正在测试Apollo的GraphQL Server以及将nodemon集成到其中的内容。这是示例文件结构:

build/
src/
server.js
Run Code Online (Sandbox Code Playgroud)

这里我的npm脚本看起来像这样

"scripts": {
   "start": "babel --presets es2015,stage-2 server.js -d build/  &&  node build/server.js",
   "dev": "nodemon server.js" // Sample code here
}
Run Code Online (Sandbox Code Playgroud)

什么npm run start会做的是ES6代码转换成build/server.js使用巴贝尔并执行它。这样可以正确启动服务器。

我要监视的是内部server.js或内部的更改,src/如果发生更改,请重新启动服务器。npm run start如果发生任何更改,在这里我要执行命令。什么是我需要的正确“ nodemon”命令。如果可以使用npm run devlike命令开始使用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'])
})
Run Code Online (Sandbox Code Playgroud)

基本上,任务“watch”将继续监视特定文件。保存后,它将执行任务“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!`) })
})
Run Code Online (Sandbox Code Playgroud)

上面会继续关注build/server.js'。每当它发生更改时,nodemon 都会自动重新启动服务器。

gulpfile.js 的最后一部分

gulp.task('dev', ['server', 'watch'])
Run Code Online (Sandbox Code Playgroud)

包含 gulp 命令需要执行的任务。

$ gulp dev
Run Code Online (Sandbox Code Playgroud)

或使用 npm 命令

"scripts": {
  "start": "gulp dev"
}
Run Code Online (Sandbox Code Playgroud)

所以你npm run start也可以。

并且不要忘记 require gulpfile.js 中的所有包

const gulp       = require('gulp')
const babel      = require('gulp-babel')
const nodemon    = require('gulp-nodemon')
Run Code Online (Sandbox Code Playgroud)