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