javascript - 在 sbt 中运行 npm build for play framework

标签 javascript playframework npm sbt sbt-web

我对 sbt/play 配置不是很熟悉。我正在使用 play 2.3.8 为我的 javascript 应用程序提供服务。项目中有:

.enablePlugins(SbtWeb)
.enablePlugins(play.PlayScala)
.settings(
  ...
  libraryDependencies ++= WebDependancies :+ evobufAkka,
  pipelineStages in Assets := Seq(closure, digest),
  ...
  // Some closure compiler settings
)

该项目正在使用闭包编译器来缩小代码等。但我想更改它。我想停止使用闭包编译器,而只使用简单的 npm 包。我知道 sbt 可以运行一些 shell 任务。所有这些的原因是将服务器与前端分开,因此所有与前端相关的任务(less、uglify、指纹识别等)实际上都是由 node.js 等 javascript 工具完成的。我正在阅读有关 sbt-web 的信息,但我想尽可能避免这种情况。我的想法是: 1.启动sbt,打开我的项目 2.运行编译: - sbt 将运行我的 npm 任务,最终生成一些 build.js 文件,然后可以通过/public 目录或其他目录中的 Play Framework 提供该文件。 3. 如果可能的话,我希望有一个单独的单元测试过程。

就 npm 设置而言,我正在考虑将 package.json 放在我的 project/public 文件夹中,除非最好将它放在 project/app/assets 中。

这一切都可能吗?

2015 年 8 月 8 日更新

我做了一些研究,发现了有关外部流程的信息。基于我创建的一些示例:

lazy val npmBuildTask = taskKey[Unit]("Execute the npm build command to build the ui")

npmBuildTask := {
  "cd public/ && npm install" !
}  

但不确定如何将此任务添加到编译过程中?

最佳答案

你可以让编译任务依赖于你的 npmBuildTask 任务:

compile <<= (compile in Compile) dependsOn npmBuildTask

关于javascript - 在 sbt 中运行 npm build for play framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31876306/

相关文章:

json - Play &Json : How to validate an array of integers

java - 在 Play 框架中将 Scala session 对象转换为 Java session 对象

scala - 检查 Future[Boolean] 的结果是 true 还是 false

node.js - 如何正确使用 package.json 中的 "keywords"属性?

node.js - 尝试使用 Protocol Buffers - Google 的数据交换格式时,goog 未定义错误

javascript - 用于防止输入任何与正则表达式不匹配的输入的 jquery 插件

javascript - Monaco Editor 更改自定义类型行为

javascript - 使用 Javascript 评估或显示 HTML

javascript - 使用 Jquery 检索链接

node.js - 请求 : How to set user agent for every request?