【问题标题】:How to include minified library version in RequireJS optimization如何在 RequireJS 优化中包含缩小的库版本
【发布时间】: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


    【解决方案1】:

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

    Loading min.js files Generated by TypeScript with Require

    不要让标题气馁。打字稿不是那里回答的问题的核心问题。不幸的是,讨论表明 RequireJS 优化器可能是获得体面缩小工作的唯一方法,因为它似乎无法正确选择替代路径。

    【讨论】:

      【解决方案2】:

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

      optimize : "uglify2"
      

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

      【讨论】:

      • 一个原因可能是 RequireJS 优化器是一个构建时优化器,它自己进行缩小。发布者声明的愿望是使用现有的 3rd 方库的缩小版本。就个人而言,我发现整个 RequireJS 的优化方法非常规范和过分,尤其是。当大多数项目已经提供其文件的缩小版本时。
      • @shahzbot 我完全同意
      猜你喜欢
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 2013-11-29
      相关资源
      最近更新 更多