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

标签 javascript build requirejs r.js optimization

我的情况如下:

  • 我的项目基于 RequireJS。
  • 我正在使用 RequireJS Optimizer 创建单个 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 执行会将“thirdParty”的路径覆盖为最小化,因此将被所有模块使用。

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

最佳答案

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

Loading min.js files Generated by TypeScript with Require

不要让标题让你泄气。 typescript 不是那里回答的问题的核心问题。不幸的是,讨论表明 RequireJS 优化器可能是实现适当缩小的唯一方法,因为它似乎无法正确选择备用路径。

关于javascript - 如何在 RequireJS 优化中包含缩小的库版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20777332/

相关文章:

javascript - 为什么当 javascript 命名空间时我们说 var myName = myName || {}

java - JSoup 解析 <script> 标签

javascript - 当选定标签具有禁用属性时,我可以在它们上触发事件吗?

c++ - 跨平台构建库而不运行所有平台

build - EA 在 Java 版本中代表什么?

javascript - 使用 require.js 加载非 amd 模块

JavaScript 在读取 XML 中的自闭合标记时中断

java - 当我们更新操作系统时,Android 的 Build 类会受到影响吗?

javascript - 使用 requirejs 时访问全局对象

javascript - 如何在构建期间不创建 404/不匹配匿名模块的情况下在 amd 兼容性检查中声明依赖项?