【发布时间】:2021-09-16 13:02:34
【问题描述】:
我的代码使用核心 Node 模块,例如 fs 和 path。是否有任何理由将它们包含在package.json (npm i fs path) 中? npm 路径的README 表示“这是发布到 NPM 注册表的 NodeJS 'path' 模块的精确副本。”为什么这些软件包每周有大约一百万次下载?
【问题讨论】:
我的代码使用核心 Node 模块,例如 fs 和 path。是否有任何理由将它们包含在package.json (npm i fs path) 中? npm 路径的README 表示“这是发布到 NPM 注册表的 NodeJS 'path' 模块的精确副本。”为什么这些软件包每周有大约一百万次下载?
【问题讨论】:
是否有任何理由将它们包含在
package.json(npm i fs path) 中?
否。自 Node 发布以来,这些包已作为每个主要 Node 版本的一部分捆绑在一起。它们不需要单独安装或包含在您的package.json 文件中。
为什么这些软件包每周有大约一百万次下载?
我想你真的只能推测,但很可能有非零数量的新人不知道这些模块可作为 Node 核心的一部分并正在运行 npm install fs 等,遵循与某些人相同的想法他们正在审查的文档或教程。
谨慎的做法是确保不仅在包含这些模块的情况下它们按预期工作,而且还要防止不道德的行为者域名抢注和启用dependency confusion vulnerabilities。 npm page for the fs module 甚至明确说明了他们选择发布它的原因(强调我的):
这个包名当前没有被使用,但以前被另一个包占用。 为了避免恶意使用,npm 会挂在包名上,但很松散,如果你想要的话,我们可能会给你。
【讨论】:
正如similar question 中提到的,你不需要安装它,所以你不需要在package.json 中指定它。 fs、path 也是 Node.js 的核心模块。
对不起,我的英语不好。祝你有美好的一天!
【讨论】: