提问者:小点点

使用nodemon命令运行npm脚本


我正在测试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要做的是将ES6代码转换为使用Babel的build/server.js并执行它。

我想要的是观察server.jssrc/中的变化,并在发生变化时重新启动服务器。在这里,如果发生任何更改,我想执行npm run start命令。什么是正确的'nodeme'命令,以我的需要。它的更好,如果我可以使用npm运行dev喜欢的命令开始使用nodemal开发。


共1个答案

匿名用户

您可以使用Gulpjs查看特定文件夹中的任何更改,然后命令它执行某些操作。用你的样例,你也想把代码转换成es6。所以它也需要大口大口和。如果你愿意,你可以包括巴贝尔预设阶段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。

然后是小精灵,它需要一大口小精灵,然后你可以在小精灵上做。js

gulp.task('server', () => {
  nodemon({
    script: 'build/server.js',
    ext: 'js',
    ignore: [
      'server.js',
      'node_modules/**',
      'test/**',
      'build/**'
    ]
  })
  .on('restart', () => { console.log(`Server restarted!`) })
})

上述人员将继续监视构建/服务器。js’。无论何时更改,nodemon都会自动重新启动服务器。

最后一件是gulpfile。js

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

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

$ gulp dev

或者使用npm命令

"scripts": {
  "start": "gulp dev"
}

因此,您也可以npm运行start

别忘了要求所有的包裹都装在gulpfile里。js

const gulp       = require('gulp')
const babel      = require('gulp-babel')
const nodemon    = require('gulp-nodemon')