Skip to content

Banderas de tiempo de compilación

TIP

Las banderas de tiempo de compilación solo se aplican cuando se utiliza la versión esm-bundler de Vue (es decir, vue/dist/vue.esm-bundler.js).

Cuando se utiliza Vue con un paso de compilación, es posible configurar varias banderas de tiempo de compilación para habilitar/deshabilitar ciertas características. El beneficio de usar banderas de tiempo de compilación es que las características deshabilitadas de esta manera pueden eliminarse del paquete final mediante tree-shaking.

Vue funcionará incluso si estas banderas no están configuradas explícitamente. Sin embargo, se recomienda configurarlas siempre para que las características relevantes puedan eliminarse correctamente cuando sea posible.

Consulta las Guías de configuración sobre cómo configurarlas según la herramienta de compilación.

__VUE_OPTIONS_API__

  • Por defecto: true

    Habilita/deshabilita el soporte de Options API. Desactivar esto resultará en paquetes más pequeños, pero puede afectar la compatibilidad con bibliotecas de terceros si dependen del Options API.

__VUE_PROD_DEVTOOLS__

  • Por defecto: false

    Habilita/deshabilita el soporte de herramientas de desarrollo (devtools) en compilaciones de producción. Esto resultará en más código incluido en el paquete, por lo que se recomienda habilitarlo solo con fines de depuración.

__VUE_PROD_HYDRATION_MISMATCH_DETAILS__

  • Por defecto: false

    Habilita/deshabilita advertencias detalladas para discrepancias de hidratación en compilaciones de producción. Esto resultará en más código incluido en el paquete, por lo que se recomienda habilitarlo solo con fines de depuración.

Guías de configuración

Vite

@vitejs/plugin-vue proporciona automáticamente valores por defecto para estas banderas. Para cambiar los valores por defecto, utiliza la opción de configuración define de Vite. Puedes encontrar más información sobre cómo hacerlo en la documentación de opciones compartidas de Vite.

js
// vite.config.js
import { defineConfig } from 'vite'

export default defineConfig({
  define: {
    // Habilitar detalles de discrepancias de hidratación en compilación de producción.
    __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'true'
  }
})

vue-cli

El servicio @vue/cli-service proporciona automáticamente valores por defecto para algunas de estas banderas. Para configurar/cambiar los valores:

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

Las banderas deben definirse utilizando el DefinePlugin de webpack.

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

Las banderas deben definirse utilizando @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'
    })
  ]
}
Banderas de tiempo de compilación has loaded