@edwardxyt/gws-cli
Version:
这是一个web脚手架工具,用于生成基于webpack5,生成typescript+react17+mobx5+reactRouter6的应用。初衷是要解决多入口,多环境。单独编译单独运行的脚手架。做到小而美。拒绝锦上添花。
86 lines (77 loc) • 2.33 kB
JavaScript
const oss = require("@xiayuting/xiayuting-aly-oss");
const glob = require("glob");
const path = require("path");
const fs = require("fs");
console.log(oss.version);
const projectDir = path.resolve(__dirname, "../");
const distDir = path.join(__dirname, "../", "dist");
const ROOTDIR = process.env.npm_config_ROOTDIR; // '/srv/delivery'
const STAGING = process.env.npm_config_STAGING; // 'picc'
const ENTRY = process.env.npm_config_ENTRY; // 'uat'
const PROJECT = process.env.npm_config_PROJECT; // 'shenzhen'
const ID = process.env.npm_config_ID; // 'current' or 'NO'
const REGION = process.env.npm_config_REGION;
const AK = process.env.npm_config_AK;
const AS = process.env.npm_config_AS;
const BUCKET = process.env.npm_config_BUCKET;
const targetDir = `${ROOTDIR}/${STAGING}/${PROJECT}/${ID}`; //归档代码库
// 归档是否存在
fs.exists(targetDir, exists => {
if (exists) {
console.log(`targetDir: ${targetDir}`);
} else {
throw new Error(`文件夹不存在 targetDir: ${targetDir}`);
return false;
}
});
// 初始化OSS
let client = new oss({
region: REGION,
accessKeyId: AK,
accessKeySecret: AS,
bucket: BUCKET
});
// 获取1000个文件,并删除
client
.list({
marker: `${ENTRY}/${PROJECT}/`
})
.then(data => {
console.info("获取当前文件列表", data.objects.length);
if (!data.objects) return null;
data.objects.map(i => {
if (i.name.includes(`${ENTRY}/${PROJECT}/`)) {
console.info(`删除 - ${i.name}`);
return client.delete(i.name);
}
});
})
.then(result => {
// 上传归档目录文件
glob(
"**/*.*",
{
cwd: targetDir
},
async (er, files) => {
if (!er) {
let index = 1;
let results = await files.map(i => {
client
.put(`${ENTRY}/${PROJECT}/${i}`, `${targetDir}/${i}`)
.then(data => {
if (data) {
console.log(`文件: ${data.name}, 编号:${index++}`);
return data;
} else {
console.log(`NOT THEN 文件: ${data}`);
}
});
});
console.log(`上传总数: ${results.length}`);
} else {
console.log(`ERR: ${er}`);
}
}
);
});