编译前的SBT任务不会在触发编译中执行

0fn*_*fnt 6 scala sbt playframework playframework-2.0

这篇文章中,我想我将学习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
Run Code Online (Sandbox Code Playgroud)

我做了两件事:

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

什么有效:

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

什么行不通:

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

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

rtr*_*szk 3

您需要将最后一行更改为:

compile in Compile <<= (compile in Compile) dependsOn sassCompile
Run Code Online (Sandbox Code Playgroud)

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