2012-12-24 74 views
7

我在Play 2.0中的requirejs實現中遇到了一些問題,其中在dev模式下可以找到所有模塊,但是在運行dist時似乎並不尊重路徑我已經安裝好了。Play Framework 2&requirejs - 在dist版本中不受尊重的路徑

下面是設置:

/assets/javascripts/templates/template1/main.js:

require.config({ 
    baseUrl: "/assets/javascripts", 
    paths : { 
      jquery : [ 'core/lib/jquery/jquery-1.8.3' ], 
      can : [ 'core/lib/canjs/can' ] 
    } 
}); 

require([ "jquery", "can", "core/global/moduleloader" ], function($, can, ml) { 
    //do stuff 

}); 

而且在模板我打電話:

@helper.requireJs(core = routes.Assets.at("javascripts/require.js").url, 
    module = routes.Assets.at("javascripts/templates/template1/main").url)  

我build.scala我要告訴它哪些文件要優化,如下所示:

val main = play.Project(appName, appVersion, appDependencies).settings(
    requireJs += "templates/template1/main" 
) 

客戶端的所有依賴性都解決了,但使用DIST優化的時候,我得到:

[info] RequireJS optimization has begun... 
[info] app.build.js: 
[info] ({appDir: "javascripts", 
[info]   baseUrl: ".", 
[info]   dir:"javascripts-min", 
[info]   modules: [{name: "templates/template1/main"}]}) 
model contains 41 documentable templates 

Tracing dependencies for: templates/template1/main 
JavaException: java.io.FileNotFoundException:  /Users/paulsmith/Projects/Experiments/play/Moduluar/target/scala-2.10/classes/public/javascripts-min/jquery.js (No such file or directory) 
In module tree: 
    templates/template1/main 

從我所看到的,路徑配置被忽略,所以它是不正確的..這解決路徑似乎是由於app.build.js覆蓋了main.js中的配置。

有沒有人遇到過這個問題?

感謝,

保羅

回答

8

我有相同的問題,並添加requireJsShim關鍵我Build.scala固定的問題:

val main = play.Project(appName, appVersion, appDependencies).settings( 
    requireJs += "main.js", 
    requireJsShim += "main.js" 
} 

requireJsShim告訴發揮使用main.js中的設置,如路徑和填充,而不是播放中的默認值app.build.js

我使用的是Play 2.1.0;未添加直到2012年12月12日,這個功能,所以我不知道哪個版本的2.1候選人它包含

參考文獻:
https://play.lighthouseapp.com/projects/82401-play-20/tickets/945-allow-specifying-your-own-requirejs-build-file#ticket-945-4
https://github.com/playframework/Play20/commit/ba71f3967c3001cc0db8a4a7b4f9a31c8eebbc45