2016-03-12 12 views
5

:Scala.js kaynak haritalarını resourceGenerators kullanarak nasıl kopyalarım? Bu gibi <code>products</code> kullanırken <code>fastOptJs</code> -generated .js dosyaları kopyalamak için <code>resourceGenerators</code> sbt anahtarını kullanıyorum

> show frontend/fastOptJS 
[info] Attributed(/some/path/frontend/target/scala-2.11/frontend-fastopt.js) 
[success] Total time: 0 s, completed Mar 12, 2016 1:59:22 PM 
:

(resourceGenerators in Compile) <+= 
     (fastOptJS in Compile in frontend, packageScalaJSLauncher in Compile in frontend, packageJSDependencies in Compile in frontend) 
      .map((f1, f2, f3) => { 
      Seq(f1.data, f2.data, f3) 
      }) 

sbt aşağıdaki Koşu, ben oluşturulan dosyanın yolunu görebilirsiniz Scala.js oluşturulan başlatıcısı biter nerede

Benzer şekilde, kolayca görebilirsiniz:

> show frontend/packageScalaJSLauncher 
[info] Attributed(/some/path/frontend/target/scala-2.11/frontend-launcher.js) 
[success] Total time: 0 s, completed Mar 12, 2016 2:00:10 PM 

Ben nasıl yapamam Hiç, bana .js.map dosyasının yerini işaret edecek bir görev/anahtar bulun. Eklenti kaynaklarına bakmayı denedim ama bulamadım. build.sbt'da manuel harita oluşturmaya başvurmadan bunu yapmanın herhangi bir yolu var mı?

cevap

5

Scala.js tarafından oluşturulan kaynak haritaları her zaman karşılık gelen .js dosyasının + ".map" adını alır. Yani f1 ile f1.getParentFile/(f1.getName + ".map") ile ilişkili olanı bulabilirsiniz.

Btw, yeni bir yapı <+= kullanmamalıdır. daha anlaşılır += yerine kullanılmalıdır:

resourceGenerators in Compile += Def.task { 
    val f1 = (fastOptJS in Compile in frontend).value.data 
    val f1SourceMap = f1.getParentFile/(f1.getName + ".map") 
    val f2 = (packageScalaJSLauncher in Compile in frontend).value.data 
    val f3 = (packageJSDependencies in Compile in frontend).value 
    Seq(f1, f1SourceMap, f2, f3) 
} 

ve her yerde in Compile önlemek amacıyla, inConfig(Compile) kullanabilirsiniz:

inConfig(Compile)(Seq(
    resourceGenerators += Def.task { 
    val f1 = (fastOptJS in frontend).value.data 
    val f1SourceMap = f1.getParentFile/(f1.getName + ".map") 
    val f2 = (packageScalaJSLauncher in frontend).value.data 
    val f3 = (packageJSDependencies in frontend).value 
    Seq(f1, f1SourceMap, f2, f3) 
    } 
)) 
+1

sayesinde, işe yaradı. Yine de, eklenti yollarla uğraşmak yerine bu konumu sbt anahtarı olarak sağlayabilirse daha güvenli olacağını hissediyorum. –

+1

[Bir özellik isteğini dosyalama] (https://github.com/scala-js/scala-js/issues) için çekinmeyin. – sjrd

İlgili konular