How to list what transforms @babel/preset-env includes?

Viewed 1699

I like how I can use http://browserl.ist/ to see what browsers the targets query will target in @babel/preset-env.

Is there any similar tools to list what Babel plugins (transforms etc.) the env preset actually includes?

I'm using Webpack as my bundler if it matters.

4 Answers

try add debug:true in @babel/preset-env options, it will list all plugin in use

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "debug": true,
        "targets": {
          "chrome": 49,
          "firefox": 64,
          "safari": 9,
          "edge": 13,
          "ios": 9
        }
      }
    ]
  ]
}

enter image description here

It's just a simple config in your .babelrc or babel.config.js file.

"@babel/preset-env",
  {
    useBuiltIns: "usage",
    debug: true, // this will make babel output actual transform plugins and polyfills in terminal
    targets: {
      chrome: "53",
    },
    corejs: 3,
  },

But this will not work when you use webpack

As pointed out by @rabidpug, available-plugins.js lists all plugins.

However, which ones are being used depend on your config.

E.g.:

Solution

Luckily, preset-env has a debug option that just prints out all plugins used when the preset is invoked.

Just add debug to your preset-env options and it will list all plugins (and more).

For convinience, I wrote this little script that independently debugs your plugins list (given a custom set of preset-env options). Run it using node list-preset-env-plugins.js in a folder where you have babel installed:

// list-preset-env-plugins.js

const babelCore = require('@babel/core');
const presetEnv = require('@babel/preset-env').default;

/**
 * Your preset-env options.
 * @see https://babeljs.io/docs/en/babel-preset-env#options
 */
const presetEnvOptions = {
  shippedProposals: true,
  debug: true
};

/**
 * @see https://github.com/babel/babel/blob/master/packages/babel-helper-plugin-utils/src/index.js
 */
const apiStub = {
  version: babelCore.version,
  assertVersion() { }
};

// invoke the preset
presetEnv(apiStub, presetEnvOptions);
Related