我的客户有一个非常特殊的要求。我们一直在使用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相同的错误。
答案 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: