如何使用requirejs优化目录中的所有javascript文件

时间:2013-05-09 17:29:20

标签: javascript requirejs

我有一个像这样的文件夹结构:

.
├── autocomplete
│   ├── core.js
│   ├── search.js
│   └── user.js
├── build.js
├── collapsible_lists.js
├── griffgrabber
│   ├── canvasobject.js
│   ├── cargame.js
│   ├── car.js
│   ├── griffDrawer.js
│   ├── keylistener.js
│   ├── run.js
│   └── victim.js
├── main.js
├── newsfeed.js
├── require.js
├── shortcut.js
└── sidebar.js

3 directories, 20 files

main.js是启动文件。该文件需要几个文件,但不是全部。其余文件包含在

<script>
    require(['shortcut'], function(shortcut){
        // ...
    })
</script>

在一些html文件中。

到目前为止,这是我的build.js文件:

{
    baseUrl: ".",
    name: "main",
    out: "main-built.js",
}

但它只包含main.js所需的文件。是否可以在一次运行中优化所有javascript文件?

3 个答案:

答案 0 :(得分:1)

(扩展@Ryan Lynch的建议)

使用include选项,根据文档:

  

您始终可以使用 include 选项显式添加通过优化程序静态分析找不到的模块。

http://requirejs.org/docs/optimization.html

{
    baseUrl: ".", // ?
    appDir: ".", // ?
    dir: "output/",
    modules: [
        {
            name: "main",
            include: [ "shortcut" ]
        }
    ]
}

优秀example.build.js中的更详细示例(我实际上发现它比文档页面更有用)


(抱歉,没时间复制并正确测试以确保路径值正确,我稍后会尝试并更新我的答案)

答案 1 :(得分:0)

尝试在您的选项中包含模块数组,所以:

{
    baseUrl: ".",
    out: "main-built.js",
    modules: [
        {
            name: "main"
        }
    ]
}

根据文件:

  

在modules数组中,指定您想要的模块名称   在示例中,优化“main”。 “main”将映射到   项目中的appdirectory / scripts / main.js。构建系统将   然后跟踪main.js的依赖关系并将它们注入到   appdirectory-build / scripts / main.js文件。

答案 2 :(得分:0)

另一种 - 不太正统 - 实现这一目标的方法是将此"shortcut"模块添加为r.js扫描发现的任何“可见”模块的依赖(即“main.js” “)。这样,从“快捷方式”开始的整个依赖关系分支将包含在输出中。