切换主题
从 npm 中央仓库下载tgz包的方法
标签
npm
私服
字数
390 字
阅读时间
2 分钟
单个包下载
使用以下命令获取下载URL:
bash
npm view [package_name] dist.tarball
也可以直接下载tgz包:
bash
npm pack [package_name]
批量下载包及其依赖
方法一: 使用 package-lock.json
- 先生成 package-lock.json:
bash
npm install --package-lock-only
解析 package-lock.json 获取依赖列表
使用 npm pack 批量下载
方法二: 使用 npm view 递归获取
- 使用 npm view 获取直接依赖:
bash
npm view [package_name] dependencies --json
递归获取所有依赖的依赖
去重后使用 npm pack 下载
上传到私有仓库
方法一: npm publish
- 配置 npm registry
bash
npm config set registry http://私服地址
- 登录私服
bash
npm login
- 发布包
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"
最佳实践
- 先获取私服已有包列表避免重复上传
- 使用脚本批量处理
- 建议使用 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() {
// ... 上传逻辑
}