npm esbuild 0.15.6
v0.15.6

latest releases: 0.21.3, 0.21.2, 0.21.1...
20 months ago
  • Lower for await loops (#1930)

    This release lowers for await loops to the equivalent for loop containing await when esbuild is configured such that for await loops are unsupported. This transform still requires at least generator functions to be supported since esbuild's lowering of await currently relies on generators. This new transformation is mostly modeled after what the TypeScript compiler does. Here's an example:

    async function f() {
      for await (let x of y)
        x()
    }

    The code above will now become the following code with --target=es2017 (omitting the code for the __forAwait helper function):

    async function f() {
      try {
        for (var iter = __forAwait(y), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
          let x = temp.value;
          x();
        }
      } catch (temp) {
        error = [temp];
      } finally {
        try {
          more && (temp = iter.return) && await temp.call(iter);
        } finally {
          if (error)
            throw error[0];
        }
      }
    }
  • Automatically fix invalid supported configurations (#2497)

    The --target= setting lets you tell esbuild to target a specific version of one or more JavaScript runtimes such as chrome80,node14 and esbuild will restrict its output to only those features supported by all targeted JavaScript runtimes. More recently, esbuild introduced the --supported: setting that lets you override which features are supported on a per-feature basis. However, this now lets you configure nonsensical things such as --supported:async-await=false --supported:async-generator=true. Previously doing this could result in esbuild building successfully but producing invalid output.

    Starting with this release, esbuild will now attempt to automatically fix nonsensical feature override configurations by introducing more overrides until the configuration makes sense. So now the configuration from previous example will be changed such that async-await=false implies async-generator=false. The full list of implications that were introduced is below:

    • async-await=false implies:

      • async-generator=false
      • for-await=false
      • top-level-await=false
    • generator=false implies:

      • async-generator=false
    • object-accessors=false implies:

      • class-private-accessor=false
      • class-private-static-accessor=false
    • class-field=false implies:

      • class-private-field=false
    • class-static-field=false implies:

      • class-private-static-field=false
    • class=false implies:

      • class-field=false
      • class-private-accessor=false
      • class-private-brand-check=false
      • class-private-field=false
      • class-private-method=false
      • class-private-static-accessor=false
      • class-private-static-field=false
      • class-private-static-method=false
      • class-static-blocks=false
      • class-static-field=false
  • Implement a small minification improvement (#2496)

    Some people write code that contains a label with an immediate break such as x: break x. Previously this code was not removed during minification but it will now be removed during minification starting with this release.

  • Fix installing esbuild via Yarn with enableScripts: false configured (#2457)

    If esbuild is installed with Yarn with the enableScripts: false setting configured, then Yarn will not "unplug" the esbuild package (i.e. it will keep the entire package inside a .zip file). This messes with esbuild's library code that extracts the platform-specific binary executable because that code copies the binary executable into the esbuild package directory, and Yarn's .zip file system shim doesn't let you write to a directory inside of a .zip file. This release fixes this problem by writing to the node_modules/.cache/esbuild directory instead in this case. So you should now be able to use esbuild with Yarn when enableScripts: false is configured.

    This fix was contributed by @jonaskuske.

Don't miss a new esbuild release

NewReleases is sending notifications on new releases.