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

我的客户有一个非常特殊的要求。 我们一直在使用npm来安装karma和phantomjs。 一切工作正常,直到我们必须将所有的东西从云端迁移到内部基础设施。 现在事情变得复杂了。 内部基础设施没有互联网访问,所以我们不能使用npm来解决依赖关系了。 我们尝试将node_modules文件夹开发机器移动到内部基础架构机器上。 它没有工作,因为开发机器是OSX和Windows,服务器是Centos和phantomjs是OS特定的,但npm是能够锻炼的版本。 我们有什么select来解决依赖关系? 我只知道node_modules的名字是不能改变的。 我正在考虑检查特定于操作系统的node_modules,但这是行不通的,因为npm只查找node_modules文件夹。

我得到了同样的错误,因为这个线程PhantomJS崩溃 – 退出代码126当我试图从CentOS中使用OSX的node_modules。

在第一个OS(如OSX)上安装所有的依赖关系,假设你有所有的依赖关系的package.json。

npm安装

将npm_modules重命名为npm_modules_mac

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

在目标操作系统上,将以上创build的文件夹移动到您的应用程序文件夹中,创build符号链接(node_modules),该链接将指向相应的文件夹(OSX中的npm_modules – > npm_modules_mac)

你为什么不只是托pipe你的私人registry? 您可以将registry存储在内部基础结构中。

事实上的registry是@isaacs自己的npmjs.org。 这可以在这里find:

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

它确实需要使用CouchDB作为数据库,但是,这可能是艰巨的。 有替代scheme可以让你做到这一点。 例如,reggie:

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