You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建含包及依赖的NPM仓库?离线系统NPM包空投方案求助

嗨,我之前也碰到过一模一样的离线环境部署NPM包的问题,下面给你两套亲测有效的方案,分别解决你的两个需求:

一、创建包含指定包及其依赖项的本地NPM仓库

如果你需要一个可长期使用的本地仓库(比如供多台离线机器共享),推荐用轻量级私有仓库工具verdaccio来搭建,步骤如下:

  1. 在联网机器上准备依赖包

    • 创建临时目录并进入:mkdir temp-repo && cd temp-repo
    • 初始化项目:npm init -y
    • 安装目标包(替换成你需要的包名,比如react):npm install react --save
    • 收集所有依赖的tarball文件到单独目录:
      # macOS/Linux
      mkdir ../local-packages && find node_modules -name "*.tgz" -exec cp {} ../local-packages/ \;
      # Windows PowerShell
      mkdir ../local-packages; Get-ChildItem node_modules -Recurse -Filter *.tgz | Copy-Item -Destination ../local-packages
      
  2. 搭建并填充本地仓库

    • 全局安装verdaccio:npm install -g verdaccio
    • 启动仓库:直接运行verdaccio,默认会在本地4873端口启动,控制台会显示存储目录路径
    • 配置npm指向本地仓库:npm set registry http://localhost:4873/
    • 上传所有tarball到仓库:
      cd ../local-packages
      for pkg in *.tgz; do npm publish $pkg --registry http://localhost:4873/; done
      
  3. 迁移到离线环境

    • 打包verdaccio的存储目录(启动时控制台显示的路径)
    • 传到离线机器后,安装verdaccio并替换默认存储目录,启动即可使用这个包含所有依赖的本地仓库。
二、离线快速空投NPM包(无需搭建仓库)

如果只是临时给单台离线机器部署指定包,用缓存+锁文件的方案最快,步骤超简单:

  1. 在联网机器上缓存所有依赖

    • 清理旧缓存(可选,减少冗余):npm cache clean --force
    • 创建临时项目:mkdir offline-pkg && cd offline-pkg && npm init -y
    • 安装目标包,让npm自动缓存所有依赖:npm install your-target-package --save(替换为你的目标包名)
  2. 打包缓存与配置文件

    • 找到npm缓存目录:
      • Windows:%AppData%\npm-cache
      • macOS/Linux:~/.npm
    • 打包缓存目录、package.json和package-lock.json:
      # macOS/Linux
      tar -czf npm-offline-bundle.tar.gz ~/.npm package.json package-lock.json
      # Windows PowerShell
      Compress-Archive -Path $env:APPDATA\npm-cache, package.json, package-lock.json -DestinationPath npm-offline-bundle.zip
      
  3. 在离线系统完成安装

    • 把打包文件传到离线机器,解压缓存目录到对应系统的npm缓存位置
    • 复制package.json和package-lock.json到你的离线项目目录
    • 运行npm ci --offline,npm会直接从缓存读取所有依赖完成安装,全程无需联网

重要注意事项

  • 尽量保证联网机器和离线系统的Node.js版本、操作系统一致,避免二进制依赖(比如node-sass、sharp)出现兼容问题
  • 如果需要安装私有包,记得在联网机器上先登录对应的私有仓库,确保依赖被缓存
  • 优先用npm ci --offline而非npm install,前者会严格按照package-lock.json安装,避免版本不一致问题

内容的提问来源于stack exchange,提问作者user1854350

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:24:22