webpack.config.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. const FileManagerPlugin = require ('filemanager-webpack-plugin');
  2. const { readFileSync } = require('fs');
  3. const { version: _version, zipPackageName = 'huaweicloud-obs-sdk-browserjs', isRelease = 'false', cidBuildTime = Date.now() } = process.env
  4. let version;
  5. let name = 'esdk-obs-browserjs';
  6. try {
  7. const res = JSON.parse(readFileSync('./package.json', { encoding: 'utf-8'}));
  8. version = res.version;
  9. name = res.name;
  10. } catch (error) {
  11. console.log('missing file: package.json')
  12. }
  13. version = _version ? _version : version;
  14. let zipFileName = zipPackageName;
  15. if (version) {
  16. zipFileName += `_${version}`;
  17. }
  18. if (isRelease.toLowerCase() === 'false') {
  19. zipFileName += `-${cidBuildTime}`;
  20. }
  21. zipFileName += '.tar.gz';
  22. module.exports = {
  23. mode: "production",
  24. entry: {
  25. [`${name}-without-polyfill`]: "./index.js",
  26. [`${name}`]: ["@babel/polyfill", "./index.js"]
  27. },
  28. output: {
  29. filename: `[name].${version}.min.js`,
  30. library: {
  31. name: 'ObsClient',
  32. type: 'umd',
  33. export: 'default',
  34. }
  35. },
  36. target: ["web", "es5"],
  37. module: {
  38. rules: [
  39. {
  40. test: /\.m?js$/,
  41. use: ["babel-loader?cacheDirectory=true"],
  42. },
  43. ],
  44. },
  45. plugins: [
  46. new FileManagerPlugin({
  47. events: {
  48. onEnd: {
  49. archive: [
  50. {
  51. source: '../source',
  52. destination: `${zipFileName}`,
  53. format: 'tar',
  54. options: {
  55. globOptions: {
  56. dot: true,
  57. ignore: ['package-lock.json', 'node_modules', 'node_modules/**/*']
  58. }
  59. }
  60. },
  61. ],
  62. },
  63. },
  64. }),
  65. ]
  66. };