1
0
Code Issues Pull Requests Packages Projects Releases Wiki Activity GitHub Gitee

📦 NEW: add rebuildCesium option

This commit is contained in:
Nshen
2021-03-08 15:03:28 +08:00
committed by nshen
parent 7d8c52b365
commit 4ebdce73cd
4 changed files with 95 additions and 25 deletions

View File

@@ -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
View File

@@ -0,0 +1 @@
declare module 'rollup-plugin-external-globals'

View File

@@ -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;
},
};
}

View File

@@ -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"