【前端】印包客H5
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.

73 lines
1.8 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.lastIndexOf(buildDir)
const Path = fp.substring(index + buildDir.length, filePath.length)
return Path
},
setHeaders(filePath) {
return {
//'Cache-Control': 'max-age=31536000'
}
}
})
let client = instance.client
async function deleteAll() {
const { objects } = await client.list()
if (objects.length) {
let files = objects.map((item) => item.name)
if (ignoreFiles.length > 0) {
files = files.filter((item) => !ignoreFiles.includes(item))
}
let count = 0
while (count < files.length) {
// 一次最多1000个文件
await client.deleteMulti(files.slice(count, count + 1000), {
quiet: true
})
count += 1000
}
}
console.log('bucket 文件删除完成')
}
async function run() {
await deleteAll()
await instance.apply()
}
run()