or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.md
tile.json

index.mddocs/

Babel Preset Latest

Babel Preset Latest is a meta-preset that combines es2015, es2016, and es2017 presets to provide a convenient way to transpile modern JavaScript features for compatibility with older environments. It allows developers to use the latest standardized JavaScript language features while maintaining backward compatibility through Babel's transpilation process.

Package Information

  • Package Name: babel-preset-latest
  • Package Type: npm
  • Language: JavaScript
  • Installation: npm install --save-dev babel-preset-latest

Core Imports

// The preset is imported by Babel automatically when specified in configuration
// No direct imports are needed in your code

Basic Usage

Via .babelrc (Recommended)

{
  "presets": ["latest"]
}

Via CLI

babel script.js --presets latest

Via Node API

require("babel-core").transform("code", {
  presets: ["latest"]
});

Architecture

Babel Preset Latest works as a factory function that:

  • Meta-preset Pattern: Combines multiple year-based presets (es2015, es2016, es2017) into a single configuration
  • Selective Inclusion: Allows individual presets to be enabled/disabled via options
  • Option Forwarding: Passes configuration options down to individual presets (es2015 only)
  • Conditional Loading: Uses boolean logic to conditionally include presets based on configuration
  • Special ES2015 Handling: Uses presetES2015.buildPreset for es2015 to enable option forwarding, while es2016 and es2017 are used directly

Capabilities

Preset Factory Function

The main and only export is a preset factory function that Babel calls to generate the preset configuration.

/**
 * Babel preset factory function that combines es2015, es2016, and es2017 presets
 * @param {Object} context - Babel context object (passed by Babel internally)
 * @param {PresetOptions} opts - Configuration options for the preset
 * @returns {PresetConfig} Babel preset configuration with presets array
 */
function presetFactory(context, opts = {}): PresetConfig;

interface PresetConfig {
  /** Array of preset configurations, filtered to remove disabled presets */
  presets: (string | [string, object])[];
}

interface PresetOptions {
  /** Controls inclusion of es2015 preset. Can be boolean or options object for es2015 */
  es2015?: boolean | object;
  /** Controls inclusion of es2016 preset */
  es2016?: boolean;
  /** Controls inclusion of es2017 preset */
  es2017?: boolean;
}

Option Configuration

Configure which year-based presets to include and pass options to individual presets.

Disable specific presets:

{
  "presets": [
    ["latest", {
      "es2015": false,
      "es2016": false
    }]
  ]
}

Pass options to nested presets (es2015 only):

{
  "presets": [
    ["latest", {
      "es2015": {
        "modules": false,
        "loose": true
      }
    }]
  ]
}

Note: Option forwarding only works for the es2015 preset because it uses presetES2015.buildPreset to accept configuration options. The es2016 and es2017 presets are used directly and can only be enabled/disabled via boolean values.

Full configuration example:

{
  "presets": [
    ["latest", {
      "es2015": {
        "modules": false,
        "loose": true
      },
      "es2016": true,
      "es2017": false
    }]
  ]
}

Types

interface PresetOptions {
  /** 
   * Controls inclusion of babel-preset-es2015
   * - true (default): Include es2015 preset with default options
   * - false: Exclude es2015 preset entirely
   * - object: Include es2015 preset with specified options
   */
  es2015?: boolean | Es2015Options;
  
  /** 
   * Controls inclusion of babel-preset-es2016
   * - true (default): Include es2016 preset
   * - false: Exclude es2016 preset
   */
  es2016?: boolean;
  
  /** 
   * Controls inclusion of babel-preset-es2017
   * - true (default): Include es2017 preset
   * - false: Exclude es2017 preset
   */
  es2017?: boolean;
}

interface Es2015Options {
  /** Whether to compile ES6 modules to another module type */
  modules?: "amd" | "umd" | "systemjs" | "commonjs" | false;
  /** Enable loose mode transformations for more readable output */
  loose?: boolean;
  /** Additional options as supported by babel-preset-es2015 */
  [key: string]: any;
}

Error Handling

The preset factory function handles invalid configurations gracefully:

  • Invalid option values are filtered out using filter(Boolean)
  • Missing dependencies will cause Babel to throw standard module resolution errors
  • Configuration errors are reported by Babel during preset loading phase