Tengo una configuración simple de babel que transpila el último código ES en el objetivo, que es 12.x pero cuando intento usar las últimas funciones de ES, como el encadenamiento opcional, a eslint no le gusta.
Mi configuración de babel es así:
{ "sourceMaps": "inline", "presets": [ [ "@babel/preset-env", { "targets": { "node": "current" } } ] ], "plugins": [ "@babel/plugin-transform-runtime", [ "module-resolver", { "alias": { "^@/(.+)": "./src/\\1" } } ] ] }y una configuración de eslint así:
module.exports = { extends: [ 'airbnb', 'airbnb/hooks', 'plugin:jest/recommended', 'plugin:jest/style', 'plugin:cypress/recommended', 'eslint-config-prettier', ], env: { node: true, es6: true, jest: true, browser: true, }, plugins: ['no-autofix', 'jest', 'cypress'], rules: { ... }, parserOptions: { sourceType: 'module', ecmaVersion: 2019, ecmaFeatures: { jsx: true, }, } };¿Cómo puedo decirle a eslint que la versión ES en realidad no es el nodo v12.x sino la 'última'?
Resulta que necesitaba actualizar parserOptions.ecmaVersion para ser 2021
Si está utilizando ESLint 8 (y debería), en su configuración de ESLint, reemplace es6: true con es2021: true y elimine ecmaVersion: 2019 . Según la documentación este
agrega todos los globales de ECMAScript 2021 y establece automáticamente la opción del analizador
ecmaVersionen 12.
Si realmente desea analizar la última versión del idioma en lugar de ES2021, entonces en parserOptions puede configurar ecmaVersion: "latest" .