优化多个requirejsconfiguration文件
我有与r.js优化问题
我有一个有多个requirejsconfiguration文件的项目
+ app - module1 * main.js * foo.js * bar.js - main.js + build.js
每个main.js都有自己的包
main.js的代码是:
requirejs.config({ 'baseUrl': '../app/', 'paths': { 'module1' : 'module1/main' } }); define(['module1'],function(){});
module1 / main.js代码如:
requirejs.config({ 'paths': { 'foo' : 'module1/foo', 'bar' : 'module1/bar' } }); define(['foo','bar'],function(){});
和build.js文件是这样的:
({ mainConfigFile: 'app/main.js', baseUrl: 'app', name: 'main', out: 'dist/main.js', })
当我执行$ r.js -o build.js
它会返回一个错误
Tracing dependencies for: main Error: ENOENT: no such file or directory, open 'D:\Project\Test\app\foo.js' In module tree: main module1 Error: Error: ENOENT: no such file or directory, open 'D:\Project\Test\app\foo.js' In module tree: main module1 at Error (native)
据我所知, r.js
根本无法在构build一个bundle时处理多个requirejs.config
调用。 我从来没有见过任何文件或问题报告,或与此相矛盾的工作示例。 (RequireJS会让你多次调用requirejs.config
,并结合在运行时传递的configuration,但这与r.js
处理多个调用requirejs.config
。
你必须把你所有的requirejs.config
调用合并成一个单独的调用,你可以使用mainConfigFile
指向r.js
我已经在我的机器上重新创build了安装程序,并得到了相同的错误。 如果我将app/main.js
的configuration修改为以下内容,则可以构build该包:
requirejs.config({ 'baseUrl': '../app/', 'paths': { 'module1' : 'module1/main', 'foo' : 'module1/foo', 'bar' : 'module1/bar' } });
只是踢,我也试过以下不起作用 :
requirejs.config({ 'baseUrl': '../app/', 'paths': { 'module1' : 'module1/main' } }); requirejs.config({ 'paths': { 'foo' : 'module1/foo', 'bar' : 'module1/bar' } });
(还要注意,上面的../app/
可以简化为.
而不是../app/
。)