-
Improve TypeScript type definitions (#559)
The return value of the
build
API has some optional fields that are undefined unless certain arguments are present. That meant you had to use the!
null assertion operator to avoid a type error if you have the TypeScriptstrictNullChecks
setting enabled in your project. This release adds additional type information so that if the relevant arguments are present, the TypeScript compiler can tell that these optional fields on the return value will never be undefined. This change was contributed by @lukeed. -
Omit a warning about
require.main
when targeting CommonJS (#560)A common pattern in code that's intended to be run in node is to check if
require.main === module
. That will be true if the current file is being run from the command line but false if the current file is being run because some other code calledrequire()
on it. Previously esbuild generated a warning about an unexpected use ofrequire
. Now this warning is no longer generated forrequire.main
when the output format iscjs
. -
Warn about defining
process.env.NODE_ENV
as an identifier (#466)The define feature can be used to replace an expression with either a JSON literal or an identifier. Forgetting to put quotes around a string turns it into an identifier, which is a common mistake. This release introduces a warning when you define
process.env.NODE_ENV
as an identifier instead of a string. It's very common to use define to replaceprocess.env.NODE_ENV
with either"production"
or"development"
and sometimes people accidentally replace it withproduction
ordevelopment
instead. This is worth warning about because otherwise there would be no indication that something is wrong until the code crashes when run. -
Allow starting a local server at a specific host address (#563)
By default, esbuild's local HTTP server is only available on the internal loopback address. This is deliberate behavior for security reasons, since the local network environment may not be trusted. However, it can be useful to run the server on a different address when developing with esbuild inside of a virtual machine/docker container or to request development assets from a remote testing device on the same network at a different IP address. With this release, you can now optionally specify the host in addition to the port:
esbuild --serve=192.168.0.1:8000
esbuild.serve({ host: '192.168.0.1', port: 8000, }, { ... })
server, err := api.Serve(api.ServeOptions{ Host: "192.168.0.1", Port: 8000, }, api.BuildOptions{ ... })
This change was contributed by @jamalc.