如何移动npm node_modules文件夹跨平台?

时间:2013-10-09 23:06:39

标签: node.js operating-system continuous-integration npm

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

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

2 个答案:

答案 0 :(得分:3)

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

  

npm install

将创建的npm_modules重命名为 npm_modules_mac

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

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

答案 1 :(得分:0)

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

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

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

但确实需要使用CouchDB作为数据库,这可能令人生畏。有一些替代方案可以让你这样做。例如,reggie:

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