4

我的客户有一个非常特殊的要求。我们使用 npm 安装 karma 和 phantomjs 已经有一段时间了。一切正常,直到我们必须将所有内容从云端迁移到内部基础设施。现在事情变得复杂了。内部基础设施无法访问互联网,因此我们不能再使用 npm 来解决依赖关系。我们尝试将 node_modules 文件夹 dev 机器移动到内部基础设施机器。它不起作用,因为开发机器是 OSX 和 Windows,服务器是 Centos,而 phantomjs 是特定于操作系统的,但 npm 能够锻炼版本控制。我们有哪些选择来解决依赖关系?我刚刚得知 node_modules 名称不能更改。我正在考虑签入操作系统特定的 node_modules 但这不起作用,因为 npm 只查找 node_modules 文件夹。

当我试图在 Centos 中使用 OSX 的 node_modules 时,我得到了与这个线程PhantomJS Crash - Exit Code 126相同的错误。

4

2 回答 2

4

在第一个操作系统(即 OSX)上安装所有依赖项,假设您拥有包含所有依赖项的 package.json。

npm 安装

将创建的 npm_modules 重命名为npm_modules_mac

针对不同的操作系统(即 Windows)重复上述步骤,将 node_modules 重命名为 node_modules_windows 之类的名称

在目标操作系统上,将上面创建的文件夹移动到您的应用程序文件夹,创建符号链接 (node_modules),它将指向适当的文件夹 (npm_modules -> 在 OSX 中的 npm_modules_mac)

于 2013-10-10T08:13:43.520 回答
0

你为什么不只托管你的私人注册表?您可以将注册表存储在内部基础架构中。

事实上的注册表是@isaacs 自己的 npmjs.org。这可以在这里找到:

https://github.com/isaacs/npmjs.org

但是,它确实需要使用 CouchDB 作为数据库,这可能会令人生畏。有一些替代方法可以让您执行此操作。例如,雷吉:

https://github.com/mbrevoort/node-reggie

于 2013-10-11T04:14:16.377 回答