123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- // src/index.ts
- import fs from "fs-extra";
- import path from "path";
- import externalGlobals from "rollup-plugin-external-globals";
- import serveStatic from "serve-static";
- import { normalizePath } from "vite";
- function vitePluginCesium(options = {}) {
- const {
- rebuildCesium = false,
- devMinifyCesium = false,
- cesiumBuildRootPath = "node_modules/cesium/Build",
- cesiumBuildPath = "node_modules/cesium/Build/Cesium/"
- } = options;
- let CESIUM_BASE_URL = "cesium/";
- let outDir = "dist";
- let base = "/";
- let isBuild = false;
- return {
- name: "vite-plugin-cesium",
- config(c, { command }) {
- var _a;
- isBuild = command === "build";
- if (c.base) {
- base = c.base;
- if (base === "")
- base = "./";
- }
- if ((_a = c.build) == null ? void 0 : _a.outDir) {
- outDir = c.build.outDir;
- }
- CESIUM_BASE_URL = path.posix.join(base, CESIUM_BASE_URL);
- const userConfig = {};
- if (!isBuild) {
- userConfig.define = {
- CESIUM_BASE_URL: JSON.stringify(CESIUM_BASE_URL)
- };
- } else {
- if (rebuildCesium) {
- userConfig.build = {
- assetsInlineLimit: 0,
- chunkSizeWarningLimit: 5e3,
- rollupOptions: {
- output: {
- intro: `window.CESIUM_BASE_URL = "${CESIUM_BASE_URL}";`
- }
- }
- };
- } else {
- userConfig.build = {
- rollupOptions: {
- external: ["cesium"],
- plugins: [externalGlobals({ cesium: "Cesium" })]
- }
- };
- }
- }
- return userConfig;
- },
- configureServer({ middlewares }) {
- const cesiumPath = path.join(cesiumBuildRootPath, devMinifyCesium ? "Cesium" : "CesiumUnminified");
- middlewares.use(path.posix.join("/", CESIUM_BASE_URL), serveStatic(cesiumPath));
- },
- async closeBundle() {
- if (isBuild) {
- try {
- await fs.copy(path.join(cesiumBuildPath, "Assets"), path.join(outDir, "cesium/Assets"));
- await fs.copy(path.join(cesiumBuildPath, "ThirdParty"), path.join(outDir, "cesium/ThirdParty"));
- await fs.copy(path.join(cesiumBuildPath, "Workers"), path.join(outDir, "cesium/Workers"));
- await fs.copy(path.join(cesiumBuildPath, "Widgets"), path.join(outDir, "cesium/Widgets"));
- if (!rebuildCesium) {
- await fs.copy(path.join(cesiumBuildPath, "Cesium.js"), path.join(outDir, "cesium/Cesium.js"));
- }
- } catch (err) {
- console.error("copy failed", err);
- }
- }
- },
- transformIndexHtml() {
- const tags = [
- {
- tag: "link",
- attrs: {
- rel: "stylesheet",
- href: normalizePath(path.join(CESIUM_BASE_URL, "Widgets/widgets.css"))
- }
- }
- ];
- if (isBuild && !rebuildCesium) {
- tags.push({
- tag: "script",
- attrs: {
- src: normalizePath(path.join(CESIUM_BASE_URL, "Cesium.js"))
- }
- });
- }
- return tags;
- }
- };
- }
- export {
- vitePluginCesium as default
- };
|