Webpack-监视并启动nodemon吗?

感谢@McMath 出色回答,现在我可以通过webpack编译客户端和服务器。我现在正努力使自己webpack --watch变得有用。理想情况下,当捆绑更改时,我希望它为我的服务器进程生成类似nodemon的东西,而当客户端更改时,它会生成某种浏览器同步的味道。

我意识到这是一个捆绑器/加载器,而不是一个真正的任务运行器,但是有什么方法可以做到这一点?缺少google结果似乎表明我正在尝试新的东西,但这必须已经完成。

我总是可以将webpack程序包保存到另一个目录,并使用gulp观看/复制/浏览器同步化它,但这似乎很简单。是否有更好的方法?

米亚2020/04/03 10:51:05

除了@Ling的好答案之外:

如果您想一次构建项目,则在观看之前nodemon,可以使用webpack 编译器hook在webpack完成编译后,插件的代码就会nodemondone钩子中触发(另请参阅此有用的文章)。

const { spawn } = require("child_process")

function OnFirstBuildDonePlugin() {
  let isInitialBuild = true
  return {
    apply: compiler => {
      compiler.hooks.done.tap("OnFirstBuildDonePlugin", compilation => {
        if (isInitialBuild) {
          isInitialBuild = false
          spawn("nodemon dist/index.js --watch dist", {
            stdio: "inherit",
            shell: true
          })
        }
      })
    }
  }
}

webpack.config.js:

  module.exports = {
    ... 
    plugins: [
      ... 
      OnFirstBuildDonePlugin()
    ]
  })

package.json:

"scripts": {
  "dev"  : "webpack --watch"
},

希望能帮助到你。

宝儿2020/04/03 10:51:05
  1. 安装以下依赖项:

npm install npm-run-all webpack nodemon

  1. package.json文件配置为如下所示:

package.json

{
  ...

  "scripts": {
    "start"        : "npm-run-all --parallel watch:server watch:build",
    "watch:build"  : "webpack --watch",
    "watch:server" : "nodemon \"./dist/index.js\" --watch \"./dist\""
  },

  ...

}

之后,您可以使用轻松地运行您的项目npm start

不要忘记让Webpack配置WatchIgnorePlugin来忽略./dist文件夹。

依存关系

  1. npm-run-all -一个CLI工具,可以并行或顺序运行多个npm脚本。
  2. webpack-webpack是一个模块捆绑器。它的主要目的是捆绑JavaScript文件以供在浏览器中使用,但它也能够转换,捆绑或打包几乎任何资源或资产。
  3. nodemon -在node.js应用程序开发期间使用的简单监控脚本。