vite-plugin-xgis-cesium
Version:
xgis-cesium library plugin for Vite
1 lines • 3.48 kB
JavaScript
import i from"fs-extra";import s from"path";import e from"rollup-plugin-external-globals";import t from"serve-static";import{normalizePath as o}from"vite";function n(n={}){let r="cesium";const{rebuildCesium:u=!1,devMinifyCesium:a=!1,cesiumBuildRootPath:l=`node_modules/${r}/Build`,cesiumBuildPath:c=`${l}/Cesium/`,useCDN:m=null}=n;let d=Object.assign({cesium:null},m),p=`${r}/`,j="dist",f="/",g=!1;return{name:"vite-plugin-cesium",config(i,{command:t}){var o;g="build"===t,i.base&&(f=i.base,""===f&&(f="./")),(null==(o=i.build)?void 0:o.outDir)&&(j=i.build.outDir),p=s.posix.join(f,p);const n={};if(g)if(u)n.build={assetsInlineLimit:0,chunkSizeWarningLimit:5e3,rollupOptions:{output:{intro:`window.CESIUM_BASE_URL = "${p}";`}}};else{let i=[r],s=[e({cesium:"Cesium"})];n.build={rollupOptions:{external:i,plugins:s}}}else n.define={CESIUM_BASE_URL:JSON.stringify(p)};return n},configureServer({middlewares:i}){const e=s.join(l,a?"Cesium":"CesiumUnminified");i.use(s.posix.join("/",p),t(e))},async closeBundle(){if(g&&!m)try{await i.copy(s.join(c,"Assets"),s.join(j,`${r}/Assets`)),await i.copy(s.join(c,"ThirdParty"),s.join(j,`${r}/ThirdParty`)),await i.copy(s.join(c,"Workers"),s.join(j,`${r}/Workers`)),await i.copy(s.join(c,"Widgets"),s.join(j,`${r}/Widgets`)),u||await i.copy(s.join(c,"Cesium.js"),s.join(j,`${r}/Cesium.js`))}catch(i){console.error("copy failed",i)}},transformIndexHtml(){const i=[];if(m){let s=d.cesium?`@${d.cesium}`:"";i.push({tag:"link",attrs:{rel:"stylesheet",href:`https://unpkg.com/${r}${s}/Build/Cesium/Widgets/widgets.css`}},{tag:"script",children:`window['CESIUM_BASE_URL'] = 'https://unpkg.com/${r}${s}/Build/Cesium'`},{tag:"script",attrs:{src:`https://unpkg.com/${r}${s}/Build/Cesium/Cesium.js`}})}else i.push({tag:"link",attrs:{rel:"stylesheet",href:o(s.join(p,"Widgets/widgets.css"))}}),g&&!u&&i.push({tag:"script",attrs:{src:o(s.join(f,`${r}/Cesium.js`))}});return i}}}function r(e={}){let n="xgis-cesium";const{rebuildCesium:r=!1,devMinifyCesium:u=!1,cesiumBuildRootPath:a=`node_modules/${n}/dist`,cesiumBuildPath:l=`${a}/resources/`,useCDN:c=null}=e;Object.assign({cesium:null},c);let m=`${n}/`,d="dist",p="/",j=!1;return{name:"vite-plugin-xgis-cesium",async config(e,{command:t}){var o;j="build"===t,e.base&&(p=e.base,""===p&&(p="./")),(null==(o=e.build)?void 0:o.outDir)&&(d=e.build.outDir),m=s.posix.join(p,m);const n={};if(j){const e=s.join("public","assets");await async function(s,e,t){const o=(await i.readdir(s)).filter((i=>new RegExp(t).test(i)));await Promise.all(o.map((t=>i.copy(`${s}/${t}`,`${e}/${t}`,{overwrite:!0,errorOnExist:!1,preserveTimestamps:!0}))))}(s.join(a,"assets"),e,"worker-[^/]+.js$")}else n.define={CESIUM_BASE_URL:JSON.stringify(m)};return n},configureServer({middlewares:i}){const e=s.join(a,"resources");i.use(s.posix.join("/",m),t(e));const o=s.join(a,"assets");i.use(s.posix.join("public/","assets"),t(o))},async closeBundle(){if(j&&!c)try{await i.copy(s.join(l,"Assets"),s.join(d,`${n}/Assets`)),await i.copy(s.join(l,"ThirdParty"),s.join(d,`${n}/ThirdParty`)),await i.copy(s.join(l,"Workers"),s.join(d,`${n}/Workers`)),await i.copy(s.join(l,"turf.min.js"),s.join(d,`${n}/turf.min.js`)),await i.copy(s.join(a,"assets/data"),s.join(d,"assets/data"))}catch(i){console.error("copy failed",i)}},transformIndexHtml(){const i=[];return i.push({tag:"script",attrs:{src:o(s.join(m,"turf.min.js"))}}),i.push({tag:"script",children:`window['CESIUM_BASE_URL'] = '${m}'`}),i}}}export{n as cesiumPlugin,r as default};