You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.7 KiB
71 lines
1.7 KiB
// const WebpackAliyunOss = require('webpack-aliyun-oss')
|
|
const WebpackAliyunOss = require('./oss-plugin.js')
|
|
// 注意上传文件中不要有包含buildDir的文件名
|
|
let { buildDir, bucket, ignoreFiles } = require('./oss.config.json')
|
|
const args = process.argv.slice(2) || []
|
|
|
|
if (!buildDir || !bucket) {
|
|
console.log('请配置 oss.config.json')
|
|
process.exit(1)
|
|
}
|
|
|
|
const [env] = args
|
|
|
|
bucket = bucket + (env === 'prod' ? '' : `-${env}`)
|
|
console.log('bucket:', bucket)
|
|
|
|
const oss = {
|
|
region: 'oss-cn-shenzhen',
|
|
accessKeyId: 'LTAINmC91NqIGN38',
|
|
accessKeySecret: 'Hh10dQPjq1jMLLSpbDAR05ZzR3nXsU',
|
|
bucket: bucket
|
|
}
|
|
|
|
const instance = new WebpackAliyunOss({
|
|
from: [`./${buildDir}/**`],
|
|
dist: '/',
|
|
region: oss.region,
|
|
accessKeyId: oss.accessKeyId,
|
|
accessKeySecret: oss.accessKeySecret,
|
|
bucket: oss.bucket,
|
|
overwrite: true,
|
|
secure: true,
|
|
timeout: 300000, // 5分钟
|
|
setOssPath(filePath) {
|
|
const fp = filePath.replace(/\\/g, '/')
|
|
const index = fp.indexOf(buildDir)
|
|
const Path = fp.substring(index + buildDir.length, filePath.length)
|
|
return Path
|
|
},
|
|
setHeaders() {
|
|
return {
|
|
//'Cache-Control': 'max-age=31536000'
|
|
}
|
|
}
|
|
})
|
|
|
|
let client = instance.client
|
|
|
|
async function deleteAll() {
|
|
let { objects } = await client.list({ 'max-keys': 1000 })
|
|
while (objects.length > 0) {
|
|
let files = objects.map((item) => item.name)
|
|
if (ignoreFiles.length > 0) {
|
|
files = files.filter((item) => !ignoreFiles.includes(item))
|
|
}
|
|
// 一次最多1000个文件
|
|
await client.deleteMulti(files, {
|
|
quiet: true
|
|
})
|
|
let res = await client.list({ 'max-keys': 1000 })
|
|
objects = res.objects
|
|
}
|
|
console.log('bucket 文件删除完成')
|
|
}
|
|
|
|
async function run() {
|
|
await deleteAll()
|
|
await instance.apply()
|
|
}
|
|
|
|
run()
|