Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在启用监视的情况下运行Web包并启动服务器_Javascript_Node.js_Express_Webpack - Fatal编程技术网

Javascript 在启用监视的情况下运行Web包并启动服务器

Javascript 在启用监视的情况下运行Web包并启动服务器,javascript,node.js,express,webpack,Javascript,Node.js,Express,Webpack,我正在使用webpack捆绑我的express服务器,并希望使用webpack watcher。当捆绑包发生更改时,我正在使用nodemon重新启动服务器 我可以在一个终端上用watcher手动运行webpack,并在一秒钟内启动nodemon,但我最终希望能够使用“npm start”脚本干净地启动这两个进程 例如:Webpack Bundles->Nodemon启动->Webpack监视程序启动 有人对此有什么想法吗?如果nodemon在文件更改时自动重新启动服务器,您可以使用名为Concu

我正在使用webpack捆绑我的express服务器,并希望使用webpack watcher。当捆绑包发生更改时,我正在使用nodemon重新启动服务器

我可以在一个终端上用watcher手动运行webpack,并在一秒钟内启动nodemon,但我最终希望能够使用“npm start”脚本干净地启动这两个进程

例如:Webpack Bundles->Nodemon启动->Webpack监视程序启动


有人对此有什么想法吗?

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

首先作为开发人员依赖项并发安装

npm i concurrently --save-dev
然后编辑您的package.json

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

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

我最终使用Webpack/Nodemon节点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);
});

是否可以像这样将webpack watcher与构建分开运行?根据我的理解,它只是一个附加到命令中的标志“-watch”。正如您所提到的,您可以使用我们的无监视程序运行<代码>“开始”:“**并发--杀死他人\”nodemon app.js \“**webpack watch script**\”虽然这可能适用于其他一些用例,但我的用例需要一些更定制的东西。请参阅我的答案。那么您是直接在cli上运行此命令,还是将调用放在npm scripts package.json文件中?