【发布时间】:2017-12-19 18:33:45
【问题描述】:
在跨 Scala JS 服务器/客户端项目中,我希望更改某些源以重新启动服务器和其他源以触发打包过程,但没有重新启动。不同的任务将无济于事,因为他们只会做一个或另一个,而我同时想要两个。
更详细: 我有一个 Scala.js crossProject。我正在使用以下内容来确保服务器可以为构建的 JavScript 提供服务:
val app = crossProject.settings(...)
lazy val appJS = app.js
lazy val jsFile = fastOptJS in(appJS, Compile)
lazy val appJVM = app.jvm.settings(
(resources in Compile) += jsFile.value.data,
(resources in Compile) += jsFile.value.data.toPath.resolveSibling(jsFile.value.data.name+".map").toFile,
(resources in Compile) += (packageJSDependencies in(appJS, Compile)).value
)
如果我运行 ~ appJVM/compile:packageBin::packageConfiguration,那么对 JavaScript 源的更改会立即编译并放置在 appJVM 目标/类目录中,因此刷新浏览器会得到我的新代码 - 很棒。
但是,如果我编辑服务器端代码,我还想使用 sbt-revolver 插件重新启动服务器。但是有问题 - 如果我使用 ~ ;appJVM/compile:packageBin::packageConfiguration;appJVM/reStart 然后更改客户端源重新启动服务器,这是我不想要的。但是,如果我从传递监视中删除客户端项目,那么它就不再注意到我是否更改了客户端项目。
有没有办法为每个任务定义不同的 watchTransitiveSources?
【问题讨论】:
-
更一般地说-我很想根本不使用
~,而是创建一个监视任意文件集并在每次更改时运行其他任务的任务,但我的谷歌搜索让我失望 - 我找不到有人这样做的例子。 -
我认为您的问题可以写得更简单。另外,不要暗示答案,而是描述您的需求。如果我理解正确,您希望更改某些源以重新启动服务器和其他源以触发打包过程,但无需重新启动。不同的任务将无济于事,因为他们只会做一个或另一个,而您同时想要两者。对吗?
-
是的,没错。我将根据您的措辞更改我的开头段落。