我目前正在开发一个大型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
属性似乎不会缩小每个模块。
有谁能说明我在这里做错了什么?
答案 0 :(得分:1)
我很难让Require.JS按照我自己需要的方式完成所有事情。
我目前正在使用Grunt。我将Require.JS plugin for Grunt配置为将十几个模块文件合并为两个文件。我确实在这里和那里使用modules
,empty:
和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>