无法永久访问Internet的构建机器上的软件包

时间:2020-10-12 21:00:28

标签: node.js npm

我正在将计算机从较旧的Linux版本迁移到较新的版本。我们有一些节点项目似乎很难移植到新的所需设置中。

在旧机器上,可以通过源代码控制node_modules来运行package.json的构建脚本,而不会出现问题。

我们不再使用该方法,因为它的可伸缩性不是很高,因为我们希望确保可以轻松地一次为所有用户升级所有软件包,而不必麻烦地放置数百个子文件夹(来自node_modules)连同各种资源。

您是否遇到过此类问题?如果遇到这种情况,您是如何处理的?

我们可以以某种方式使用全局node_modules来避免每个项目使用多个node_modules吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我们可以以某种方式使用全局node_modules来避免每个项目使用多个node_modules吗?

(至少)存在三种可能性。在这里,按照我建议使用它们的顺序:

  1. 如果Node.js在应用程序/模块自己的node_modules目录中找不到包,它将先检入父目录(../node_modules),然后检入该目录的父目录({ {1}})。因此,如果所有项目都具有共享的父目录,则可以将依赖项放在../../node_modules目录中。请参阅Node.js文档中的"Loading from node_modules folders"

  2. 第二个选项是将node_modules环境变量设置为您希望项目搜索其他地方找不到的模块的目录。请参阅Node.js文档中的"Loading from the global folders"

  3. 最后,这是传统行为,但是Node.js也会在放弃之前在其他三个位置进行搜索,因此您也可以使用其中之一:NODE_PATH$HOME/.node_modules$HOME/.node_libraries。再次参见"Loading from the global folders"

所有说明,请注意,文档还正确地说:“强烈建议将依赖项放置在本地node_modules文件夹中。这些依赖项将更快,更可靠地加载。”

如果必须执行此操作,我将使用上面的第一个选项,并将$PREFIX/lib/node文件夹尽可能地放在目录层次结构中。