wci-build
Version:
A webpack scaffold
74 lines (58 loc) • 1.7 kB
JavaScript
const glob = require('glob');
const path = require('path');
const Console = require('console');
const qiniu = require('qiniu');
const mime = require('mime');
const projectDirectory = process.cwd();
import {
DEFAULT_OUTPUT,
} from './config';
/**
* 待抽离
*/
const config = {
qiniu: {
bucket: 'fly-web-cdn',
hostname: 'https://cdn.fuliaoyi.com/',
AK: 'u1JFo2XoarBECc5tScKwyKtItk6iQFZpbDZQR9hN',
SK: 'MfLpuiXPtHwG67H_7jFlGSEngDWV0I7q5fL7oaVM'
}
}
const mac = new qiniu.auth.digest.Mac(config.qiniu.AK, config.qiniu.SK);
const putPolicy = new qiniu.rs.PutPolicy({
scope: config.qiniu.bucket,
detectMime: 1,
});
const uploadToken = putPolicy.uploadToken(mac);
const cf = new qiniu.conf.Config();
const formUploader = new qiniu.form_up.FormUploader(cf);
const putExtra = new qiniu.form_up.PutExtra();
const uploadToQiniu = (path, key) => {
const mimeType = mime.getType(path);
const putExtra = {
...putExtra,
mimeType,
}
return new Promise((resolve, reject) => {
Console.log('\x1b[33m%s\x1b[0m', `==> 开始上传 ${key} 文件`);
formUploader.putFile(uploadToken, key, path, putExtra, function (respErr,
respBody, respInfo) {
if (respErr) {
reject(respErr);
}
Console.log('\x1b[32m%s\x1b[0m', `==> 上传成功 ${key} 文件`);
resolve(respBody);
});
});
};
;(async () => {
const files = await glob.sync(path.resolve(projectDirectory, `${DEFAULT_OUTPUT}/*.*`));
if (!files.length) {
throw Error('没有打包文件');
}
for (let i = 0; i < files.length; i++) {
const p = files[i];
const pathname = path.basename(p);
await uploadToQiniu(p, pathname);
};
})();