【问题标题】:SBT task preceding compilation doesn't get executed in triggered compilation在触发编译中未执行编译前的 SBT 任务
【发布时间】:2014-11-29 21:00:00
【问题描述】:

this post 我想我会学习 sbt 任务并自己创建。我已经到了一个阶段,我创建了一个在编译之前运行并编译我的 sass 的任务。

val sassCompile = TaskKey[ Unit ]( "sassCompile" )

sassCompile := { 
  SassCompiler.compile( baseDirectory.value )
}

watchSources <++= baseDirectory map { path => ((path / "app" / "assets" ) ** "*.scss").get }

compile <<= (compile in Compile) dependsOn sassCompile

我做两件事:

  1. 确保对 scss 的每次更改都会触发编译
  2. 编译前,sass 编译器运行

那么什么有效:

  1. 触发编译工作。每次我更改我的 scala 时,编译都会触发。 (通常的行为)。每次我在提到的路径中更改 .scss 时:app/assets/**,编译触发器。一切正常。
  2. 当我在 play 控制台手动输入 compile 时,sass 编译也会触发,我可以看到 css 文件发生变化。

什么不起作用:

当编译被自动触发时(通过调用 ~compile 或 ~run 然后进行更改(甚至不进行更改),sass 编译不会被调用。所以当我玩 ~run 时,我的 sass 编译器不会被调用。

编辑:如果有帮助,here 是一个类似的问题。

【问题讨论】:

    标签: scala playframework playframework-2.0 sbt


    【解决方案1】:

    你需要把最后一行改成:

    compile in Compile <<= (compile in Compile) dependsOn sassCompile
    

    您可以在“何时指定范围”部分找到here 的说明。

    【讨论】:

    • 抱歉,我没有将此标记为答案。因为这现在会产生一个问题,即对于每个请求,我的 sassCompile 作业都会运行很多次。我找不到次数的模式,但给出一个想法,在我请求网页后,我让任务运行了至少 20 次。
    • @user247077 你能写更多关于这个新问题的信息吗?你如何运行你的应用程序,在哪种模式下?可能这个问题类似于tihs
    猜你喜欢
    • 2018-10-29
    • 2015-09-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2016-09-16
    • 2019-08-14
    • 2016-08-18
    • 1970-01-01
    相关资源
    最近更新 更多