两台 Linux 机器。两者都是 CentOS x64,但版本不同。
假设我在机器 #1 上运行 npm install
,将我的整个应用程序(包括 node_modules
目录)复制到机器 #2 并在那里运行。支持吗?或者,总是建议在每台机器上运行 npm install
?
我在 Centos 6 x64 机器上成功地执行了 npm install
,将包含 node_modules
的应用复制到 Centos 7 x64 机器上。该应用程序似乎运行良好。尽管它对我有用,但这样做通常安全吗?
最佳答案
Is it always advised to run npm install on each machine?
可能是这样,因为这是包管理器的目的之一,即跨机器轻松维护您的包。
也就是说,没有什么可以阻止您直接将 node_modules
复制到其他地方。事实上,如果您想将项目添加到离线的机器上,这可能是必要的。从技术上讲,您甚至可以将它们复制到甚至没有 npm
的机器上。从 Node 的角度来看,如果 node_modules
存在,它将找到它的依赖项。
Is this generally safe to do so?
好吧,安全问题并不真正在于复制 node_modules
还是重新安装它们。更重要的问题是了解所有依赖项的安全隐患,并在确认它们安全时将它们锁定到 package.json
中的特定版本。这样你就可以确保每个 npm install
安装相同的代码*(假设 npm
本身没有做一些奇怪的事情,但这始终是一个信任问题)
*即使您修复了 package.json
文件中的版本,仍然可能会发生中断。例如,您所依赖的具有特定版本的项目的依赖项本身依赖于具有版本范围的另一个包。
这意味着,从技术上讲,其他软件包的作者可以添加不再支持您的 Node 版本的代码,或者引入错误或修复您实际依赖的错误等。
如果您知道您的依赖项是安全的并且您 100% 想保留它们,请复制 node_modules
文件夹并断开与 Internet 的连接:)
这是关于 general state of software dependencies today 的一个很好的相关读物和 another one with more NPM details .
关于node.js - 能不能把 "node_modules"目录复制到别的机器上,不用每次都运行 "npm install"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43751039/