index.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const fs_extra_1 = __importDefault(require("fs-extra"));
  7. const path_1 = __importDefault(require("path"));
  8. const rollup_plugin_external_globals_1 = __importDefault(require("rollup-plugin-external-globals"));
  9. const serve_static_1 = __importDefault(require("serve-static"));
  10. const vite_1 = require("vite");
  11. function vitePluginCesium(options = {
  12. rebuildCesium: false,
  13. devMinifyCesium: false
  14. }) {
  15. const { rebuildCesium, devMinifyCesium } = options;
  16. const cesiumBuildRootPath = 'node_modules/cesium/Build';
  17. const cesiumBuildPath = 'node_modules/cesium/Build/Cesium/';
  18. let CESIUM_BASE_URL = 'cesium/';
  19. let outDir = 'dist';
  20. let base = '/';
  21. let isBuild = false;
  22. return {
  23. name: 'vite-plugin-cesium',
  24. config(c, { command }) {
  25. var _a;
  26. isBuild = command === 'build';
  27. if (c.base) {
  28. base = c.base;
  29. if (base === '')
  30. base = './';
  31. }
  32. if ((_a = c.build) === null || _a === void 0 ? void 0 : _a.outDir) {
  33. outDir = c.build.outDir;
  34. }
  35. CESIUM_BASE_URL = path_1.default.posix.join(base, CESIUM_BASE_URL);
  36. const userConfig = {};
  37. if (!isBuild) {
  38. // -----------dev-----------
  39. userConfig.optimizeDeps = {
  40. exclude: ['cesium']
  41. };
  42. userConfig.define = {
  43. CESIUM_BASE_URL: JSON.stringify(CESIUM_BASE_URL)
  44. };
  45. }
  46. else {
  47. // -----------build------------
  48. if (rebuildCesium) {
  49. // build 1) rebuild cesium library
  50. userConfig.build = {
  51. assetsInlineLimit: 0,
  52. chunkSizeWarningLimit: 5000,
  53. rollupOptions: {
  54. output: {
  55. intro: `window.CESIUM_BASE_URL = "${CESIUM_BASE_URL}";`
  56. }
  57. }
  58. };
  59. }
  60. else {
  61. // build 2) copy Cesium.js later
  62. userConfig.build = {
  63. rollupOptions: {
  64. external: ['cesium'],
  65. plugins: [(0, rollup_plugin_external_globals_1.default)({ cesium: 'Cesium' })]
  66. }
  67. };
  68. }
  69. }
  70. return userConfig;
  71. },
  72. configureServer({ middlewares }) {
  73. const cesiumPath = path_1.default.join(cesiumBuildRootPath, devMinifyCesium ? 'Cesium' : 'CesiumUnminified');
  74. middlewares.use(path_1.default.posix.join('/', CESIUM_BASE_URL), (0, serve_static_1.default)(cesiumPath));
  75. },
  76. async closeBundle() {
  77. if (isBuild) {
  78. try {
  79. await fs_extra_1.default.copy(path_1.default.join(cesiumBuildPath, 'Assets'), path_1.default.join(outDir, 'cesium/Assets'));
  80. await fs_extra_1.default.copy(path_1.default.join(cesiumBuildPath, 'ThirdParty'), path_1.default.join(outDir, 'cesium/ThirdParty'));
  81. await fs_extra_1.default.copy(path_1.default.join(cesiumBuildPath, 'Workers'), path_1.default.join(outDir, 'cesium/Workers'));
  82. await fs_extra_1.default.copy(path_1.default.join(cesiumBuildPath, 'Widgets'), path_1.default.join(outDir, 'cesium/Widgets'));
  83. if (!rebuildCesium) {
  84. await fs_extra_1.default.copy(path_1.default.join(cesiumBuildPath, 'Cesium.js'), path_1.default.join(outDir, 'cesium/Cesium.js'));
  85. }
  86. }
  87. catch (err) {
  88. console.error('copy failed', err);
  89. }
  90. }
  91. },
  92. transformIndexHtml() {
  93. const tags = [
  94. {
  95. tag: 'link',
  96. attrs: {
  97. rel: 'stylesheet',
  98. href: (0, vite_1.normalizePath)(path_1.default.join(CESIUM_BASE_URL, 'Widgets/widgets.css')),
  99. }
  100. }
  101. ];
  102. if (isBuild && !rebuildCesium) {
  103. tags.push({
  104. tag: 'script',
  105. attrs: {
  106. src: (0, vite_1.normalizePath)(path_1.default.join(CESIUM_BASE_URL, 'Cesium.js')),
  107. }
  108. });
  109. }
  110. return tags;
  111. }
  112. };
  113. }
  114. exports.default = vitePluginCesium;