我可以复制“node_modules”目录到其他机器,而不必每次都运行“npm install”吗?
两台Linux机器。 两者都是CentOS x64,但版本不同。
假设我在机器#1上运行npm install
,将包括node_modules
目录在内的整个应用程序复制到机器#2并在那里运行。 是否支持? 或者,总是build议在每台机器上运行npm install
?
我成功地在Centos 6 x64机器上执行npm install
,将包括node_modules
的应用程序复制到Centos 7 x64机器上。 应用程序似乎运行良好。 即使它对我有用,这样做通常是安全的吗?
总是build议在每台机器上运行npm install?
可能是这样,因为这是一个包pipe理器的目的之一,就是在机器间轻松地维护你的包。
话虽如此,没有什么是阻止你直接复制node_modules
别的地方。 事实上,如果您想将项目添加到脱机的机器,这可能是必要的。 从技术上讲,你甚至可以将它们复制到一台甚至没有npm
的机器上。 从节点的angular度来看,如果node_modules
存在,它将find它的依赖关系。
这通常是安全的吗?
那么,安全问题并不是在复制node_modules
而是在重新安装它们。 更重要的问题是了解所有依赖关系的安全影响,并在确认安全性时将其locking到package.json
特定版本。 这样你就可以确保每一个npm install
安装相同的代码*(假设npm
本身没有做一些奇怪的事情,但这总是一个信任问题)
*即使您在package.json
文件中修复了版本,仍然有可能发生中断。 例如,依赖于某个特定版本的项目依赖于另一个具有版本范围的包。 这意味着从技术上来说,这些其他软件包的作者可以添加不再支持您的节点版本的代码,或者引入错误或修复您实际依赖的错误等。
如果您知道您的依赖关系是安全的,并且您100%希望以这种方式离开它们,请复制node_modules
文件夹并断开与Internet的连接:)
这里有一个很好的相关阅读 。