我可以将"node_modules"目录复制到其他计算机而不必每次都运行"npm install"吗?

Cra*_*ide 3 node.js npm

两台Linux机器.两者都是CentOS x64,但版本不同.

假设我npm install在机器#1上运行,将我的整个应用程序(包括node_modules目录)复制到机器#2并在那里运行.这支持了吗?或者,始终建议npm install在每台机器上运行?

我npm install在Centos 6 x64机器上做得很成功,将应用程序复制node_modules到Centos 7 x64机器上.该应用程序似乎运行良好.即使它对我有用,这通常是安全的吗?

nem*_*035 5

是否总是建议在每台机器上运行npm install?

可能是这样,因为这是包管理器的目的之一,可以在机器上轻松维护包.

话虽如此,没有什么能阻止你直接复制node_modules到其他地方.实际上,在您希望将项目添加到脱机的计算机的情况下,这可能是必要的.从技术上讲,您甚至可以将它们复制到甚至没有的机器上npm.从节点的角度来看,如果node_modules存在,它将找到它的依赖关系.

这样做通常是否安全?

好吧,安全问题并非真正在复制node_modules而不是重新安装.更重要的问题是要了解所有依赖项的安全隐患,并在确认它们是安全的时,将它们锁定到特定版本中package.json.这样你就可以确保每个npm install安装相同的代码*(假设npm它本身没有做一些时髦的东西,但这总是一个信任问题)

*即使您修复了package.json文件中的版本,仍然可能发生中断.例如,您依赖的项目与特定版本本身的依赖关系取决于具有版本范围的另一个包.这意味着,从技术上讲,这些其他软件包的作者可以添加不再支持您的节点版本的代码,或者引入错误或修复您实际依赖的错误等.

如果您知道您的依赖项是安全的并且您100%想要保留它们,请复制该node_modules文件夹并断开与Internet的连接:)

这是一个很好的相关阅读.