npm publish批量上传到私服
- 2022-06-23 11:06:00
- admin 原创
- 1520
npm publish批量上传到私服
1、首先安装一下
npm install node-tgz-downloader -g
2、然后保存tgz文件(package-lock.json在项目目录下面会有)
download-tgz package-lock package-lock.json
会在目录下面生成arballs文件夹
3、将tarballs文件夹里面的tgz文件copy到另外一个文件里面
xcopy F:\svnworkspace\saber\tarballs\*.tgz /s d:\x2
4、将文件上传到私服
上传到私服之前修改一下权限
新建c.bat
@echo off for /r d:\x2 %%i in (*.tgz) do if exist %%i copy "%%i" d:\x3 /y pause
通过java生成执行命令
package com.hisense.hiedu.cbos.biz;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStream;
public class Cmd {
/**
* 获取每一个上传的 npm 包的路径
* @param path = 根路径,比如项目文件 node_modules
*/
public String getFiles(String path) {
File file = new File(path);
int [] count = {0 , 0}; //0 = 上传成功, 1= 上传失败
if (file.isDirectory()) {
// 获取路径下的所有文件
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
//如果还是文件夹 递归获取里面的文件 文件夹
isPackage(files[i],i);
}
} else {
return "路径输入错误,该路径不是node_modules集合:"+file.getPath();
}
return "上传完毕,成功上传"+ count[0] +"个文件";
}
/**
* 上传npm包
* @param file = 当前npm包的路径,
* @return = 提示信息
*/
public String isPackage(File file,Integer i){
InputStream error = null;
try {
//执行上传npm 包的语句
StringBuffer command = new StringBuffer();
//这里的 cmd /c F: 需要更改,你要上传的npm包在哪个盘你就改成什么
//比如路径在 `D` 盘, 那么改成 command.append("cmd /c D:");
//这里为自己的NPM私服路径
command.append("npm publish -registry=http://10.18.224.74:8081/repository/npm-fe-hosted/"+" "+file.getName());
File errorFile= file.getParentFile();
String message = command.toString();
if(i<300){
fileWrite(errorFile, message, "successLoad0.txt");
}else if(i>=300 && i<600){
fileWrite(errorFile, message, "successLoad1.txt");
}else if(i>=600 && i<900){
fileWrite(errorFile, message, "successLoad2.txt");
}else if(i>=900 && i<1200){
fileWrite(errorFile, message, "successLoad3.txt");
}else{
fileWrite(errorFile, message, "successLoad4.txt");
}
return file.getName()+"包上传成功";
}catch (Exception e){
if (error != null){
try {
error.close();
}catch (Exception ex){
ex.printStackTrace();
}
}
return e.getMessage();
}
}
/**
*
* 文件上传成功和失败后. 写入文件存储执行信息!
* @param file
* @param message
* @param fileName
*/
private void fileWrite(File file, String message, String fileName){
try {
String path = file.getParent() + File.separator + fileName;
File parentDir = new File(path); // null
if ( !file.exists()){
parentDir.createNewFile(); //如果txt文件不存在,那么创建
}
FileWriter writer = new FileWriter(parentDir, true);
writer.write(message + System.getProperty("line.separator"));
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*示例 我的 npm 包都在 F:\\file\\demo\\node_modules 下.
* 我就给这个路径
* 执行后会在我当前输入的路径后. F:\\file\\demo\\ 下生成两个txt文件.
* successLoad.txt 为npm包上传成功的文件信息
* errorLoad.txt 为npm包上传失败的文件信息!!
*/
public static void main(String[] args) {
new Cmd().getFiles("D:\\x3");
}
}
命令会保存到successLoad.txt文件里面
5、执行上传(nexus登录的时候需要邮箱,设置一下邮箱)
npm login --registry=http://111.111.111.111:8081/repository/npm-fe-hosted/
执行的时候会让输入用户名,密码和邮箱
然后再把successLoad.txt文件里面的命令复制一下运行一下就可以了
联系人: | 郑州-小万 |
---|---|
电话: | 13803993919 |
Email: | 1027060531@qq.com |
QQ: | 1027060531 |
网址: | www.wanhejia.com |