@cake-fxd/cake-cli-presets
Version:
蛋糕英语前端模版项目集合
101 lines (79 loc) • 2.52 kB
JavaScript
const qiniu = require('qiniu')
const fs = require('fs')
const path = require('path')
// upload prefix path
const QINIU_PREFIX = 'paplab/web'
// upload bucket name
const bucket = 'baicizhan'
// qi niu secret mac
const accessKey = 'ja7KPhUBStuCp5OND_WGzvS0c8zLwZGhSCJQLpIe'
const secretKey = 'ao2GZFuiXC3L01m7QWJWmh-4OHRDRA-E1CR7-dZ6'
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey)
// all files
const FILE_UPLOAD_LIST = []
// success files
const SUCCESS_UPLOAD_LIST = []
// fail files
const FAIL_UPLOAD_LIST = []
// upload dir
let BUILD_DIR = 'dist'
// project name
let PROJECT_NAME = JSON.parse(fs.readFileSync(`${process.cwd()}/package.json`).toString()).name
// upload tasks
const PUT_TASKS = []
function scanFiles(pwd = path.resolve(process.cwd(), BUILD_DIR)) {
try {
const menu = fs.readdirSync(pwd)
menu.forEach(value => {
const status = fs.statSync(`${pwd}/${value}`)
if (!status.isDirectory()) {
const current = `${pwd}/${value}`,
filename = current.split(`${BUILD_DIR}/`)[1]
FILE_UPLOAD_LIST.push(filename)
PUT_TASKS.push(put(filename, current))
} else {
scanFiles(`${pwd}/${value}`)
}
})
} catch (e) {
console.error(e)
}
}
function put(name, localFile) {
return new Promise((reslove, reject) => {
const prefix = `${QINIU_PREFIX}/${PROJECT_NAME}/${BUILD_DIR}/`
const options = {
scope: bucket + ':' + prefix + name,
}
const putPolicy = new qiniu.rs.PutPolicy(options)
const uploadToken = putPolicy.uploadToken(mac)
const config = new qiniu.conf.Config()
const formUploader = new qiniu.form_up.FormUploader(config)
formUploader.putFile(uploadToken, prefix + name, localFile, null, function(respErr, respBody, respInfo) {
if (respErr) {
reject(respErr)
}
if (respInfo.statusCode == 200) {
SUCCESS_UPLOAD_LIST.push(name)
} else {
FAIL_UPLOAD_LIST.push(name)
}
reslove()
})
})
}
function uploadFiles() {
Promise.all(PUT_TASKS)
.then(() => {
console.log(` 项目 ${PROJECT_NAME} 发布成功!!!`)
})
.catch(e => {
console.error(e)
})
}
function startUpload() {
scanFiles()
uploadFiles()
}
startUpload()