Helper functions on Babel compilation targets for determining browser compatibility and required transforms
npx @tessl/cli install tessl/npm-babel--helper-compilation-targets@7.27.0@babel/helper-compilation-targets provides essential helper functions for determining and managing Babel compilation targets. It integrates with browserslist to parse target configurations, provides utilities for working with semantic versions and browser compatibility data, implements caching for performance optimization, and offers debugging capabilities.
npm install @babel/helper-compilation-targetsimport getTargets, {
prettifyTargets,
getInclusionReasons,
filterItems,
isRequired,
targetsSupported,
isBrowsersQueryValid,
TargetNames,
unreleasedLabels,
type Target,
type Targets,
type InputTargets,
type GetTargetsOption
} from "@babel/helper-compilation-targets";For CommonJS:
const getTargets = require("@babel/helper-compilation-targets").default;
const {
prettifyTargets,
getInclusionReasons,
filterItems,
isRequired,
targetsSupported,
isBrowsersQueryValid,
TargetNames,
unreleasedLabels
} = require("@babel/helper-compilation-targets");import getTargets from "@babel/helper-compilation-targets";
// Basic target resolution
const targets = getTargets({
browsers: ["chrome >= 60", "firefox >= 55"],
node: "14"
});
// Result: { chrome: "60.0.0", firefox: "55.0.0", node: "14.0.0" }
// Use browserslist query
const browserTargets = getTargets({
browsers: "defaults"
});
// Check for ES modules support
const esmTargets = getTargets({
browsers: "defaults",
esmodules: true
});The package is structured around several key components:
getTargets function that normalizes various input formats into consistent target objectstype Target =
| "node" | "deno" | "chrome" | "opera" | "edge" | "firefox"
| "safari" | "ie" | "ios" | "android" | "electron" | "samsung" | "rhino" | "opera_mobile";
interface Targets {
[target in Target]?: string;
}
interface InputTargets extends Targets {
browsers?: string | ReadonlyArray<string>;
esmodules?: boolean | "intersect";
}
interface GetTargetsOption {
configPath?: string;
configFile?: string;
browserslistEnv?: string;
ignoreBrowserslistConfig?: boolean;
onBrowserslistConfigFound?: (configFile: string) => void;
}Core functionality for resolving and normalizing compilation targets from various input formats including browserslist queries, individual environment versions, and ES modules support.
function getTargets(inputTargets?: InputTargets, options?: GetTargetsOption): Targets;Functions for determining which features, plugins, or transforms are required based on target browser support and compatibility data.
function filterItems(
list: { [feature: string]: Targets },
includes: Set<string>,
excludes: Set<string>,
targets: Targets,
defaultIncludes: Array<string> | null,
defaultExcludes?: Array<string> | null,
pluginSyntaxMap?: Map<string, string | null>
): Set<string>;
function isRequired(
name: string,
targets: Targets,
options?: {
compatData?: { [feature: string]: Targets };
includes?: Set<string>;
excludes?: Set<string>;
}
): boolean;Utilities for formatting targets for display and debugging why certain features are included or excluded for specific compilation targets.
function prettifyTargets(targets: Targets): Targets;
function getInclusionReasons(
item: string,
targetVersions: Targets,
list: { [key: string]: Targets }
): Partial<Record<Target, string>>;Exported constants and utility functions for validation and target name management.
const TargetNames: {
readonly node: "node";
readonly deno: "deno";
readonly chrome: "chrome";
readonly opera: "opera";
readonly edge: "edge";
readonly firefox: "firefox";
readonly safari: "safari";
readonly ie: "ie";
readonly ios: "ios";
readonly android: "android";
readonly electron: "electron";
readonly samsung: "samsung";
readonly rhino: "rhino";
readonly opera_mobile: "opera_mobile";
};
const unreleasedLabels: {
readonly safari: "tp";
};
function isBrowsersQueryValid(browsers: unknown): boolean;