2020-fronted-nx/deploy.js

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();