Usa Baseline con Browserslist

Fecha de publicación: 7 de mayo de 2025

Browserslist es una de las herramientas más populares para configurar las versiones mínimas de navegadores compatibles en bases de código de frontend. Los desarrolladores agregan una consulta browserslist a su archivo package.json, y Browserslist expone una lista de navegadores compatibles mínimos. Browserslist se puede usar con una amplia variedad de herramientas populares de linting, polyfilling y empaquetado, como las siguientes:

Objetivos de referencia

Cuando decidas usar el modelo de referencia, debes considerar tu base de usuarios y decidir a qué conjunto de atributos del modelo de referencia deseas segmentar tus anuncios:

  • Estándar ampliamente disponible incluye todas las funciones web que el navegador principal del modelo de referencia admitía por completo hace 30 o más meses.
  • Los conjuntos de funciones del año de referencia, por ejemplo, Base de referencia de 2020, incluyen todas las funciones que estaban disponibles recientemente al final del año especificado.

Según tu base de usuarios, es posible que puedas segmentar tus anuncios para la versión de Baseline ampliamente disponible o que debas segmentar tus anuncios para un año anterior de Baseline. Consulta tus herramientas de estadísticas o RUM para comprender qué versiones de navegadores tienen tus usuarios.

Instalar browserslist-config-baseline

Una vez que decidas qué conjunto de funciones de Baseline deseas segmentar, puedes aplicar ese objetivo a tus herramientas para desarrolladores. La forma más sencilla de hacerlo para cualquier herramienta que use browserslist es instalar browserslist-config-baseline:

# npm
npm i browserslist-config-baseline@latest -D

# yarn
yarn add --latest browserslist-config-baseline -D

# bun
bun add browserslist-config-baseline@latest -d

Cómo segmentar anuncios para el modelo de referencia está disponible de forma general

Para segmentar el modelo de referencia ampliamente disponible, actualiza o agrega una configuración de browserlist en package.json con la palabra clave extends:

{
  ...
  "browserslist": [
    "extends browserslist-config-baseline"
   ]
  ...
}

Cuando browserslist cargue su lista de navegadores compatibles, browserslist-config-baseline generará de forma dinámica las versiones mínimas actuales del navegador que admitan todas las funciones que ahora están disponibles de forma general. También puedes agregar extends browserslist-config-baseline a un archivo .browserslistrc y se controlará de la misma manera.

Cómo segmentar tus anuncios para años de Baseline

Si deseas segmentar tus anuncios para un conjunto de atributos de año de referencia, agrega un / y el año en el formato YYYY al final de tu consulta browserslist:

"browserslist": "extends browserslist-config-baseline/2020"

Cómo especificar navegadores descendentes

El conjunto de navegadores principales de Baseline incluye Chrome, Edge, Firefox y Safari. Otros navegadores se basan en el mismo código de código abierto que Chrome y Edge (Chromium) y deberían admitir el mismo conjunto de funciones que cualquier versión de Chromium que implementen.

browserslist-config-baseline usa baseline-browser-mapping para correlacionar las versiones de navegador con los conjuntos de funciones que admiten. Las asignaciones para UC Browser para dispositivos móviles y QQ Browser para dispositivos móviles están disponibles en baseline-browser-mapping, y es posible que se incluyan otros navegadores en el futuro.

Para incluir estos navegadores en la configuración de Baseline, agrega /with-downstream inmediatamente después del nombre del módulo en la configuración de browserslist:

"browserslist": "extends browserslist-config-baseline/with-downstream"

o:

"browserslist": "extends browserslist-config-baseline/with-downstream/2020"

Ejemplos de browserslist-config-baseline en acción

En las herramientas de empaquetado

Agregar browserslist-config-baseline a tu repositorio puede tener un efecto inmediato. Babel es una herramienta de compilación popular para empaquetar JavaScript. Si usas los valores predeterminados del paquete @babel/preset-env, muchos métodos y APIs de JavaScript modernos se reemplazarán por la sintaxis más detallada que requieren los navegadores más antiguos:

Una sesión de terminal que muestra que se ejecutó el comando npm run build en un archivo JavaScript llamado test.js.  El tamaño del archivo de salida es de 12 kilobytes.

Sin embargo, configurar browserslist-config-baseline para apuntar al modelo de referencia de 2020 en el mismo proyecto de ejemplo disminuye de forma significativa el tamaño de salida de este código JavaScript, ya que se requieren menos transformaciones de sintaxis:

Una segunda sesión de la terminal que muestra que el comando npm run build ahora produjo un archivo de 1.5 kilobytes cuando babel se configuró para apuntar al modelo de referencia de 2020.

Pruébalo con el código de ejemplo del repositorio baseline-demos de Google Chrome Labs.

En linters

Algunos linters ya funcionan con Browserslist o se pueden hacer que funcionen con Browserslist mediante un módulo de compatibilidad. Por ejemplo, stylelint puede consumir una configuración de browserslist con el módulo stylelint-browser-compat. Configura tu archivo stylelint.config.js para usar browserslist-config-baseline:

module.exports = {
  plugins: ['stylelint-browser-compat'],
  rules: {
    'plugin/browser-compat': [
      true,
      {
        browserslist: ['extends browserslist-config-baseline'],
      },
    ],
  },
};

Stylelint ahora marcará el CSS que actualmente no forma parte del modelo de referencia disponible de forma general:

una lista de advertencias de Stylelint que destaca el código CSS que no funciona en navegadores más antiguos

Stylelint también proporciona un complemento que te permite establecer reglas de Baseline directamente, pero si ya usas browserslist para controlar tu configuración, browserslist-config-baseline es una solución integrada.

Cómo contribuir a browserslist-config-baseline

Si quieres realizar una solicitud de función para browserslist-config-baseline, crea un problema o una solicitud de extracción en el repositorio de GitHub.

Si quieres contribuir con más datos de navegadores downstream o informar un problema de datos, crea un problema o una solicitud de extracción en el repositorio de baseline-browser-mapping.