优化多个 requirejs 配置文件
Optimize multiple requirejs config file
我对 r.js
的优化有疑问
我有一个项目有多个 requirejs 配置文件
+ 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
时它return一个错误
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
在构建捆绑包时根本无法处理多个 requirejs.config
调用。 我从未见过任何文档或发布报告,或与此相矛盾的工作示例。 (RequireJS 会让你多次调用 requirejs.config
,并在 运行 时间 组合传递的配置 但这与具有 r.js
过程不同多次调用 requirejs.config
.
您必须将对 requirejs.config
的所有调用组合成一个您使用 mainConfigFile
指向 r.js
的调用。
我在我的机器上重新创建了您的设置,但遇到了与您相同的错误。如果我将 app/main.js
中的配置修改为以下内容,那么我可以构建捆绑包:
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'
}
});
(另请注意,上面的 baseUrl
可以简化为 .
而不是 ../app/
。)
我对 r.js
的优化有疑问我有一个项目有多个 requirejs 配置文件
+ 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
时它return一个错误
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
在构建捆绑包时根本无法处理多个 requirejs.config
调用。 我从未见过任何文档或发布报告,或与此相矛盾的工作示例。 (RequireJS 会让你多次调用 requirejs.config
,并在 运行 时间 组合传递的配置 但这与具有 r.js
过程不同多次调用 requirejs.config
.
您必须将对 requirejs.config
的所有调用组合成一个您使用 mainConfigFile
指向 r.js
的调用。
我在我的机器上重新创建了您的设置,但遇到了与您相同的错误。如果我将 app/main.js
中的配置修改为以下内容,那么我可以构建捆绑包:
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'
}
});
(另请注意,上面的 baseUrl
可以简化为 .
而不是 ../app/
。)