在 build.sbt 中设置 sbt 对 browserify 的调用,以便在编译时捆绑依赖项

Set up invocation of browserify by sbt in build.sbt so that dependencies are bundled on compilation

场景,我正在使用 Java Play Framework for play-java 构建。我有一个依赖关系,babel 编译成令人讨厌的输出行 "var sth = require("sth")"。 显然 browserify 是让这个 nodejs 样式包含在浏览器中工作的唯一希望。但我不想在每次新编译时从 CLI 手动调用 browserify。所以我发现这个片段 https://www.toptal.com/scala/using-scala-js-with-npm-and-browserify 离家更近,但他的案例是针对 Scalajs 的。 那么如何在我的场景中复制他的解决方案呢?

您可以通过创建一个在资产源生成阶段执行的任务来从 sbt 执行 browserify。

以这个种子项目为例,查看build.sbt如何创建任务:https://github.com/maximebourreau/play-reactjs-es6-seed

请注意,他们不赞成将 <+= 添加到列表中,因此您可以将 sourceGenerators 行更改为:

sourceGenerators in Assets += browserifyTask.taskValue

请注意,这只是在 node_modules 目录中执行 browserify 二进制文件,因此您必须 npm install browserify 并 运行ning bablify 任务,但您可以更改它执行的任务。

它还硬编码了文件以浏览 app/assets/javascripts/main.jsx。您也可以将其更改为 settingKey。

只要您更改 sourceDirectory in Assets.

中的文件,源代码生成器就会 运行

希望对您有所帮助。