babel-preset-evergreen

raw JSON →
0.11.13 verified Sat Apr 25 auth: no javascript

A Babel preset targeting modern JavaScript (ES2024) with automatic polyfill management via core-js. Current version 0.11.13 requires @babel/core ^7.29.0 and Node >=20.18.0. Unlike other presets like @babel/preset-env, evergreen focuses on evergreen browsers and offers flexible polyfill strategies (global or pure) with mini-program support. Release cadence is irregular; package is part of the best-shot ecosystem.

error Error [ERR_REQUIRE_ESM]: require() of ES Module /path/to/babel-preset-evergreen/index.js from /path/to/project/babel.config.js not supported.
cause Using require() to load babel-preset-evergreen in babel.config.js (CommonJS) while package is ESM-only.
fix
Rename file to babel.config.mjs or use the string preset name: "presets": ["evergreen"].
error Error: [BABEL] unknown preset: "babel-preset-evergreen"
cause Using the full package name (including 'babel-preset-') in the presets array instead of just 'evergreen'.
fix
Use "evergreen" as the preset name. Babel resolves 'evergreen' to 'babel-preset-evergreen'.
error SyntaxError: Unexpected token 'export' (or modern feature not transpiled)
cause Missing or incorrect Babel configuration; preset not applied.
fix
Ensure babel.config.json exists with correct presets array and that Babel is run on the files.
breaking Requires Node >=20.18.0 and @babel/core ^7.29.0. Older Node or Babel versions will fail.
fix Update Node to >=20.18.0 and @babel/core to ^7.29.0.
breaking ESM-only since v0.11.0. CommonJS require() throws ERR_REQUIRE_ESM.
fix Use import or dynamic import. For babel config, use string preset name 'evergreen', not require().
deprecated core-js@2 is not supported; peg core-js@3 to avoid polyfill conflicts.
fix Run: npm install core-js@3 --save-dev or pin in package.json.
gotcha When using polyfill option, 'usage: global' adds polyfills globally, possibly impacting other code. 'pure' adds per-file imports.
fix Choose 'global' for CLIs/libraries, 'pure' for applications to avoid global scope pollution.
deprecated The 'polyfill.mini' option enables miniprogram presets which are rarely used and may be dropped.
fix Avoid using polyfill.mini unless targeting miniprogram environments.
npm install babel-preset-evergreen
yarn add babel-preset-evergreen
pnpm add babel-preset-evergreen

Configures Babel to transpile modern JS and add global polyfills for Chrome 60+.

// Install: npm install babel-preset-evergreen @babel/core --save-dev
// babel.config.json
{
  "targets": "chrome >= 60",
  "presets": [
    [
      "evergreen",
      {
        "polyfill": {
          "usage": "global"
        }
      }
    ]
  ]
}
// This config transforms modern JS and adds global polyfills for targets chrome >= 60.