我正在将计算机从较旧的Linux版本迁移到较新的版本。我们有一些节点项目似乎很难移植到新的所需设置中。
在旧机器上,可以通过源代码控制node_modules来运行package.json的构建脚本,而不会出现问题。
我们不再使用该方法,因为它的可伸缩性不是很高,因为我们希望确保可以轻松地一次为所有用户升级所有软件包,而不必麻烦地放置数百个子文件夹(来自node_modules)连同各种资源。
您是否遇到过此类问题?如果遇到这种情况,您是如何处理的?
我们可以以某种方式使用全局node_modules来避免每个项目使用多个node_modules吗?
谢谢!
答案 0 :(得分:1)
我们可以以某种方式使用全局node_modules来避免每个项目使用多个node_modules吗?
(至少)存在三种可能性。在这里,按照我建议使用它们的顺序:
如果Node.js在应用程序/模块自己的node_modules
目录中找不到包,它将先检入父目录(../node_modules
),然后检入该目录的父目录({ {1}})。因此,如果所有项目都具有共享的父目录,则可以将依赖项放在../../node_modules
目录中。请参阅Node.js文档中的"Loading from node_modules folders"。
第二个选项是将node_modules
环境变量设置为您希望项目搜索其他地方找不到的模块的目录。请参阅Node.js文档中的"Loading from the global folders"。
最后,这是传统行为,但是Node.js也会在放弃之前在其他三个位置进行搜索,因此您也可以使用其中之一:NODE_PATH
,$HOME/.node_modules
和$HOME/.node_libraries
。再次参见"Loading from the global folders"。
所有说明,请注意,文档还正确地说:“强烈建议将依赖项放置在本地node_modules文件夹中。这些依赖项将更快,更可靠地加载。”
如果必须执行此操作,我将使用上面的第一个选项,并将$PREFIX/lib/node
文件夹尽可能地放在目录层次结构中。