Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

supports-esm

targos36.4kMIT1.0.0

Detect at runtime if Node.js supports ECMAScript modules

ESM, support, ES Modules

readme

supports-esm

NPM version build status npm download License

Detect at runtime if Node.js supports ECMAScript modules.

Installation

$ npm install supports-esm

Usage

This library exports true if the current Node.js version is considered to have reasonable support for ESM features, false otherwise.

Version 1.x returns true if the following features are all present:

  • Dynamic imports
  • "exports" field in package.json, including conditional exports
  • Package self-reference

One notable use case is to conditionally execute an ESM or CommonJS entrypoint from a "bin" script, such as a command-line interface authored in ESM and transpiled to CommonJS for backwards compatibility:

'use strict';

const supportsESM = require('supports-esm');

if (supportsESM) {
  import('../src/cli.js').catch((error) => {
    console.error(error);
    process.exit(1);
  });
} else {
  require('../build-cjs/cli.js');
}

This snippet works in all Node.js versions >= 10.0.0.