2013-05-09 62 views
4

目录中的所有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文件?

回答

1

(扩大@Ryan林奇的建议)

使用include选项,按文件:

你总是可以明确地添加模块未通过优化的发现通过使用的静态分析包括选项。

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

​​

在更详细的例子优秀example.build.js(其实我觉得它比文档页面更有用)


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

0

尝试,包括在你的选择一个模块阵列,所以:

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

按照文档:

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

+0

您发布的构建文件不适用于我。 看来,如果我使用模块,我必须删除'out'语句并添加'dir'语句。当我使用'dir'时,它会优化整个目录并将优化后的文件复制到另一个目录。但它并不包含main-built.js文件中的每个文件。 – sighol 2013-05-09 17:53:29

0

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