运行webpack并启用监视并启动服务器

时间:2017-01-14 03:14:05

标签: javascript node.js express webpack

我正在使用webpack捆绑我的快速服务器,并希望利用webpack观察器。当bundle更改时,我正在使用nodemon重启我的服务器。

我可以在一个终端中使用观察者手动运行webpack并在一秒钟内启动nodemon,但我最终希望能够仅使用" npm start"干净地启动这两个进程。脚本。

离。 Webpack Bundles - > Nodemon开始 - > Webpack Watchers Start

有没有人对这个话题有任何想法?

2 个答案:

答案 0 :(得分:1)

我最终使用Webpack / Nodemon Node API创建了一个自定义构建脚本,而不是CLI。这个选项为我提供了更灵活的自定义终端输出。

import webpack from 'webpack';
import nodemon from 'nodemon';
import webpackConfig from './webpack.config.babel';

const compiler = webpack(webpackConfig);
compiler.run((runErrors, runStats) => {
  console.log(runStats.toString({
    cached: false,
    colors: true,
    assets: true,
    chunks: false,
    chunkModules: false,
    chunkOrigins: false,
    errors: true,
    errorDetails: true,
    hash: false,
    modules: false,
    timings: false,
    warnings: false,
    version: false,
  }));
  console.log();

  nodemon({
    script: 'build/server.bundle.js',
    watch: 'build/server.bundle.js'
  }).on('restart', () => {
    process.env.NODEMON_STATUS = 'restarted';
  });

  compiler.watch({}, (watchErrors, watchStats) => {
    const hasErrors = watchErrors || watchStats.hasErrors();
    if (hasErrors) {
      console.log((watchStats.toString({
        cached: false,
        colors: true,
        assets: false,
        chunks: false,
        chunkModules: false,
        chunkOrigins: false,
        errors: true,
        errorDetails: true,
        hash: false,
        modules: false,
        timings: false,
        warnings: false,
        version: false,
        children: false,
        reasons: false,
        source: false,
      })));
    }
  });
});

process.on('SIGINT', () => {
  process.exit(0);
});
process.on('SIGTERM', () => {
  process.exit(0);
});
process.on('SIGUSR2', () => {
  process.exit(0);
});
process.on('exit', () => {
  process.exit(0);
});

答案 1 :(得分:0)

如果nodemon在文件更改时自动重启服务器,则可以使用名为concurrently的包。

首先作为dev依赖项同时安装。

npm i concurrently --save-dev

之后编辑你的package.json

"start": "**webpack build** && concurrently --kill-others \"nodemon app.js\" \"**webpack watch**\""

ps:我添加了**占位符,您应该使用构建和监视的命令更改它们之间的命令。