离线安装 npm 包的三种方式(备用)

  |   0 评论   |   0 浏览

pm2 是一个进程守护程序,用于启动 node 集群和服务进程出错时自动重启,在生产环境下部署 nodejs 应用一般都会使用到,本文以离线安装 pm2 为例来进行 npm 包离线安装的说明。

使用 npm link

使用 npm link 的方式是最常用的方法,具体做法是在联网机器上下载 pm2 的源码并安装好依赖,拷贝到离线服务器上,最后借助 npm link 将 pm2 链接到全局区域。

首先,将 pm2 的源代码克隆下来:

1git clone https://github.com/Unitech/pm2.git

然后进入到 pm2 项目中,安装好所有的依赖:

1cd pm2
2npm install

将安装好依赖的 pm2 文件夹拷贝到目标服务器上,进入 pm2 目录链接到全局区域:

1cd pm2
2npm link

这种方式最关键的是借助 npm link 完成链接,但 npm link 这条命令本意是设计给开发人员调试用的。但开发人员开发某个全局命令工具的时候,通过将命令从本地工程目录链接到全局,这样调试的时候,可以实时查看本地代码在全局环境下的执行情况。所以,npm link 的项目需要安装所有的依赖,包括 dependencies 以及 devDependencies,而我们如果只是使用而不是开发某个包的话,正常情况下不应该安装 devDependencies。总而言之,这种方式优点是比较简单,缺点是安装了不需要的 devDependencies

使用 npm install <folder>

有什么方法相比于上一种方法更干净呢?答案是 npm install <folder> 直接从文件夹安装。同样以 pm2 为例,首先我们需要准备 pm2 包,可以在联网的机器上执行:

1npm install pm2 --global-style

上面的 --global-style 很关键,表示将 pm2 安装到 node_modules 中一个单独的 pm2 文件夹中,这样我们可以方便地将 pm2 及其所有相关依赖都拷贝出来。也可以使用 npm install pm2 -g 安装到全局的 node_modules,其文件布局是一样。然后,将 pm2 文件拷贝到目标机器上,使用以下命令安装:

1npm install pm2/ -g

这种方式不需要安装多余的 devDependencies,并且不需要克隆 pm2 的源码,比第一种方法更干净环保。

使用 npm bundle

那有什么方法相比于上一种方法更干净呢?答案是使用 npm-bundle 工具将 pm2 的所有依赖打包,然后到目标服务器上使用 npm install <tarball file> 安装。首先在联网机器上安装 npm-bundle 工具:

1npm install -g npm-bundle

然后打包 pm2:

1npm-bundle pm2

上面的命令会生成一个 tgz 的包文件,复制到目标服务器上安装:

1npm install -g ./pm2-3.2.2.tgz

npm-bundle 的本质是借助 npm pack 来实现打包的。npm pack 会打包包本身以及 bundledDependencies 中的依赖,npm-bundle 则是将 pm2 的所有 dependencies 记录到 bundledDependencies,来实现所有依赖的打包。

这种方式不需要安装多余的 devDependencies,并且不需要克隆 pm2 的源码。但需要注意:npm-bundle 对于 scoped packages 的处理有 bug,不能正确地打包,这时考虑采用第一种方式。

使用镜像 CNPM

1、安装 cnpm

1npm i -g cnpm --registry=https://registry.npmmirror.com

2、然后就可以 cnpm 安装依赖包了

1cnpm i -g  vue vue-cli

3、cnpm config ls 查看

会发现里面的 registry 变成了淘宝的镜像(仓库):https://registry.npmmirror.com

使用原始 npm

1、npm 临时使用淘宝镜像安装依赖包

1npm i -g express --registry https://registry.npmmirror.com

2、npm 持久使用淘宝镜像安装依赖包

1npm config set registry https://registry.npmmirror.com
2npm i -g express

注意,不推荐这样,因为把 npm 的镜像完全设为了淘宝的镜像,万一我们有些依赖包只有 npm 原始镜像里面才有,而淘宝里面没有,那就悲剧了。所以分开 npm 和 cnpm 是最好的。

NPM 常用设置

1、查看【npm 与 cnpm 是 2 个不同的】

1npm config ls
2cnpm config ls

2、设置:主要是设置 cacheprefix

1npm cofig set cache "D:\Nodejs\node_cache"
2npm cofig set prefix "D:\Nodejs\node_global"
3
4cnpm cofig set cache "D:\Nodejs\node_cache"
5cnpm cofig set prefix "D:\Nodejs\node_global"

参见:

离线安装 npm 包的几种方法

离线安装 npm 包的几种方法

npm 用法及离线安装方法

npm 淘宝镜像使用

npmmirror 中国镜像站