mirror of
https://gitee.com/ShopeX/ECShopX_desktop-frontend
synced 2026-05-14 18:35:39 +08:00
67 lines
1.5 KiB
JavaScript
67 lines
1.5 KiB
JavaScript
|
|
const OSS = require('ali-oss')
|
|
|
|
class OssPlugin {
|
|
constructor (options = {}) {
|
|
const {
|
|
client,
|
|
region,
|
|
accessKeyId,
|
|
accessKeySecret,
|
|
bucket,
|
|
dist
|
|
} = options
|
|
let oss = new OSS({
|
|
region,
|
|
accessKeyId,
|
|
accessKeySecret,
|
|
bucket
|
|
})
|
|
this.options = {
|
|
client,
|
|
test: /\.(jpe?g|png|gif|svg|js)$/i,
|
|
dist,
|
|
oss
|
|
}
|
|
}
|
|
|
|
apply (compiler) {
|
|
compiler.hooks.emit.tapAsync('OssPlugin', async (compilation, callback) => {
|
|
const { client, test } = this.options
|
|
if (client) {
|
|
for (let key of Object.keys(compilation.assets)) {
|
|
if (test.test(key)) {
|
|
let source = compilation.assets[key].source()
|
|
if (!Buffer.isBuffer(source)) {
|
|
source = Buffer.from(source)
|
|
}
|
|
await this.putOSS(source, key)
|
|
}
|
|
}
|
|
// Object.keys(compilation.assets).(item => {
|
|
// // console.log(item)
|
|
// if (test.test(item)) {
|
|
// let source = compilation.assets[item].source()
|
|
// if (!Buffer.isBuffer(source)) {
|
|
// source = Buffer.from(source)
|
|
// }
|
|
// this.putOSS(source, item)
|
|
// }
|
|
// })
|
|
}
|
|
callback()
|
|
})
|
|
}
|
|
|
|
async putOSS (src, name) {
|
|
const { dist, oss } = this.options
|
|
try {
|
|
await oss.put(dist + name, src)
|
|
} catch (err) {
|
|
console.error('error: %j', err)
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = OssPlugin
|