deploy-to-oss.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. const ALIOSS = require('ali-oss')
  2. const WebpackAliyunOSS = require("webpack-aliyun-oss")
  3. const OSSCFG = require('./aliyun-oss-config')
  4. const aliyunOSSClient = new ALIOSS({
  5. region: OSSCFG.region,
  6. accessKeyId: OSSCFG.accessKeyId,
  7. accessKeySecret: OSSCFG.accessKeySecret,
  8. bucket: OSSCFG.bucket
  9. });
  10. async function deleteFile(filename) {
  11. await aliyunOSSClient.delete(filename)
  12. }
  13. async function deleteOldFiles() {
  14. let result = await aliyunOSSClient.list({
  15. "max-keys": 1000
  16. })
  17. result.objects && result.objects.forEach(obj => {
  18. if (obj.name.indexOf(OSSCFG.path) >= 0) {
  19. deleteFile(obj.name)
  20. }
  21. })
  22. }
  23. deleteOldFiles()
  24. new WebpackAliyunOSS({
  25. from: ['./dist/**', '!./dist/**/*.html'],
  26. dist: '/',
  27. region: OSSCFG.region,
  28. deletOrigin: false,
  29. accessKeyId: OSSCFG.accessKeyId,
  30. accessKeySecret: OSSCFG.accessKeySecret,
  31. bucket: OSSCFG.bucket,
  32. setOssPath: filePath => {
  33. let index = filePath.lastIndexOf('dist')
  34. let path = filePath.substring(index + 4, filePath.length)
  35. return OSSCFG.path + '/' + path.replace(/\\/g, '/')
  36. },
  37. setHeaders(filePath) {
  38. // some operations to filePath
  39. return {
  40. 'Cache-Control': 'max-age=31536000',
  41. 'Access-Control-Allow-Origin': '*'
  42. }
  43. }
  44. }).apply()