【问题标题】:r.js-optimising a directory but skipping included/concatenated filesr.js-优化目录但跳过包含/连接的文件
【发布时间】:2014-02-12 17:19:37
【问题描述】:

我有一个不错的 require.js + r.js 设置。现在,我似乎在这两者之间有一个“一个或另一个”的选择:

  • 使用 name + out 选项只创建一个 js 文件,没有别的
  • 使用 appDir + dir 选项将所有文件从 appDir 复制到目录

第二个选项是我目前使用的。然而,这将复制和缩小许多实际包含在我编译的 main.js 中的文件。这些文件永远不会真正加载。

r.js 是否有一些选项可以跳过属于缩小过程的文件?

插图

假设我在appDir 中有这些文件:

index.html
main.js
lib/
  - libA.js (dependency of main, will be loaded by require.js)
  - libB.js (dependency of main, will be loaded by require.js)
  - libC.js (loaded any other way)
img/
  - imgA.png
  - imgB.png

第一个选项(name+out)只会产生一个巨大的丑化main.js

main.js

第二个选项 (appDir+dir) 将在 dir/ 中创建类似这样的内容

index.html
main.js (uglified)
lib/
  - libA.js (uglified and will never be loaded)
  - libB.js (uglified and will never be loaded)
  - libC.js (uglified and used)
img/
  - imgA.png
  - imgB.png

我真正喜欢的是这样的:

index.html
main.js
lib/
  - libC.js (no libA.js / libB.js)
img/
  - imgA.png
  - imgB.png

(所以无论如何都没有包含在 main.js 中的库)。

【问题讨论】:

    标签: javascript requirejs r.js


    【解决方案1】:

    在我看来removeCombined 是您想要的选项。从列出all options的文件中:

    //If set to true, any files that were combined into a build bundle will be
    //removed from the output folder.
    removeCombined: false,
    

    那里的false 值显示默认值。

    顺便说一句,确实值得浏览这个文件并查看所有选项,因为引入优化器的page 无论如何都没有涵盖所有选项。最近又翻了一遍,发现最新版本的 RequireJS 中增加了一个选项。

    【讨论】:

    • 非常感谢您提供的链接。我不知道它存在,但现在我知道我在寻找什么,我发现它实际上在docs 的§14 中提到。第一次快速测试似乎表明这不能作为命令行参数提供(r.jd -o removeCombined=true 不起作用,但将其放入 build.js 确实 工作)非常感谢!
    • 现在它就像我想要的那样工作:node tools/r.js -o name=main removeCombined=true useStrict=true appDir="www" dir="www-release" mainConfigFile="../www/main.js"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2013-03-21
    相关资源
    最近更新 更多