2012-12-24 15 views
7

Ho problemi con l'implementazione requirejs in Play 2.0, dove in modalità dev tutti i moduli possono essere trovati, ma quando si esegue dist sembra non rispettare i percorsi Ho impostato.Play Framework 2 & requirejs - percorsi non rispettati in dist build

Qui è la messa a punto:

/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 

}); 

E nel modello che io chiamo:

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

nel mio build.scala Gli sto dicendo quali file ottimizzare in questo modo:

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

lato client tutte le dipendenze sono risolte, ma quando si utilizza dist per ottimizzare, ottengo:

[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 

Da quello che posso vedere, i percorsi di configurazione viene ignorato e così si sta risolvendo i percorsi in modo non corretto .. questo sembra essere dovuto a app.build.js che sovrascrivono la configurazione nel file main.js.

Qualcuno ha mai incontrato prima questo problema?

Grazie,

Paul

risposta

8

stavo avendo il problema identico, e aggiungendo la chiave requireJsShim alla mia Build.scala risolto il problema:

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

requireJsShim dice a giocare da usare le impostazioni nel file main.js, ad esempio percorsi e spessori, anziché i valori predefiniti in playsapp.build.js

Sto usando Play 2.1.0; questa caratteristica non è stato aggiunto fino 12 Dicembre 2012, quindi non sono sicuro che rilasciano i candidati di 2.1 è incluso con

Riferimenti:
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

Problemi correlati