VitePluginUploadPackage.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /* eslint-disable */
  2. import { loadEnv } from "vite"
  3. import archiver from "archiver"
  4. import fs from "fs"
  5. import OSS from "ali-oss"
  6. import { format } from "date-fns"
  7. import { Buffer } from "node:buffer"
  8. import COS from "cos-nodejs-sdk-v5"
  9. async function ossUpload(zipPath, destPath, version) {
  10. let client = new OSS({
  11. accessKeyId: "LTAI5tLTf572KFxNQS64gQBY",
  12. accessKeySecret: "lUKCJE2vxTcJirgfyk2Ihl7HoryhCD",
  13. region: "oss-us-east-1",
  14. bucket: "short-play-assect"
  15. })
  16. let { url } = await client.put(
  17. `${destPath}/${format(new Date(), "yyyyMMddHHmmss")}.zip`,
  18. zipPath,
  19. {
  20. headers: {
  21. "x-oss-object-acl": "public-read"
  22. }
  23. }
  24. )
  25. url = url.replace("http://", "https://")
  26. console.log("package uploaded: %s", url.replace("http://", "https://"))
  27. await client.put(
  28. `${destPath}/meta.json`,
  29. Buffer.from(JSON.stringify({ url, version: version })),
  30. {
  31. headers: { "x-oss-object-acl": "public-read" }
  32. }
  33. )
  34. }
  35. async function cosUpload(filePath, destPath, version) {
  36. var cos = new COS({
  37. SecretId: "IKIDhOGOYkw59GUh0FMONLJKPLGfzJ5oeaWO",
  38. SecretKey: "sfSC9ACC9zjVK7BMUew8SmEdtBgDi6dI"
  39. })
  40. const url = await new Promise((resolve, reject) => {
  41. cos.putObject(
  42. {
  43. Bucket: "duanju2-1321229830",
  44. Region: "ap-jakarta",
  45. Key: `${destPath}/${format(new Date(), "yyyyMMddHHmmss")}.zip`,
  46. StorageClass: "STANDARD",
  47. Body: fs.createReadStream(filePath),
  48. ACL: "public-read"
  49. },
  50. function (err, data) {
  51. if (err) reject(err)
  52. else resolve("https://" + data.Location)
  53. }
  54. )
  55. })
  56. console.log("package uploaded: %s", url)
  57. await new Promise((resolve, reject) => {
  58. cos.putObject(
  59. {
  60. Bucket: "duanju2-1321229830",
  61. Region: "ap-jakarta",
  62. Key: `${destPath}/meta.json`,
  63. StorageClass: "STANDARD",
  64. Body: Buffer.from(JSON.stringify({ url, version: version })),
  65. ACL: "public-read"
  66. },
  67. function (err, data) {
  68. if (err) reject(err)
  69. else resolve(data)
  70. }
  71. )
  72. })
  73. }
  74. export default function VitePluginUploadPackage() {
  75. let mode = ""
  76. let env = {}
  77. return {
  78. name: "upload-package",
  79. config(config, { command }) {
  80. mode = config.mode
  81. env = loadEnv(mode, process.cwd())
  82. },
  83. async closeBundle(options) {
  84. if (env["VITE_APP"] !== "true") return
  85. const meta = JSON.parse(fs.readFileSync("./src/assets/meta.json"))
  86. const sourceDir = "dist"
  87. const outputFilePath = "dist.zip"
  88. await new Promise((resolve, reject) => {
  89. const output = fs.createWriteStream(outputFilePath)
  90. output.on("close", function () {
  91. resolve()
  92. })
  93. const archive = archiver("zip")
  94. archive.pipe(output)
  95. archive.directory(sourceDir, false)
  96. archive.finalize()
  97. }).catch(e => {
  98. console.log(e)
  99. })
  100. switch (env["VITE_STORAGE_TYPE"]) {
  101. case "oss":
  102. await ossUpload(
  103. outputFilePath,
  104. `packages/${env["VITE_PACKAGE"]}`,
  105. meta.version
  106. )
  107. break
  108. case "cos":
  109. await cosUpload(
  110. outputFilePath,
  111. `packages/${env["VITE_PACKAGE"]}`,
  112. meta.version
  113. )
  114. break
  115. }
  116. }
  117. }
  118. }