2012-12-24 25 views
7

Tôi đang gặp một số rắc rối với việc triển khai requirejs trong Play 2.0, ở chế độ dev tất cả các mô-đun có thể được tìm thấy, nhưng khi chạy dist nó dường như không tôn trọng đường dẫn Tôi đã thiết lập.Chơi Framework 2 & requirejs - đường dẫn không được tôn trọng trong dist build

Đây là thiết lập:

/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 

}); 

Và trong mẫu tôi kêu gọi:

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

trong tôi build.scala Tôi đang cho biết tệp nào cần tối ưu hóa như vậy:

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

Khách hàng bên tất cả phụ thuộc được giải quyết, nhưng khi sử dụng để tối ưu hóa quận, tôi nhận được:

[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 

Từ những gì tôi có thể thấy, các đường dẫn cấu hình đã được bỏ qua và vì vậy nó được giải quyết các đường dẫn sai .. này có vẻ là do app.build.js ghi đè cấu hình trong main.js.

Có ai gặp vấn đề này trước đây không?

Cảm ơn,

Paul

Trả lời

8

Tôi đã có vấn đề giống hệt nhau, và thêm phím requireJsShim để Build.scala của tôi cố định vấn đề:

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

requireJsShim nói chơi để sử dụng các cài đặt trong main.js của bạn, chẳng hạn như đường dẫn và miếng chêm, thay vì giá trị mặc định trong lượt chơi app.build.js

Tôi đang sử dụng Play 2.1.0; tính năng này đã không được thêm vào cho đến khi 12 tháng 12 năm 2012, vì vậy tôi không chắc chắn mà Thả Các ứng cử viên là 2,1 nó kèm

Tài liệu tham khảo:
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

Các vấn đề liên quan