Requirejs优化多个项目或页面

时间:2014-11-02 10:01:17

标签: jquery node.js requirejs rjs requirejs-optimizer

如何优化我的多个requirejs项目?例如,我在下面有这样的结构,我在不同的位置/文件夹中有两个 main.js

build/
   build.js

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


    local/
      js/
        main.js

我的build / 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'
        }
    ]
})

它一直无法压缩或找到依赖项,例如,

  

错误:ENOENT,没有这样的文件或目录   ' C:\瓦帕\ websitename \ DIST \本地\ JS \的jquery.js

我的query.js位于core/js/libs/ - 乳清是否在local\js中寻找?

我错过了什么?

1 个答案:

答案 0 :(得分:1)

{p> mainmodules设置中出现两次。所以,您要告诉r.js"请在main中使用此类选项创建模块../dist,并在main个不同选项中创建模块../dist #34 ;. 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'
            }
        },
    ]
})