2013-06-25 3 views
0

У меня есть многопроектная сборка sbt, и я бы хотел использовать https://github.com/softprops/coffeescripted-sbt, чтобы скомпилировать мой кофейник в javascript, но он не выполняет задачи.Используйте coffeescripted-sbt для компиляции coffeescript в многопроектной сборке

Код был взят из https://github.com/jeffmay/angular-play-multimodule-seed/tree/stackoverflow-17289043

С build.sbt

Несмотря на то, что не рекомендуется, я перепутал файл build.sbt в директории проекта с моими объектами проекта для того, чтобы проверить, если это плагин работал.

В build.sbt:

seq(coffeeSettings: _*) 

Когда я побежал:

$ sbt 
[info] Loading project definition from /Users/jeffmay/code/righttrack/project 
[info] Set current project to root (in build file:/Users/jeffmay/code/righttrack/) 
> coffee 
[success] Total time: 0 s, completed Jun 24, 2013 11:40:37 PM 
> show coffee 
[info] ArrayBuffer() 
[success] Total time: 0 s, completed Jun 24, 2013 11:40:52 PM 
> project web 
[info] Set current project to web (in build file:/Users/jeffmay/code/righttrack/) 
[web] $ coffee 
[error] Not a valid command: coffee 
[error] No such setting/task 
[error] coffee 
[error]  ^
[web] $ 

Что ArrayBuffer() значит? Это молчаливый отказ (CoffeeScript возвращения последнего выражения, которое иначе было бы return; из null?) Настройка

нескольких проектов

Для некоторого контекста, моя сборка будет пробит, как так ...

В project/plugins.sbt:

// SBT community plugin resolver 
resolvers += Resolver.url("sbt-plugin-releases", 
    new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/"))(Resolver.ivyStylePatterns) 

// CoffeeScript compiler plugin 
addSbtPlugin("me.lessis" % "coffeescripted-sbt" % "0.2.3") 

В project/Modules.scala (моя сборка объекта):

import sbt._ 

object Modules extends Build { 

    lazy val root = RootModule.project 

    lazy val api = ApiModule.project 

    lazy val web = WebModule.project 
} 

В project/WebModule.scala:

object WebModule extends BaseModule { 

    // ... libraries dependencies and stuff 

    override def project = play.Project(moduleName, moduleVersion, libraries, file(location), 
    moduleSettings ++ 
    Seq((resourceManaged in (Compile, CoffeeKeys.coffee)) <<= (crossTarget in Compile)(_/"src"/"main"/"coffee")) 
) 
} 

Я использую project/BaseModule.scala удалить нагромождения общих элементов каждого модуля, но ничего сверхъестественного не делает.

С Build.scala

я удалить build.sbt материал и поместить его в Build.scala через project/WebModule.scala, добавив:

override def project = play.Project(moduleName, moduleVersion, libraries, file(location), 
    moduleSettings ++ 
    coffeeSettings ++ // With the settings moved from build.sbt 
    Seq((resourceManaged in (Compile, CoffeeKeys.coffee)) <<= (crossTarget in Compile)(_/"src"/"main"/"coffee")) 
) 

Тогда я дам ему кружиться

$ sbt 
[info] Loading project definition from /Users/jeffmay/code/righttrack/project 
[info] Set current project to root (in build file:/Users/jeffmay/code/righttrack/) 
> coffee 
[error] Not a valid command: coffee 
[error] No such setting/task 
[error] coffee 
[error]  ^
> project web 
[info] Set current project to web (in build file:/Users/jeffmay/code/righttrack/) 
[web] $ coffee 
[success] Total time: 0 s, completed Jun 25, 2013 12:08:36 AM 
[web] $ show coffee 
[info] ArrayBuffer() 
[success] Total time: 0 s, completed Jun 25, 2013 12:08:40 AM 

Я не видя никаких изменений после запуска команды кофе. Есть идеи, в чем проблема?

Спасибо!

ответ

0

Смотрите диалог мой с softprops для получения более подробной информации: https://github.com/softprops/coffeescripted-sbt/issues/17

Существовали три проблемы и один улучшение кода выше.

  1. Я не собирал свой веб-проект в корневой проект.

  2. Я не определял, где найти файлы сценария кофе.

  3. Play использует «./app» как sourceDirectory, поэтому, когда я добавил бы „правильный“ путь к каталогу

    sourceDirectory in (Compile, CoffeeKeys.coffee) <<= sourceDirectory { _/"main"/"coffee" } 
    

    Он искал в «./app/src/main/coffee» , который не существует

я был в состоянии улучшить этот пример, имея компилятор управлять каталогом ./public, чтобы он мог упасть скомпилированные JavaScript источников в рекомендуемых public/js каталоге для углового Seed проекта.

Здесь вы можете увидеть пример полного семенного проекта: https://github.com/jeffmay/angular-play-multimodule-seed

Смежные вопросы