如何在webpack监视触发时运行并发脚本?

时间:2017-04-04 16:15:39

标签: concurrency npm build webpack npm-scripts

背景

我目前有一个类似

的npm脚本
"dev":"yarn install && concurrently -k \"npm run webpack\" \"cd dist/ && node App.js\" \"npm run test\" \"npm run lint\""

逻辑上,这会运行webpack,并行启动应用程序,lints和测试。

该脚本中的npm webpack具有--watch set

注意:这是开发。

问题

  • 这会尝试在具有webpacked
  • 之前运行该应用
  • 由于观看
  • ,当webpack重新打包时,这不会重新运行应用程序

目标

  • 运行npm run webpack一次
  • 当它输出(意味着手表被触发并完成)时,运行其他三个命令
  • 当崩溃事件通知我时,不要浪费时间运行那些不能工作的东西,但在我修复文件时再试一次。

真正的问题

我不知道自己不知道什么。我怀疑真正的答案可能是在webpack配置本身,或者是一个比同时/关注我的用例更好的工具,或者我如何设计这个的核心想法只是疯了。也许我想创建一个使用webpack dev中间件来代替服务的devServer.js?那怎么会拉扯和测试呢?

我不知道这个版本的漂亮版本会是什么样的。

我真正需要的是

一篇很棒的教程/指南/博客文章,讲述了这个'应该'去。

1 个答案:

答案 0 :(得分:1)

这是我要做的事情;或许还有更好的方法:

"scripts": {
  "dev": "yarn install && concurrently -k \"npm run webpack\" \"npm run watch\"",
  "watch": "onchange \"dist/**/" -- concurrently -k \"cd dist/ && node App.js\" \"npm run test\" \"npm run lint\""
}

这使用onchangenpm run dev并行启动webpack和onchange。 onchange监视dist/中的任何文件更改,并在任何文件更改时运行您的任务。

此方法的局限性在于,dist中的文件发生更改后,您的任务才会运行。您可以通过在运行webpack之前删除dist/来解决此问题。 (使用rimraf以跨平台方式执行此操作。)示例:

"dev": "yarn install && rimraf dist && concurrently -k \"npm run webpack\" \"npm run watch\""

如果您不关心Windows支持,则可以使用rm -rf dist