使用nodemon命令运行npm脚本

5

我正在测试来自Apollo的GraphQL服务器,并希望将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.jssrc/中的更改,并在更改发生时重新启动服务器。在这里,如果发生任何更改,我希望执行npm run start命令。我的需求需要使用哪个正确的'nodemon'命令?最好能够像使用npm run dev命令一样使用nodemon进行开发。

1个回答

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'])
})

基本上,任务“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!`) })
})

以上代码将会监视'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')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接