UNPKG

vite-plugin-xgis-cesium

Version:
1 lines 3.34 kB
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:d=null}=n;let m=Object.assign({cesium:null},d),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&&!d)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(d){let s=m.cesium?`@${m.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 o="xgis-cesium";const{rebuildCesium:n=!1,devMinifyCesium:r=!1,cesiumBuildRootPath:u=`node_modules/${o}/dist`,cesiumBuildPath:a=`${u}/resources/`,useCDN:l=null}=e;Object.assign({cesium:null},l);let c=`${o}/`,d="dist",m="/",p=!1;return{name:"vite-plugin-xgis-cesium",async config(e,{command:t}){var o;p="build"===t,e.base&&(m=e.base,""===m&&(m="./")),(null==(o=e.build)?void 0:o.outDir)&&(d=e.build.outDir),c=s.posix.join(m,c);const n={};if(p){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(u,"assets"),e,"worker-[^/]+.js$")}else n.define={CESIUM_BASE_URL:JSON.stringify(c)};return n},configureServer({middlewares:i}){const e=s.join(u,"resources");i.use(s.posix.join("/",c),t(e));const o=s.join(u,"assets");i.use(s.posix.join("public/","assets"),t(o))},async closeBundle(){if(p&&!l)try{await i.copy(s.join(a,"Assets"),s.join(d,`${o}/Assets`)),await i.copy(s.join(a,"ThirdParty"),s.join(d,`${o}/ThirdParty`)),await i.copy(s.join(a,"Workers"),s.join(d,`${o}/Workers`)),await i.copy(s.join(u,"assets/data"),s.join(d,"assets/data"))}catch(i){console.error("copy failed",i)}},transformIndexHtml(){const i=[];return i.push({tag:"script",children:`window['CESIUM_BASE_URL'] = '${c}'`}),i}}}export{n as cesiumPlugin,r as default};