如何在RequireJS优化中包含缩小的库版本

时间:2013-12-25 22:37:50

标签: javascript build requirejs r.js optimization

我的情况如下:

  • 我的项目基于RequireJS。
  • 我正在使用RequireJS Optimizer来创建一个JS文件。
  • 某些模块使用某个第三方库作为依赖项。
  • 第三方未包含在优化文件中(libName:empty 在构建配置中。)。
  • 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”的真实路径,以便将其包含在“main”文件中(构建后的连接文件)。

将“PathRewrite”包含为首先执行的模块的依赖项。

我希望会发生的是,在开发期间,当不使用优化文件时,将不使用PathRewrite,因此将使用运行时配置中未分化的第三方的路径。 优化项目时,将包含并执行PathRewrite。根据RequireJS文档,可以运行两次RequireJS配置,并且将附加/覆盖配置。 PathRewrite执行将覆盖“thirdParty”的路径缩小,因此将被所有模块使用。

希望我提供了足够的信息。我很高兴听到其他方法来完成这项工作。提前谢谢。

2 个答案:

答案 0 :(得分:1)

在这个答案中似乎已经探讨了这个主题:

Loading min.js files Generated by TypeScript with Require

不要让标题劝阻你。打字稿不是那里回答问题的核心问题。不幸的是,讨论表明,RequireJS优化器可能是实现正常缩小工作的唯一方法,因为它似乎无法正确选择备用路径。

答案 1 :(得分:0)

为什么不想使用内置的RequireJs优化器?您可以只包含this option

optimize : "uglify2"

连接后,所有和第三方代码都将缩小。在这种情况下,您不需要使用缩小版本的第三方库。