Node.JS 如何处理重复的传递依赖?
How does Node.JS handle duplicate transitive dependencies?
如果我的问题很幼稚,我深表歉意。坦白说,我对 Node.JS 和 JavaScript 总体来说还比较陌生。我希望有人可以阐明 Node.JS 如何处理重复的、可能传递的依赖项?甚至不考虑全局命名空间或任何类型的冲突,或同一模块的不同版本(例如,您应用程序中其他地方的 v0.1 与 v0.2),但更多的是尽可能聪明和高效。例如:
- Node 是否有可能在占用空间方面足够聪明,不会在您的模块文件夹中有多个完全相同版本的库副本?每个需要的版本都有 1 个副本,带有符号链接或类似的东西指向依赖于该模块版本的每个模块的此代码?
- 关于在运行时将重复模块加载到内存方面呢?如果模块 x 的 v0.1 已经加载到内存中,如果出现其他需要该模块相同版本的依赖模块,代码是否会重新加载到内存中,或者 Node 是否足够聪明,可以看到代码是已经加载并重新使用了吗? Node 在这方面的沙盒化程度如何?
谢谢!
Node.js没有版本的概念。 require()
函数将其参数解析为 .js
文件的完整路径,并按文件名缓存它们。
您可能会问 npm 如何安装模块;这取决于您安装它们的顺序。
你可以运行npm dedup
在这里做点好事。
如果我的问题很幼稚,我深表歉意。坦白说,我对 Node.JS 和 JavaScript 总体来说还比较陌生。我希望有人可以阐明 Node.JS 如何处理重复的、可能传递的依赖项?甚至不考虑全局命名空间或任何类型的冲突,或同一模块的不同版本(例如,您应用程序中其他地方的 v0.1 与 v0.2),但更多的是尽可能聪明和高效。例如:
- Node 是否有可能在占用空间方面足够聪明,不会在您的模块文件夹中有多个完全相同版本的库副本?每个需要的版本都有 1 个副本,带有符号链接或类似的东西指向依赖于该模块版本的每个模块的此代码?
- 关于在运行时将重复模块加载到内存方面呢?如果模块 x 的 v0.1 已经加载到内存中,如果出现其他需要该模块相同版本的依赖模块,代码是否会重新加载到内存中,或者 Node 是否足够聪明,可以看到代码是已经加载并重新使用了吗? Node 在这方面的沙盒化程度如何?
谢谢!
Node.js没有版本的概念。 require()
函数将其参数解析为 .js
文件的完整路径,并按文件名缓存它们。
您可能会问 npm 如何安装模块;这取决于您安装它们的顺序。
你可以运行npm dedup
在这里做点好事。