使用RequireJS的优化器和单个构建文件来生成多个输出

时间:2012-03-19 08:38:33

标签: build requirejs

我目前正在开发一个大型JavaScript项目,我正在使用RequireJS强加一些结构。

我想使用优化器(r.js)配置构建,因此我的项目将捆绑在一个缩小的文件中(用于生产目的)。这很容易,但是我的项目中有几个包,并希望将每个包构建为自己的缩小的javascript文件。

文件夹结构示例:

src/core/main.js
src/core/util/HashMap.js (
src/package1/main.js
src/package1/views/view1.js

main.js文件是模块的入口点。

我想以这样的方式配置我的构建:在构建完成后,我将有以下两个输出:

core.min.js
package1.min.js

但是我似乎无法让这个工作。使用构建配置的modules属性似乎不会缩小每个模块。

有谁能说明我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

我很难让Require.JS按照我自己需要的方式完成所有事情。

我目前正在使用Grunt。我将Require.JS plugin for Grunt配置为将十几个模块文件合并为两个文件。我确实在这里和那里使用modulesempty:exclude来帮助实现这一目标。 Require.JS仍然是基于其依赖关系组合模块的最佳方式。

然后我使用Uglify plugin for Grunt分别缩小输出。

虽然这可能对您的用例没有帮助,但我也使用Grunt's concat plugin来帮助我按照自己喜欢的方式获取输出。

这一切都在Gruntfile.js中,所以当文件发生变化时,所有这一切都会随着grunt watch自动发生,使得develop-refresh-test循环更好一点。

答案 1 :(得分:0)

我不记得在我问这个问题时到底出了什么问题(甚至可能是当时我正在使用的当前RequireJS版本的错误),但这种设置很容易通过使用(如我在我的问题中已经说过modules部分。只需声明您的模块如下:

optimize:"uglify",
dir: 'out',
modules: [
    {
        name: "src/core/Main"
    },
    {
        name: "src/package1/Main"
    }
],
...

这将导致out下的以下结构:

out
|--core
:  |--Main.js
|--package1
:  |--Main.js

有一些选项可用于重命名输出文件,展平输出文件夹,从core排除所有package1个包以及更多,但基本上这是我正在寻找的结构。< / p>