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