我仍然不建议将 Cesium 作为依赖打包进项目,而是使用 CDN 的方式,加速打包且加速首屏时间。
有时候使用 Webpack 技术来打包 Cesium 有关的项目时会有 require 函数警告的问题:
WARNING Compiled with 3 warnings
4:26:41 PM
warning in ./node_modules/cesium/Source/Core/buildModuleUrl.js
114:14-21 Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
warning in ./node_modules/cesium/Source/Core/buildModuleUrl.js
52:12-19 Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
warning in ./node_modules/cesium/Source/Core/buildModuleUrl.js
80:25-32 Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
主要就是这个警告:
Critical dependency: require function is used in a way in which dependencies cannot be statically extracted,发生在 ./node_modules/cesium/Source/Core/buildModuleUrl.js 模块中。
如果能直接修改 Webpack 配置文件,那么在配置对象中加入如下两条配置:
// webpack.config.js
export default {
/* ... */
module: {
unknownContextRegExp = /^('|')\.\/.*?\1$/
unknownContextCritical = false
},
amd: {
toUrlUndefined: true
}
}
如果支持 chainWebpack 接口,譬如 umi.js 之类的框架:
// .umirc.ts
import { defineConfig } from 'umi'
export default defineConfig({
/* ... */
chainWebpack(memo, {env, webpack, createCSSRule}) {
memo.module.set('unknownContextRegExp', /^('|')\.\/.*?\1$/);
memo.module.set('unknownContextCritical', false);
memo.amd({
toUrlUndefined: true
})
}
})