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