esbuild 0.16.15
-
Add
formatto input files in the JSON metafile dataWhen
--metafileis enabled, input files may now have an additionalformatfield that indicates the export format used by this file. When present, the value will either becjsfor CommonJS-style exports oresmfor ESM-style exports. This can be useful in bundle analysis.For example, esbuild's new Bundle Size Analyzer now uses this information to visualize whether ESM or CommonJS was used for each directory and file of source code (click on the CJS/ESM bar at the top).
This information is helpful when trying to reduce the size of your bundle. Using the ESM variant of a dependency instead of the CommonJS variant always results in a faster and smaller bundle because it omits CommonJS wrappers, and also may result in better tree-shaking as it allows esbuild to perform tree-shaking at the statement level instead of the module level.
-
Fix a bundling edge case with dynamic import (#2793)
This release fixes a bug where esbuild's bundler could produce incorrect output. The problematic edge case involves the entry point importing itself using a dynamic
import()expression in an imported file, like this:// src/a.js export const A = 42; // src/b.js export const B = async () => (await import(".")).A // src/index.js export * from "./a" export * from "./b" -
Remove new type syntax from type declarations in the
esbuildpackage (#2798)Previously you needed to use TypeScript 4.3 or newer when using the
esbuildpackage from TypeScript code due to the use of a getter in an interface innode_modules/esbuild/lib/main.d.ts. This release removes this newer syntax to allow people with versions of TypeScript as far back as TypeScript 3.5 to use this latest version of theesbuildpackage. Here is change that was made to esbuild's type declarations:export interface OutputFile { /** "text" as bytes */ contents: Uint8Array; /** "contents" as text (changes automatically with "contents") */ - get text(): string; + readonly text: string; }