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 属性似乎不会缩小每个模块。

谁能解释我在这里做错了什么?

最佳答案

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

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

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

虽然这可能对您的用例没有帮助,但我也在使用 Grunt's concat plugin帮助我以我喜欢的方式获得输出。

这一切都在 Gruntfile.js 中,所以所有这些都在文件发生更改时自动通过 grunt watch 发生,从而使开发-刷新-测试循环变得如此更好一点。

https://stackoverflow.com/questions/9767084/

相关文章:

c++ - 类成员函数模板可以是虚拟的吗?

c++ - 如何在 C 预处理器中可靠地检测 Mac OS X、iOS、Linux、Windows?

c++ - 单例:应该如何使用

c++ - 在 C++ 中将默认参数值放在哪里?

c++ - 结合 C++ 和 C - #ifdef __cplusplus 如何工作?

c++ - 以理智、安全和有效的方式复制文件

c++ - 按降序对 vector 进行排序

c++ - 如何循环遍历 map 的 C++ map ?

c++ - std::string 到 char*

c++ - 如何检查元素是否在 std::set 中?