【发布时间】:2013-12-25 22:37:49
【问题描述】:
我的情况如下:
- 我的项目基于 RequireJS。
- 我正在使用 RequireJS 优化器来创建单个 JS 文件。
- 某些模块使用某个第三方库作为依赖项。
- 第三方未包含在优化文件中(libName:空 在构建配置中)。
- RequireJS 是通过出现的 var require = {} 对象配置的 在每一页上,就在 RequireJS 的正上方。该对象定义了一个路径 除其他外,库的未缩小版本。
我想要实现的目标: 在开发和生产中使用相同的配置文件(require={} 对象包含在每个页面上的标记中)。在开发过程中,我希望模块使用第三方的 UNMINIFIED 版本。但是,优化后,我希望所有模块都使用该第三方的缩小版本。
我确实在理论上想到了一个解决方案,但它似乎有点混乱,我希望存在更清洁的解决方案:
让运行时配置指向未缩小的版本
var require = {
paths:{
'thirdParty':'lib/thirdParty'
}
}
创建一个执行的模块(我们称之为“PathRewrite”模块):
requirejs.config({
paths:{
'thirdParty':'lib/thirdParty.min'
}
})
在运行时配置中,将“PathRewrite”的路径定义为空
var require = {
paths:{
'thirdParty':'lib/thirdParty',
'PathRewrite':'empty'
}
}
在构建配置文件中定义“PathRewrite”的真实路径,以便将其包含在“主”文件中(构建后的连接文件)。
包含“PathRewrite”作为首先执行的模块的依赖项。
我希望会发生的是,在开发过程中,当不使用优化文件时,不会使用 PathRewrite,因此将使用运行时配置中未缩小的第三方的路径。 当项目优化后,PathRewrite 将被包含并执行。根据 RequireJS 文档,可以运行 RequireJS 配置两次,配置将被附加/覆盖。 PathRewrite 执行将覆盖到“第三方”的路径以缩小,因此将被所有模块使用。
希望我已经提供了足够的信息。我很高兴听到其他方法来完成这项工作。提前致谢。
【问题讨论】:
标签: javascript build requirejs r.js optimization