在跨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目标/ classes目录中,因此刷新浏览器会获得我的新代码 - 非常棒。
但是,如果我编辑服务器端代码,我还想使用sbt-revolver插件重启服务器。但是有一点 - 如果我使用~ ;appJVM/compile:packageBin::packageConfiguration;appJVM/reStart
然后更改到客户端源重新启动服务器,我不想要。但是,如果我从传递表中删除客户端项目,那么如果我更改客户端项目则不再注意到。
有没有办法按每个任务不同地定义watchTransitiveSources?
答案 0 :(得分:0)
您确定使用的是private async void btnDeleteContact_Click(object sender, RoutedEventArgs e)
{
StorageFile file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("Contacts.xml");
XDocument xdoc = XDocument.Load(file.Path);
if (lstBox.SelectedIndex != -1)
{
xdoc.Element("Contacts")
.Elements("Contact")
.Where(x => (string)x.Element("ID") == lstBox.SelectedItem.ToString()).Remove();
//lstBox.SelectedIndex = -1;
updateXMLFile(xdoc);
//lstBox.Items.Clear(); //Causing catastrophic error
loadContacts();
}
}
而不是sbt-resolver
吗?
因为第二个允许使用
控制sbt-revolver
资源
triggered
- 定义单个项目的文件
监控变化。默认情况下,项目会监视资源和
Scala和Java资源。 watchSources
- 然后结合了
watchTransitiveSources
表示当前项目以及所有执行和类路径
依赖关系(有关interProject的详细信息,请参阅.scala build definition)
依赖)。 来源:http://www.scala-sbt.org/0.13/docs/Triggered-Execution.html
答案 1 :(得分:0)
~
实际上是一个命令,它监视基础项目的传递源,然后在重新运行原始输入(包括〜)之前,同步运行作为参数传递的所有内容。它没有提供有关那些命令行输入可用更改的信息(很难看到它如何)。
因此,我遇到的解决方案是编写一个新的监视命令。它还需要观察所有来源,但有条件地根据哪些文件已更改来选择做什么。
我已经把一些丑陋的东西搞砸了,但是它会让它变得更加清晰,通用,经过测试和插件。但是,与此同时,任何试图遵循我的路径的人都可以使用这个公开要点:https://gist.github.com/LeisureMonitoringAdmin/0eb2e775e47b40f07d9e6d58d17b6d52