详解离线安装npm包的几种方法

是这样的,想请教一下,详解离线安装npm包的几种方法
最新回答
承诺算ィ麽

2024-11-27 08:44:07

离线安装npm包可以在没有互联网连接或者需要更好的安全性时派上用场。以下是几种离线安装npm包的方法:
1. **使用离线npm包文件:**
- 在有互联网连接的机器上,使用`npm pack`命令将所需的npm包打包成`.tgz`文件。例如:`npm pack package-name`。
- 将生成的`.tgz`文件复制到目标机器。
- 在目标机器上使用`npm install`命令来安装本地的`.tgz`文件,例如:`npm install package-name-1.0.0.tgz`。
2. **使用本地npm缓存:**
- 在有互联网连接的机器上,使用`npm install`命令来安装所需的npm包,它会默认将包缓存到本地。
- 复制本地npm缓存文件夹(通常是`~/.npm`或`%AppData%/npm-cache`)到目标机器的相同位置。
- 在目标机器上运行`npm install package-name`来安装包,npm会检查缓存并使用缓存的包。
3. **使用离线npm工具:**
- 有一些工具可以帮助你在没有互联网连接的情况下安装npm包,例如`npm-offline`、`cnpm`等。你可以在有互联网连接的机器上使用这些工具来下载依赖包,然后将它们复制到目标机器并运行工具来安装。
4. **使用yarn离线模式:**
- 如果你使用yarn而不是npm,yarn提供了一种离线模式,可以在没有互联网连接时使用。在有互联网连接的机器上使用`yarn`来安装依赖,然后将`~/.yarn-offline-mirror`文件夹复制到目标机器,并在目标机器上运行`yarn install --offline`。
请注意,离线安装npm包可能会涉及到版本兼容性和依赖问题,因此在离线环境中要特别小心。最好在有互联网连接的机器上测试包的安装,然后再将它们复制到离线机器上。此外,确保你获得了所有需要的依赖项和正确的版本,以避免潜在的问题。
梦带我旅行

2024-11-27 08:02:15



这段时间的工作主题就是Linux

下的“离线部署”,包括mongo、mysql、postgresql、nodejs、nginx等软件的离线部署。平常在服务器上借助apt-get就能轻松搞定的事情,在离线环境下就变得异常艰难。上一篇文章讲了使用snap离线安装软件的方式,但对于npm包怎么离线部署,snap是无能为力的。本篇文章就来讲一讲离线安装npm包的几种方法。

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

使用 npm link


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

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

$ git clone https://github.com/Unitech/pm2.git
然后进入到pm2项目中,安装好所有的依赖:

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

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

总而言之,这种方式优点是比较简单,缺点是安装了不需要的 devDependencies ,对于有“洁癖”的人是难以忍受的。

使用 npm install <folder>


那有什么方法相比于上一种方法更干净呢?答案是 npm install <folder> 直接从文件夹安装。

同样以pm2为例,首先我们需要准备pm2包,可以在联网的机器上执行:

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

然后,将pm2文件拷贝到目标机器上,使用以下命令安装:

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