node.js - 能不能把 "node_modules"目录复制到别的机器上,不用每次都运行 "npm install"?

标签 node.js npm

两台 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/

相关文章:

javascript - 如何修复 "TypeError: req.next is not a function"错误?

google-chrome - 是否可以在 Chrome 扩展中使用 npm 包?

github - 将 GitHub 存储库移动到组织时处理 NPM 和 Bower 注册表项

node.js - 如何使用 NPM 打包部署?

javascript - 无法根据连接表字段对 sequelize 结果进行排序

node.js - 无法从文件读取并将相同的内容写入nodejs中的另一个文件

node.js - 使用 mongoose 在数组字段的对象中查找匹配项

node.js - 如何记住客户的数据?

node.js - cross-env 命令在 nodejs 中如何工作?

node.js - 安装时出现 NPM 错误