文档页面
在 Vite 与 Webpack 中外部化依赖
将 Vue 等依赖交给 ZStatic CDN 提供,并在 Vite 或 Webpack 中配置外部化。
更新于
如果页面已经从 CDN 加载了某个库,可以让打包工具不再重复打包同一份依赖。以下示例使用 Vue 3.5.13。
Vite
Vite 应用默认输出 ES 模块,外部化后产物中会保留 import ... from 'vue'。浏览器需要通过 import map 知道 vue 对应的地址,因此要引用 Vue 的 ESM 构建:
// vite.config.ts
import { defineConfig } from 'vite';
export default defineConfig({
build: {
rollupOptions: {
// 不把 vue 打进产物
external: ['vue'],
},
},
});
<script type="importmap">
{
"imports": {
"vue": "https://s4.zstatic.net/npm/vue@3.5.13/dist/vue.esm-browser.prod.js"
}
}
</script>
import map 需要放在业务模块脚本之前。external 只作用于 vite build,开发服务器仍使用本地安装的依赖,两边请保持同一版本。
Webpack
Webpack 可以把依赖映射到页面上的全局变量,这时引用 Vue 的全局构建:
// webpack.config.js
module.exports = {
externals: {
vue: 'Vue',
},
};
<script src="https://s4.zstatic.net/ajax/libs/vue/3.5.13/vue.global.prod.js"></script>
配置后,代码中的 import { createApp } from 'vue' 会使用页面上的 Vue 全局变量,构建产物中不再包含 Vue 本体。请确保 CDN 的 <script> 位于业务脚本之前。
发现内容有误或需要补充?欢迎前往 反馈页 告诉我们。