| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import { loadEnv } from 'vite'
- import archiver from 'archiver'
- import fs from 'fs'
- import OSS from 'ali-oss'
- import { format } from 'date-fns'
- import { Buffer } from 'node:buffer'
- import COS from 'cos-nodejs-sdk-v5'
- async function ossUpload(filePath, version) {
- let client = new OSS({
- accessKeyId: 'PXzJyah5rZfWHIIH',
- accessKeySecret: 'e1MS6j0wypXJrw8CM0hObZu8qKbfah',
- region: 'oss-cn-hangzhou',
- bucket: 'zm-shorts'
- })
- let { url } = await client.put(`packages/${format(new Date(), 'yyyyMMddHHmmss')}.zip`, filePath, {
- headers: {
- 'x-oss-object-acl': 'public-read'
- }
- })
- url = url.replace('http://', 'https://')
- console.log('package uploaded: %s', url.replace('http://', 'https://'))
- await client.put('packages/meta.json', Buffer.from(JSON.stringify({ url, version: version })), {
- headers: { 'x-oss-object-acl': 'public-read' }
- })
- }
- async function cosUpload(filePath, version) {
- var cos = new COS({
- SecretId: 'IKIDhOGOYkw59GUh0FMONLJKPLGfzJ5oeaWO',
- SecretKey: 'sfSC9ACC9zjVK7BMUew8SmEdtBgDi6dI'
- })
- const url = await new Promise((resolve, reject) => {
- cos.putObject(
- {
- Bucket: 'duanju2-1321229830',
- Region: 'ap-jakarta',
- Key: `packages/${format(new Date(), 'yyyyMMddHHmmss')}.zip`,
- StorageClass: 'STANDARD',
- Body: fs.createReadStream(filePath),
- ACL: 'public-read'
- },
- function (err, data) {
- if (err) reject(err)
- else resolve('https://' + data.Location)
- }
- )
- })
- console.log('package uploaded: %s', url)
- await new Promise((resolve, reject) => {
- cos.putObject(
- {
- Bucket: 'duanju2-1321229830',
- Region: 'ap-jakarta',
- Key: 'packages/meta.json',
- StorageClass: 'STANDARD',
- Body: Buffer.from(JSON.stringify({ url, version: version })),
- ACL: 'public-read'
- },
- function (err, data) {
- if (err) reject(err)
- else resolve(data)
- }
- )
- })
- }
- export default function VitePluginUploadPackage() {
- let mode = ''
- let env = {}
- return {
- name: 'upload-package',
- config(config, { command }) {
- mode = config.mode
- env = loadEnv(mode, process.cwd())
- },
- async buildStart(options) {
- if (env['VITE_APP'] !== 'true') return
- const meta = JSON.parse(fs.readFileSync('./src/plugins/updater_meta.json'))
- meta.version++
- fs.writeFileSync('./src/plugins/updater_meta.json', JSON.stringify(meta))
- },
- async closeBundle(options) {
- if (env['VITE_APP'] !== 'true') return
- const meta = JSON.parse(fs.readFileSync('./src/plugins/updater_meta.json'))
- const sourceDir = 'dist'
- const outputFilePath = 'dist.zip'
- await new Promise((resolve, reject) => {
- const output = fs.createWriteStream(outputFilePath)
- output.on('close', function () {
- resolve()
- })
- const archive = archiver('zip')
- archive.pipe(output)
- archive.directory(sourceDir, false)
- archive.finalize()
- }).catch(e => {
- console.log(e)
- })
- switch (env['VITE_STORAGE_TYPE']) {
- case 'oss':
- await ossUpload(outputFilePath, meta.version)
- break
- case 'cos':
- await cosUpload(outputFilePath, meta.version)
- break
- }
- }
- }
- }
|