我觉得标题可能无法解释:)
设置
假设我有以下结构:
app.js
文件是应用程序的主要引导/入口模块,如下所示:
app01
require.config({});
require([
'app/component1.js'
],
function(component){
// do something with component1
});
app02
require.config({});
require([
'app/component2.js'
],
function(component){
// do something with component2
});
它们都适用于适当的 index.html
文件。
我有一个用于 app01 的 RequireJS 构建配置文件(假设与路径相关的位置正确):
({
appDir: 'apps/app01',
baseUrl: '.',
dir: 'built_apps/app01',
optimize: 'closure',
paths: {
},
modules: [
{
name: 'app'
}
]
})
效果很好。类似的文件(将 app01
替换为 app02
)对于 app02 工作正常。
问题/目标
现在我希望能够为 app01 和 app02 使用相同构建配置文件的应用程序并且最好不要按名称实际列出所有应用程序(因为数量和名称可能会随时间变化)。
基本上我希望(或者更确切地说希望)有这样的东西:
({
appDir: 'apps',
baseUrl: '.',
dir: 'built_apps',
optimize: 'closure',
paths: {
},
modules: [
{
name: 'app*/app' // notice the wildcard
}
]
})
这将运行 built_apps
目录,找到 app*/app 下的所有应用程序并优化它们中的每一个。
我知道我可以使用 Ant 为每个应用程序动态创建这样的构建配置文件,针对它运行构建然后清理,但我宁愿使用 RequireJS 解决方案。
有没有办法用 RequireJS 做这样的事情?
最佳答案
RequireJS 没有内置的通配符配置。不管怎样,您都需要代码来执行此操作。我会观察到您在这里要求的是将通配符转换为模块对象上的某种隐式迭代,类似于 mustache.js。提供其模板。 IMO,在这种情况下,这是一种相当脆弱且有限的方法。
相反,我建议在构建配置中以 JavaScript 编程方式生成 modules
数组。回想一下,构建配置是 JavaScript 而不仅仅是 JSON 数据结构。这为您提供了复杂的脚本功能。
我在 requirejs-rails gem 的构建配置中完成了这种脚本编写.这是一个 example gist这显示了 r.js
在构建时会看到什么。
关于javascript - 在 RequireJS 中使用相同的配置文件在并行目录下优化/构建模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8982133/