【问题标题】:Is there any way to reorganize node_modules?有没有办法重新组织node_modules?
【发布时间】:2014-02-11 00:50:47
【问题描述】:

有大而深的 node_modules 目录。并且有许多具有相同模块的子文件夹位于不同的子目录中。有时模块的版本相同,有时小版本有差异。

有没有一种工具可以重组 node_modules 以删除重复项,将它们放在根目录中,并且不知何故还有一堆模块来优化它?

【问题讨论】:

  • 只是好奇:你有没有发现有些模块是重复的,包括版本?我想知道你有多少模块——一些统计数据会很有趣。
  • 你看过npm dedupe吗? npmjs.org/doc/cli/npm-dedupe.html
  • @john-zwinck npm list | wc-l 展示了大约 3000 个模块
  • 你有 3000 个模块?这些依赖项是针对单个项目、多个项目还是整个系统?我也想知道有多少骗子。
  • 鉴于 node_modules/ 在 .gitignore 中,并且该节点在加载模块后缓存模块,即它不会在每次其他模块需要它作为依赖项时重新加载它,是否有好处除了节省磁盘空间之外还进行重组?

标签: javascript node.js npm


【解决方案1】:

NPM 层次结构实际上相当复杂,他们已经做了很多工作来优化它。你在这里失去的最多的是一点磁盘空间。如果您确实需要为您的应用修剪包结构,那么您可以查看npm dedupe,它直接内置于 npm 中,并且完全符合您的要求(尽可能合并重复项)。

我知道很多人反对签入 node_modules 目录,但在生产应用程序中,我们发现签入 node_modules 可以更轻松地确定应用程序中的致命更改。当然,您通常知道您的应用程序在最后一个 npm update 之后就崩溃了,但是如果您的应用程序像我们的应用程序一样大,那么这根本不足以快速有效地解决问题。所以在大型生产应用程序中(即不发布到 NPM 的库)我使用npm dedupe 在签入之前简化包结构。

如果您正在编写其他人将使用的代码(通过 NPM 或其他方式),那么签入 node_modules 并不是最好的主意,您应该通过将 node_modules 添加到版本控制系统的忽略列表中来避免这样做。您还应该确保package.json 中的依赖项是具有尽可能少范围的特定版本号(请不要在您的生产应用程序中使用星号代替版本号:/)。

如果你遵循这些基本模式,那么你可以忘记 node_modules 目录,让 npm 来照顾你。

【讨论】:

    猜你喜欢
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2013-02-16
    相关资源
    最近更新 更多