Skip to content

从 npm 中央仓库下载tgz包的方法

标签
npm
私服
字数
390 字
阅读时间
2 分钟

单个包下载

使用以下命令获取下载URL:

bash
npm view [package_name] dist.tarball

也可以直接下载tgz包:

bash
npm pack [package_name]

批量下载包及其依赖

方法一: 使用 package-lock.json

  1. 先生成 package-lock.json:
bash
npm install --package-lock-only
  1. 解析 package-lock.json 获取依赖列表

  2. 使用 npm pack 批量下载

方法二: 使用 npm view 递归获取

  1. 使用 npm view 获取直接依赖:
bash
npm view [package_name] dependencies --json
  1. 递归获取所有依赖的依赖

  2. 去重后使用 npm pack 下载

上传到私有仓库

方法一: npm publish

  1. 配置 npm registry
bash
npm config set registry http://私服地址
  1. 登录私服
bash
npm login
  1. 发布包
bash
npm publish 包名.tgz

方法二: 使用 Nexus REST API

可以通过 Nexus 提供的 REST API 批量上传:

bash
curl -u 用户名:密码 -X POST "http://nexus地址/service/rest/v1/components?repository=npm仓库名" \
  -H "accept: application/json" \
  -H "Content-Type: multipart/form-data" \
  -F "npm.asset=@包名.tgz;type=application/x-compressed"

最佳实践

  1. 先获取私服已有包列表避免重复上传
  2. 使用脚本批量处理
  3. 建议使用 Nexus API 方式,性能更好

完整示例代码

参考以下脚本实现批量下载和上传:

javascript
// 下载脚本
const shell = require('shelljs');
const JSON5 = require('json5');

function downloadDependencies(packageName) {
  // ... 下载逻辑
}

// 上传脚本
const axios = require('axios');
const fs = require('fs');

async function uploadToNexus() {
  // ... 上传逻辑
}

贡献者

页面历史