【问题标题】:Dead code removal for multiple bundles?多个捆绑包的死代码删除?
【发布时间】:2015-10-12 09:25:28
【问题描述】:

我正在尝试解决的问题:

  • 我有多个捆绑的 JS 文件:head.jsfooter.jssome-other-page.js
  • 如果我将所有这些都放在一个文件中,我可以轻松检查死代码并将其剥离
  • 我希望仍然能够从每个较小的捆绑包中去除站点范围内的死代码。

愿意重新构建我的构建来做到这一点。有什么想法吗?

【问题讨论】:

  • 您能更具体地说明“死代码”是什么意思吗?你的意思是有一部分代码没有被使用?
  • @JohnSkoumbourdis -- 是的。假设我包含 jQuery 和一个只执行 $('#div').hide() 的脚本—— 80% 的 jQuery 可以被剥离,并且各种工具可以删除那些死代码。现在假设我在我的head.js 脚本中包含了 jQuery,并且在页脚中包含了愚蠢的“隐藏”语句。我不能再剥离死代码了。

标签: javascript gulp bundle browserify uglifyjs


【解决方案1】:

检查死代码的一个好方法是对您的项目进行单元测试,然后检查代码覆盖率,看看哪个部分从未使用过。有关代码覆盖率的更多信息,您可以查看:https://www.jetbrains.com/webstorm/help/monitoring-code-coverage-for-javascript.html

如果您不使用单元测试,这可能还需要重新处理您的代码,但这是一种分析代码以了解代码覆盖率并查看某些部分从未使用过的非常好的方法(因此将它们从你的代码)

对于不属于你的代码(例如 jQuery),你可以使用 grunt 构建来删除你不使用的函数/方法。关于如何做到这一点的一篇非常有趣的文章是:http://developer.telerik.com/featured/trimming-jquery-grunt。例如,如果你没有使用 jQuery 的 ajax,你可以简单地这样做:grunt custom:-ajax。已知库具有此功能,因此您可以随时随地构建它。

【讨论】:

  • 我问的不是我自己的代码,而是库代码。我可以剥离我不使用的库代码,但前提是它输出到单个包。
  • 感谢您花时间回答,但这根本不能回答我的问题。正如我在问题中所说,我知道如何为单个捆绑包执行此操作,这不是问题。问题是如何跨多个包删除死代码。
  • 也许然后通过使用 requireJS 将解决这个问题?我没有具体的解决方案可以给你。只是说......显而易见。也许你还没有考虑过使用 requireJS。
【解决方案2】:

嗯,

好主意,但为了便于理解,最好将其分开,但如果您想合并,请使用 switch

【讨论】:

  • 我不知道你想说什么。
猜你喜欢
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多