Nodejs 离线安装全局模块 应该怎么做

Nodejs 离线安装全局模块 应该怎么做

我想要在离线环境下安装个pm2应该怎么做
在有网的环境下 pm2模块安装在/usr/local/lib下,我直接copy到离线环境的/usr/local/lib下 然后软连接要怎么建立 还是我直接从有网环境下/usr/local/bin下考一个pm2到离线环境下就可以了 如果我是直接从github上下载的模块文件 这样的应该怎么安装到自己的工程里

4 回复

要在离线环境下安装全局模块如 pm2,你需要预先在有网络连接的环境中准备好所有依赖项,然后将这些文件复制到目标机器上。以下是具体步骤:

步骤1: 在有网络的环境中准备PM2及其依赖

首先,在有网络连接的环境中安装 pm2 并导出其所有依赖项。

# 安装pm2
npm install -g pm2

# 导出已安装的全局模块列表(包括pm2)
npm list -g --depth=0 > global_modules.txt

global_modules.txt 文件会列出所有全局安装的模块及它们的版本。

步骤2: 复制全局模块到离线环境

接下来,将上述生成的 global_modules.txt 文件和全局模块目录一起拷贝到离线环境。

# 将全局模块目录(通常是~/.npm-global/lib/node_modules 或 /usr/local/lib/node_modules)拷贝到离线环境的相应位置
cp -r ~/.npm-global/lib/node_modules /path/to/offline-env/npm-global/

确保 /path/to/offline-env/npm-global/ 是你希望在离线环境中存放全局模块的位置。

步骤3: 在离线环境中安装全局模块

最后,在离线环境中,使用之前导出的模块列表来安装这些模块。

# 移动到包含global_modules.txt的目录
cd /path/to/offline-env/

# 使用npm安装全局模块
npm install -g --global-style --prefix /path/to/offline-env/npm-global/ $(cat global_modules.txt | cut -d ' ' -f 1)

注意:--global-style--prefix 参数确保了模块被安装到指定的全局目录中。

总结

这种方法通过先在联网环境中准备并打包所需模块,再将其传输到离线环境来实现离线安装。这样可以避免在没有网络的情况下单独手动安装每个依赖项,简化了流程。对于其他模块的离线安装,你可以采用类似的方法,只需调整路径和模块名称即可。


npm link 哈

在离线环境中安装Node.js全局模块(如pm2)通常需要一些额外的步骤。以下是详细的步骤和示例:

在有网络的机器上操作

  1. 查找并下载模块 使用以下命令找到你需要的模块,并将其下载到本地文件系统:

    npm view pm2 version
    npm pack pm2
    

    上述命令会输出当前版本号,并将pm2包下载为.tgz文件。

  2. 传输文件 将下载的.tgz文件传输到你的离线机器上。你可以使用USB驱动器或其他存储介质进行传输。

在离线机器上操作

  1. 安装模块 使用npm的install命令来安装下载好的.tgz文件:

    cd /path/to/your/offline/machine
    npm install path/to/pm2-<version>.tgz --global
    
  2. 创建软链接(可选) 如果你需要创建软链接,确保路径正确:

    sudo ln -s /usr/local/lib/node_modules/pm2/bin/pm2 /usr/local/bin/pm2
    

示例代码

假设你在有网络的机器上执行了上述步骤,并下载了一个名为pm2-v4.5.0.tgz的文件,你可以这样在离线机器上安装它:

# 假设文件位于USB驱动器上
sudo npm install /media/usb-drive/pm2-v4.5.0.tgz --global

随后,你可以通过运行pm2命令来验证是否安装成功。

总结

离线安装Node.js全局模块需要预先下载所需模块并传输到目标机器,然后在目标机器上使用npm进行安装。通过上述方法,你可以顺利地在没有网络连接的情况下安装pm2或其他任何Node.js模块。

回到顶部