esbuild 0.13.6
-
Emit decorators for
declareclass fields (#1675)In version 3.7, TypeScript introduced the
declarekeyword for class fields that avoids generating any code for that field:// TypeScript input class Foo { a: number declare b: number } // JavaScript output class Foo { a; }However, it turns out that TypeScript still emits decorators for these omitted fields. With this release, esbuild will now do this too:
// TypeScript input class Foo { @decorator a: number; @decorator declare b: number; } // Old JavaScript output class Foo { a; } __decorateClass([ decorator ], Foo.prototype, "a", 2); // New JavaScript output class Foo { a; } __decorateClass([ decorator ], Foo.prototype, "a", 2); __decorateClass([ decorator ], Foo.prototype, "b", 2); -
Experimental support for esbuild on NetBSD (#1624)
With this release, esbuild now has a published binary executable for NetBSD in the
esbuild-netbsd-64npm package, and esbuild's installer has been modified to attempt to use it when on NetBSD. Hopefully this makes installing esbuild via npm work on NetBSD. This change was contributed by @gdt.⚠️ Note: NetBSD is not one of Node's supported platforms, so installing esbuild may or may not work on NetBSD depending on how Node has been patched. This is not a problem with esbuild. ⚠️
-
Disable the "esbuild was bundled" warning if
ESBUILD_BINARY_PATHis provided (#1678)The
ESBUILD_BINARY_PATHenvironment variable allows you to substitute an alternate binary executable for esbuild's JavaScript API. This is useful in certain cases such as when debugging esbuild. The JavaScript API has some code that throws an error if it detects that it was bundled before being run, since bundling prevents esbuild from being able to find the path to its binary executable. However, that error is unnecessary ifESBUILD_BINARY_PATHis present because an alternate path has been provided. This release disables the warning whenESBUILD_BINARY_PATHis present so that esbuild can be used when bundled as long as you also manually specifyESBUILD_BINARY_PATH.This change was contributed by @heypiotr.
-
Remove unused
catchbindings when minifying (#1660)With this release, esbuild will now remove unused
catchbindings when minifying:// Original code try { throw 0; } catch (e) { } // Old output (with --minify) try{throw 0}catch(t){} // New output (with --minify) try{throw 0}catch{}This takes advantage of the new optional catch binding syntax feature that was introduced in ES2019. This minification rule is only enabled when optional catch bindings are supported by the target environment. Specifically, it's not enabled when using
--target=es2018or older. Make sure to set esbuild'stargetsetting correctly when minifying if the code will be running in an older JavaScript environment.This change was contributed by @sapphi-red.