46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
const fs = require('fs')
|
|
const path = require('path')
|
|
const OSS = require('ali-oss')
|
|
const env = require('./.env')
|
|
|
|
const { region, accessKeyId, accessKeySecret, bucket } = env;
|
|
|
|
const client = new OSS({
|
|
region,
|
|
accessKeyId,
|
|
accessKeySecret,
|
|
bucket,
|
|
});
|
|
|
|
const distPath = path.resolve(__dirname, './build');
|
|
|
|
async function clean() {
|
|
console.log('[*] Getting file list');
|
|
const fileList = await client.list();
|
|
if (fileList.objects) {
|
|
console.log('[*] Deleting old files');
|
|
await client.deleteMulti(fileList.objects.map(x => x.name));
|
|
}
|
|
}
|
|
|
|
async function deploy(subpath = '') {
|
|
const dir = await fs.promises.readdir(`${distPath}${subpath}`);
|
|
for (i of dir) {
|
|
const stat = await fs.promises.stat(path.resolve(`${distPath}${subpath}`, i));
|
|
|
|
if (stat.isFile()) {
|
|
const fileStream = fs.createReadStream(path.resolve(`${distPath}${subpath}`, i));
|
|
console.log(`Uploading: ${subpath}/${i}`);
|
|
const result = await client.putStream(`${subpath}/${i}`, fileStream);
|
|
} else if (stat.isDirectory()) {
|
|
await deploy(`${subpath}/${i}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
async function publish() {
|
|
await clean();
|
|
await deploy();
|
|
}
|
|
|
|
publish(); |