📦 NEW: add rebuildCesium option
This commit is contained in:
@@ -25,7 +25,8 @@
|
||||
"url": "https://github.com/nshen/vite-plugin-cesium/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"fs-extra": "^9.1.0"
|
||||
"fs-extra": "^9.1.0",
|
||||
"rollup-plugin-external-globals": "^0.6.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tsconfig/node12": "^1.0.7",
|
||||
|
1
src/env.d.ts
vendored
Normal file
1
src/env.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
||||
declare module 'rollup-plugin-external-globals'
|
62
src/index.ts
62
src/index.ts
@@ -1,8 +1,11 @@
|
||||
import path from 'path';
|
||||
import { Plugin } from 'vite';
|
||||
import { Plugin, UserConfig, HtmlTagDescriptor } from 'vite';
|
||||
import fs from 'fs-extra';
|
||||
import externalGlobals from "rollup-plugin-external-globals";
|
||||
|
||||
export default function (): Plugin {
|
||||
type options = { rebuildCesium: boolean; };
|
||||
|
||||
export default function ({ rebuildCesium }: options = { rebuildCesium: false }): Plugin {
|
||||
|
||||
const cesiumBuildPath = 'node_modules/cesium/Build/Cesium/';
|
||||
let publicPath = 'public';
|
||||
@@ -10,45 +13,58 @@ export default function (): Plugin {
|
||||
return {
|
||||
name: 'vite-plugin-cesium',
|
||||
|
||||
config(config, { command }) {
|
||||
const userConfig: UserConfig = {
|
||||
build: {
|
||||
assetsInlineLimit: 0,
|
||||
chunkSizeWarningLimit: 4000
|
||||
},
|
||||
define: {
|
||||
CESIUM_BASE_URL: '/cesium/'
|
||||
}
|
||||
};
|
||||
if (command === 'build' && !rebuildCesium) {
|
||||
userConfig.build!.rollupOptions = {
|
||||
external: ['cesium'],
|
||||
plugins: [
|
||||
externalGlobals({ cesium: "Cesium" })
|
||||
]
|
||||
};
|
||||
}
|
||||
return userConfig;
|
||||
},
|
||||
|
||||
configResolved(resolvedConfig) {
|
||||
publicPath = resolvedConfig.publicDir;
|
||||
},
|
||||
|
||||
async buildStart(options) {
|
||||
try {
|
||||
const exists = await fs.pathExists(path.join(publicPath, 'cesium/Assets'));
|
||||
const exists = await fs.pathExists(path.join(publicPath, 'cesium'));
|
||||
if (!exists) {
|
||||
await fs.copy(path.join(cesiumBuildPath, 'Assets'), path.join(publicPath, 'cesium/Assets'));
|
||||
await fs.copy(path.join(cesiumBuildPath, 'ThirdParty'), path.join(publicPath, 'cesium/ThirdParty'));
|
||||
await fs.copy(path.join(cesiumBuildPath, 'Workers'), path.join(publicPath, 'cesium/Workers'));
|
||||
await fs.copy(path.join(cesiumBuildPath, 'Widgets'), path.join(publicPath, 'cesium/Widgets'));
|
||||
|
||||
}
|
||||
if (rebuildCesium) {
|
||||
await fs.remove(path.join(publicPath, 'cesium/Cesium.js'));
|
||||
} else {
|
||||
await fs.copy(path.join(cesiumBuildPath, 'Cesium.js'), path.join(publicPath, 'cesium/Cesium.js'));
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
console.error('copy failed');
|
||||
console.error('copy failed', err);
|
||||
}
|
||||
},
|
||||
|
||||
config() {
|
||||
return {
|
||||
build: {
|
||||
assetsInlineLimit: 0,
|
||||
chunkSizeWarningLimit: 4000
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
transformIndexHtml() {
|
||||
return [
|
||||
{
|
||||
tag: 'link',
|
||||
attrs: { rel: 'stylesheet', href: 'cesium/Widgets/widgets.css' },
|
||||
},
|
||||
{
|
||||
tag: 'script',
|
||||
children: 'window.CESIUM_BASE_URL = "/cesium/"'
|
||||
}
|
||||
];
|
||||
const tags: HtmlTagDescriptor[] = [{ tag: 'link', attrs: { rel: 'stylesheet', href: 'cesium/Widgets/widgets.css' } }];
|
||||
if (!rebuildCesium) {
|
||||
tags.push({ tag: 'script', attrs: { src: 'cesium/Cesium.js' } });
|
||||
}
|
||||
return tags;
|
||||
},
|
||||
};
|
||||
}
|
52
yarn.lock
52
yarn.lock
@@ -2,11 +2,24 @@
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@rollup/pluginutils@^4.0.0":
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npm.taobao.org/@rollup/pluginutils/download/@rollup/pluginutils-4.1.0.tgz?cache=0&sync_timestamp=1603765949266&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40rollup%2Fpluginutils%2Fdownload%2F%40rollup%2Fpluginutils-4.1.0.tgz#0dcc61c780e39257554feb7f77207dceca13c838"
|
||||
integrity sha1-Dcxhx4DjkldVT+t/dyB9zsoTyDg=
|
||||
dependencies:
|
||||
estree-walker "^2.0.1"
|
||||
picomatch "^2.2.2"
|
||||
|
||||
"@tsconfig/node12@^1.0.7":
|
||||
version "1.0.7"
|
||||
resolved "https://registry.npm.taobao.org/@tsconfig/node12/download/@tsconfig/node12-1.0.7.tgz#677bd9117e8164dc319987dd6ff5fc1ba6fbf18b"
|
||||
integrity sha1-Z3vZEX6BZNwxmYfdb/X8G6b78Ys=
|
||||
|
||||
"@types/estree@*":
|
||||
version "0.0.46"
|
||||
resolved "https://registry.npm.taobao.org/@types/estree/download/@types/estree-0.0.46.tgz?cache=0&sync_timestamp=1613378493125&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Festree%2Fdownload%2F%40types%2Festree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe"
|
||||
integrity sha1-D7a/u+q9ejCIBQSZM2nEvx3qsf4=
|
||||
|
||||
"@types/fs-extra@^9.0.8":
|
||||
version "9.0.8"
|
||||
resolved "https://registry.npm.taobao.org/@types/fs-extra/download/@types/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba"
|
||||
@@ -34,6 +47,11 @@ esbuild@^0.8.52:
|
||||
resolved "https://registry.npm.taobao.org/esbuild/download/esbuild-0.8.54.tgz?cache=0&sync_timestamp=1614592024973&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesbuild%2Fdownload%2Fesbuild-0.8.54.tgz#2f32ff80e95c69a0f25b799d76a27c05e2857cdf"
|
||||
integrity sha1-LzL/gOlcaaDyW3mddqJ8BeKFfN8=
|
||||
|
||||
estree-walker@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npm.taobao.org/estree-walker/download/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||
integrity sha1-UvAQF4wqTBF6d1fP6UKtt9LaTKw=
|
||||
|
||||
fs-extra@^9.1.0:
|
||||
version "9.1.0"
|
||||
resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-9.1.0.tgz?cache=0&sync_timestamp=1611075555649&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-extra%2Fdownload%2Ffs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
|
||||
@@ -73,6 +91,13 @@ is-core-module@^2.2.0:
|
||||
dependencies:
|
||||
has "^1.0.3"
|
||||
|
||||
is-reference@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npm.taobao.org/is-reference/download/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
|
||||
integrity sha1-iy2sCzcfS8mU/eq6nrVC0DAC0Lc=
|
||||
dependencies:
|
||||
"@types/estree" "*"
|
||||
|
||||
jsonfile@^6.0.1:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.npm.taobao.org/jsonfile/download/jsonfile-6.1.0.tgz?cache=0&sync_timestamp=1604164898625&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
|
||||
@@ -82,6 +107,13 @@ jsonfile@^6.0.1:
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
magic-string@^0.25.7:
|
||||
version "0.25.7"
|
||||
resolved "https://registry.npm.taobao.org/magic-string/download/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
|
||||
integrity sha1-P0l9b9NMZpxnmNy4IfLvMfVEUFE=
|
||||
dependencies:
|
||||
sourcemap-codec "^1.4.4"
|
||||
|
||||
nanoid@^3.1.20:
|
||||
version "3.1.20"
|
||||
resolved "https://registry.npm.taobao.org/nanoid/download/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788"
|
||||
@@ -92,6 +124,11 @@ path-parse@^1.0.6:
|
||||
resolved "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
|
||||
integrity sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=
|
||||
|
||||
picomatch@^2.2.2:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
|
||||
integrity sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=
|
||||
|
||||
postcss@^8.2.1:
|
||||
version "8.2.6"
|
||||
resolved "https://registry.npm.taobao.org/postcss/download/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe"
|
||||
@@ -109,6 +146,16 @@ resolve@^1.19.0:
|
||||
is-core-module "^2.2.0"
|
||||
path-parse "^1.0.6"
|
||||
|
||||
rollup-plugin-external-globals@^0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.npm.taobao.org/rollup-plugin-external-globals/download/rollup-plugin-external-globals-0.6.1.tgz#861c260b5727144e0fd1b424b103f9f0282fc365"
|
||||
integrity sha1-hhwmC1cnFE4P0bQksQP58Cgvw2U=
|
||||
dependencies:
|
||||
"@rollup/pluginutils" "^4.0.0"
|
||||
estree-walker "^2.0.1"
|
||||
is-reference "^1.2.1"
|
||||
magic-string "^0.25.7"
|
||||
|
||||
rollup@^2.38.5:
|
||||
version "2.40.0"
|
||||
resolved "https://registry.npm.taobao.org/rollup/download/rollup-2.40.0.tgz#efc218eaede7ab590954df50f96195188999c304"
|
||||
@@ -121,6 +168,11 @@ source-map@^0.6.1:
|
||||
resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1604409581245&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM=
|
||||
|
||||
sourcemap-codec@^1.4.4:
|
||||
version "1.4.8"
|
||||
resolved "https://registry.npm.taobao.org/sourcemap-codec/download/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
||||
integrity sha1-6oBL2UhXQC5pktBaOO8a41qatMQ=
|
||||
|
||||
typescript@^4.2.2:
|
||||
version "4.2.2"
|
||||
resolved "https://registry.npm.taobao.org/typescript/download/typescript-4.2.2.tgz?cache=0&sync_timestamp=1614497564110&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftypescript%2Fdownload%2Ftypescript-4.2.2.tgz#1450f020618f872db0ea17317d16d8da8ddb8c4c"
|
||||
|
Reference in New Issue
Block a user