2014-11-02 44 views
0

如何優化我的多個requirejs項目?比如我有這樣的結構下,我有在不同的位置/文件夾main.jsRequirejs優化多個項目或頁面

build/ 
    build.js 

dev/  
    index.php 
    core/ 
     js/ 
     main.js 
     libs/ 
      jquery.js 


    local/ 
     js/ 
     main.js 

我構建/ build.js

({ 
    // Where my HTML and JS is stored. 
    appDir: "../dev/", 

    // Top-level directory containing my JS: 
    baseUrl: "local/view/javascript/base/", 

    // Where to build the optimized project. 
    dir: "../dist", 

    // Define the modules to compile. 
    modules: [ 
     { 
      name: 'main', 

      mainConfigFile: '../dev/local/js/main.js' 
     }, 
     { 

      name: 'main', 

      mainConfigFile: '../dev/core/js/main.js' 
     } 
    ] 
}) 

它不停地進行故障壓縮或尋找相關性,比如如,

ERROR: ENOENT, no such file or directory 'c:\wamp\websitename\dist\local\js\jquery.js

query.js位於core/js/libs/ - 乳清它在尋找local\js

我錯過了什麼?

回答

1

main在您的modules設置中出現兩次。因此,您要告訴r.js「請在../dist中創建模塊main,並選擇這樣和那些選項,並在../dist的不同選項中創建模塊main」。 r.js如何創建兩個不同模塊應該是相同文件../dist?它不能。

您也不能像模塊一樣將mainConfigFile放入模塊配置中。這是一個頂級選項,因此如果您想要進行每個模塊的設置,則需要使用override。並且設置mainConfigFile不會告訴r.js您實際上正嘗試優化哪個模塊。

像這樣的事情似乎是必要的,你在問題描述什麼基礎上的:

({ 
    // Where my HTML and JS is stored. 
    appDir: "../dev/", 

    // Top-level directory containing my JS: 
    baseUrl: "local/view/javascript/base/", 

    // Where to build the optimized project. 
    dir: "../dist", 

    // Define the modules to compile. 
    modules: [ 
     { 
      // Give a unique name. 
      name: 'main_local', 

      // This module does not exist in the source so tell r.js to 
      // *create* it. 
      create: true, 

      // What we want in it. 
      include: ['../dev/local/js/main.js'], 

      // "Override" the top level mainConfigFile, just for this module. 
      override: { 
       mainConfigFile: '../dev/local/js/main.js' 
      } 
     }, 
     { 
      name: 'main_core', 
      create: true, 
      include: ['../dev/core/js/main.js'], 

      override: { 
       mainConfigFile: '../dev/core/js/main.js' 
      } 
     }, 
    ] 
}) 
+0

非常感謝您的回答路易! :D – laukok 2014-11-02 12:23:59

+0

儘管我仍然得到相同的錯誤...'錯誤:ENOENT,沒有這樣的文件或目錄'c:\ wamp \ websitename \ dist \ local \ js \ jquery.js'。我注意到,當'mainConfigFile:'../ dev/local/js/main.js''移動到'modules:[]'內部時,會發生這種情況...... – laukok 2014-11-02 13:37:21

+0

我不確定你爲什麼表示「 modules:[]'。在你的問題中,它直接在'modules'裏面,在我的回答裏面是'override',這使得'modules'中的'mainConfigFile' *間接*成爲你正在談論的一個試用版你把'mainConfigFile'放在最高層? – Louis 2014-11-02 14:01:01