【问题标题】:Run npm script with nodemon command使用 nodemon 命令运行 npm 脚本
【发布时间】:2017-05-10 04:35:10
【问题描述】:

我正在测试来自 Apollo 的 GraphQL Server 以及将 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 like 命令开始使用 nodemon 进行开发,那就更好了。

【问题讨论】:

    标签: node.js npm nodemon


    【解决方案1】:

    您可以使用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 run start

    别忘了要求 gulpfile.js 中的所有包

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

    【讨论】:

      猜你喜欢
      • 2019-10-12
      • 2021-09-29
      • 2020-11-28
      • 2019-08-18
      • 1970-01-01
      • 2019-05-08
      • 2021-07-22
      • 2023-01-17
      • 2016-11-11
      相关资源
      最近更新 更多