Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: added automatic import of cesium css #9

Merged
merged 11 commits into from
Sep 19, 2024
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

English | [简体中文](/README.zh-CN.md)

It externalizes `Cesium.js` and automatically copies the four major libraries and core files of CesiumJS during the build process.
It externalizes `Cesium.js` as well as its styles `widget.css` and automatically copies the four major libraries and core files of CesiumJS during the build process.

It also support [@cesium/engine](https://community.cesium.com/t/cesium-engine-and-cesium-widgets-are-now-available-for-testing/20898) !

Expand Down
2 changes: 1 addition & 1 deletion examples/preact/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
},
"dependencies": {
"@preact/signals": "^1.3.0",
"cesium": "^1.119.0",
"cesium": "^1.121.1",
"preact": "^10.22.0"
},
"devDependencies": {
Expand Down
1 change: 0 additions & 1 deletion examples/preact/src/app.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { effect, signal } from '@preact/signals'

import * as Cesium from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'

export function App() {
const container = signal<HTMLElement | null>(null)
Expand Down
2 changes: 1 addition & 1 deletion examples/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"preview": "vite preview"
},
"dependencies": {
"cesium": "^1.119.0",
"cesium": "^1.121.1",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
Expand Down
1 change: 0 additions & 1 deletion examples/react/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { useEffect, useRef } from 'react'

import * as Cesium from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'

function App() {
const container = useRef(null)
Expand Down
2 changes: 1 addition & 1 deletion examples/solid/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"preview": "vite preview"
},
"dependencies": {
"cesium": "^1.119.0",
"cesium": "^1.121.1",
"solid-js": "^1.8.17"
},
"devDependencies": {
Expand Down
1 change: 0 additions & 1 deletion examples/solid/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import * as Cesium from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'
import { onMount } from 'solid-js'

function App() {
Expand Down
2 changes: 1 addition & 1 deletion examples/svelte/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@
"vite-plugin-cesium-build": "^0.4.3"
},
"dependencies": {
"cesium": "^1.119.0"
"cesium": "^1.121.1"
}
}
1 change: 0 additions & 1 deletion examples/svelte/src/App.svelte
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<script lang="ts">
import { onMount } from 'svelte'
import * as Cesium from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'

let container:null

Expand Down
2 changes: 1 addition & 1 deletion examples/vanilla/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"preview": "vite preview"
},
"dependencies": {
"cesium": "^1.119.0"
"cesium": "^1.121.1"
},
"devDependencies": {
"typescript": "^5.2.2",
Expand Down
1 change: 0 additions & 1 deletion examples/vanilla/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import * as Cesium from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'

const dom = document.querySelector<HTMLDivElement>('#app')!

Expand Down
2 changes: 1 addition & 1 deletion examples/vue/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"preview": "vite preview"
},
"dependencies": {
"cesium": "^1.119.0",
"cesium": "^1.121.1",
"vue": "^3.4.29"
},
"devDependencies": {
Expand Down
1 change: 0 additions & 1 deletion examples/vue/src/App.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<script setup lang="ts">
import { onMounted, ref } from 'vue'
import * as Cesium from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'

const container = ref()
onMounted(() => {
Expand Down
1 change: 1 addition & 0 deletions src/core.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export * from './core/copyCesium'
export * from './core/importCesium'
export * from './core/importCss'
export * from './core/resolveOptions'
export * from './core/setBaseUrl'
23 changes: 23 additions & 0 deletions src/core/importCss.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import type { Plugin, ResolvedConfig } from 'vite'
import { isString } from './utils'

export function importCss(path: (base: string) => string, apply?: Plugin['apply']): Plugin {
let base: ResolvedConfig['base']

return {
name: `vite-plugin-cesium-build:importCss${isString(apply) ? `:${apply}` : ''}`,
apply,
configResolved(resolvedConfig) {
base = resolvedConfig.base
},
transformIndexHtml: () => [
{
tag: 'link',
attrs: {
rel: 'stylesheet',
href: path(base),
},
},
],
}
}
10 changes: 9 additions & 1 deletion src/engine.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Plugin } from 'vite'

import { type BuildCesiumOptions, copyCesium, resolveOptions, setBaseUrl } from './core'
import { type BuildCesiumOptions, copyCesium, importCss, resolveOptions, setBaseUrl } from './core'

function pluginEntry(pluginOptions?: Partial<BuildCesiumOptions>): Plugin[] {
const options = resolveOptions(pluginOptions, 'node_modules/@cesium/engine')
Expand All @@ -14,6 +14,10 @@ function pluginEntry(pluginOptions?: Partial<BuildCesiumOptions>): Plugin[] {
src: `${options.from}/Source/Assets/*`,
dest: `${options.to}/Assets/`,
},
{
src: `${options.from}/Source/Widget/CesiumWidget.css`,
dest: `${options.to}/Widget/`,
},
{
src: `${options.from}/Build/ThirdParty/*`,
dest: `${options.to}/ThirdParty/`,
Expand All @@ -24,6 +28,10 @@ function pluginEntry(pluginOptions?: Partial<BuildCesiumOptions>): Plugin[] {
},
],
),

importCss(base => `${base}${options.from}/Source/Widget/CesiumWidget.css`, 'serve'),
importCss(base => `${base}${options.to}/Widget/CesiumWidget.css`, 'build'),

setBaseUrl(options),
]
}
Expand Down
5 changes: 4 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import type { Plugin } from 'vite'

import { viteExternalsPlugin } from 'vite-plugin-externals'

import { type BuildCesiumOptions, copyCesium, importCesium, resolveOptions, setBaseUrl } from './core'
import { type BuildCesiumOptions, copyCesium, importCesium, importCss, resolveOptions, setBaseUrl } from './core'

function pluginEntry(pluginOptions?: Partial<BuildCesiumOptions>): Plugin[] {
const options = resolveOptions(pluginOptions, 'node_modules/cesium/Build/Cesium')
Expand All @@ -21,6 +21,9 @@ function pluginEntry(pluginOptions?: Partial<BuildCesiumOptions>): Plugin[] {
importCesium(base => `${base}${options.from}Unminified/Cesium.js`, 'serve'),
importCesium(base => `${base}${options.to}/Cesium.js`, 'build'),

importCss(base => `${base}${options.from}Unminified/Widgets/widgets.css`, 'serve'),
importCss(base => `${base}${options.to}/Widgets/widgets.css`, 'build'),

setBaseUrl(options),
]
}
Expand Down
2 changes: 1 addition & 1 deletion test/playground/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"preview": "vite preview"
},
"dependencies": {
"cesium": "^1.119.0"
"cesium": "^1.121.1"
},
"devDependencies": {
"typescript": "^5.5.3",
Expand Down
60 changes: 30 additions & 30 deletions test/playground/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion test/playground/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import * as Cesium from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'

import './main.css'

Expand Down