我要做的是下载包含所有依赖项的软件包,以便将它们转移到另一台没有Internet连接的计算机并在那里安装它。
所以场景将是:
下载包(至zip / tarball /任意文件)而不安装它。
下载的文件中包含所有依赖项(正确的版本,以及依赖项的依赖项)。
将文件传输到其他计算机。
运行npm install
到文件位置(可选-g
重要)。
使用依赖项安装软件包。
快乐的露营者。
我觉得必须有一个npm命令以这种方式下载和打包(创建)文件。
我一直试图寻找解决方案,但无济于事。
这是我第一次使用节点,所以我很害怕我没有正确研究它,因为缺乏节点/ npm术语的知识。
答案 0 :(得分:2)
将软件包下载到具有互联网的计算机上。
确保您的应用包在其根目录中有一个package.json
文件,其中列出了所有依赖项。您可以通过执行package.json
使npm在npm install dependency-name --save
中保存您的依赖项。 --save
标志将导致npm将依赖项写入应用程序的package.json
文件(如果有)。如果它没有,那么它什么都不做。如果您需要,只需在应用程序目录中运行package.json
,您也可以指示npm为您的应用创建npm init
文件。
从应用程序目录中运行npm install
。这将创建node_modules
目录并安装应用程序package.json
文件中列出的所有依赖项。
现在压缩目录,其中包含node_modules
目录,并安装了所有依赖项。将zip存档转移到另一台计算机。
只需将存档打包到最终目的地即可完成。该应用程序现在需要它,并且已经安装了依赖项。
现在只需使用node app.js
运行应用程序,将“app.js”替换为应用程序主入口点文件的名称。
答案 1 :(得分:1)
只需在包目录中运行npm install
并将其全部存档。假设没有非npm要求你需要肉,两台机器都运行相同版本的节点,不需要做任何事情。所有下载的依赖项都将安装在./node_modules
中。但是归档整个包通常是个好主意,因为开发人员可能已经实现了一些额外的设置例程。
答案 2 :(得分:1)
我只是使用this gist by Jack Gill来完成你所描述的内容 - 将一个包,与所有依赖项捆绑在一起。基本上,脚本的作用是重新编写模块的package.json
文件,将其所有dependencies
移动到bundleDependencies
,然后打包整个文件。将生成的tarball上传到您的服务器,然后npm install
。是一种享受。