編譯時標誌
提示
編譯時標誌僅在使用 Vue 的 esm-bundler 構建版本時適用(即 vue/dist/vue.esm-bundler.js)。
在使用 Vue 進行構建時,可以配置一系列編譯時標誌以啟用或停用某些功能。使用編譯時標誌的優點是,透過這種方式停用的功能可以透過搖樹最佳化從最終包中刪除。
即使沒有明確配置這些標誌,Vue 仍然可以工作。然而,建議始終配置它們,以便在可能的情況下正確刪除相關功能。
有關如何根據您的構建工具配置它們,請參閱配置指南。
__VUE_OPTIONS_API__
預設值:
true啟用/停用選項 API 支援。停用此選項將導致包體積更小,但可能會影響與依賴選項 API 的第三方庫的相容性。
__VUE_PROD_DEVTOOLS__
預設值:
false啟用/停用生產構建中的 devtools 支援。這將導致包中包含更多程式碼,因此建議僅用於除錯目的。
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__
預設值:
false啟用/停用生產構建中水合不匹配的詳細警告。這將導致捆綁包中包含更多程式碼,因此建議僅用於除錯目的。
僅在3.4+版本中可用
配置指南
Vite
@vitejs/plugin-vue 自動為這些標誌提供預設值。要更改預設值,請使用 Vite 的 define 配置選項
js
// vite.config.js
import { defineConfig } from 'vite'
export default defineConfig({
define: {
// enable hydration mismatch details in production build
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'true'
}
})vue-cli
@vue/cli-service 自動為這些標誌提供一些預設值。要配置/更改值
js
// vue.config.js
module.exports = {
chainWebpack: (config) => {
config.plugin('define').tap((definitions) => {
Object.assign(definitions[0], {
__VUE_OPTIONS_API__: 'true',
__VUE_PROD_DEVTOOLS__: 'false',
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false'
})
return definitions
})
}
}webpack
標誌應使用 webpack 的 DefinePlugin 定義
js
// webpack.config.js
module.exports = {
// ...
plugins: [
new webpack.DefinePlugin({
__VUE_OPTIONS_API__: 'true',
__VUE_PROD_DEVTOOLS__: 'false',
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false'
})
]
}Rollup
標誌應使用 @rollup/plugin-replace 定義
js
// rollup.config.js
import replace from '@rollup/plugin-replace'
export default {
plugins: [
replace({
__VUE_OPTIONS_API__: 'true',
__VUE_PROD_DEVTOOLS__: 'false',
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false'
})
]
}