What is @esbuild/win32-x64?
The @esbuild/win32-x64 npm package is a binary package for the esbuild bundler and minifier tool. It is specifically compiled for Windows x64 systems. Esbuild is a fast JavaScript bundler and minifier that compiles TypeScript, JavaScript, and JSX files into a single output file. It is designed to be extremely fast and to provide a simpler and more efficient workflow for web development.
What are @esbuild/win32-x64's main functionalities?
Bundling JavaScript
This feature allows you to bundle multiple JavaScript files into a single output file, which can be used in a browser or other JavaScript environments.
require('esbuild').build({
entryPoints: ['app.js'],
bundle: true,
outfile: 'out.js'
}).catch(() => process.exit(1))
Minifying JavaScript
This feature enables the minification of JavaScript code to reduce file size, which is beneficial for faster loading times in production environments.
require('esbuild').build({
entryPoints: ['app.js'],
minify: true,
outfile: 'out.js'
}).catch(() => process.exit(1))
Transpiling TypeScript
This feature allows you to transpile TypeScript code into JavaScript, enabling you to use TypeScript's features while maintaining compatibility with JavaScript environments.
require('esbuild').build({
entryPoints: ['app.ts'],
bundle: true,
outfile: 'out.js'
}).catch(() => process.exit(1))
JSX Support
This feature provides support for JSX syntax, commonly used in React applications, allowing you to bundle and transpile JSX files directly.
require('esbuild').build({
entryPoints: ['app.jsx'],
bundle: true,
outfile: 'out.js'
}).catch(() => process.exit(1))
Other packages similar to @esbuild/win32-x64
webpack
Webpack is a powerful module bundler that can handle not only JavaScript but also assets like images, fonts, and stylesheets. It has a larger ecosystem of plugins and loaders, allowing for a highly customizable build process. Compared to esbuild, webpack is more established but generally slower due to its more complex features.
rollup
Rollup is another JavaScript module bundler that is well-suited for libraries and applications. It uses a different approach to bundling than webpack, focusing on the efficiency of the final bundle. Rollup is known for producing smaller bundles, but esbuild is typically faster in terms of build speed.
parcel
Parcel is a web application bundler that offers a zero-configuration experience. It is designed to be fast and easy to use, automatically handling transformations and dependencies. While Parcel is user-friendly and fast, esbuild often outperforms it in terms of raw build speed.
terser
Terser is a JavaScript parser, mangler, and compressor toolkit for ES6+. It is commonly used for minifying JavaScript files. Unlike esbuild, terser does not bundle files but focuses solely on minifying and optimizing JavaScript code.
0.23.0
This release deliberately contains backwards-incompatible changes. To avoid automatically picking up releases like this, you should either be pinning the exact version of esbuild
in your package.json
file (recommended) or be using a version range syntax that only accepts patch upgrades such as ^0.22.0
or ~0.22.0
. See npm's documentation about semver for more information.
-
Revert the recent change to avoid bundling dependencies for node (#3819)
This release reverts the recent change in version 0.22.0 that made --packages=external
the default behavior with --platform=node
. The default is now back to --packages=bundle
.
I've just been made aware that Amazon doesn't pin their dependencies in their "AWS CDK" product, which means that whenever esbuild publishes a new release, many people (potentially everyone?) using their SDK around the world instantly starts using it without Amazon checking that it works first. This change in version 0.22.0 happened to break their SDK. I'm amazed that things haven't broken before this point. This revert attempts to avoid these problems for Amazon's customers. Hopefully Amazon will pin their dependencies in the future.
In addition, this is probably a sign that esbuild is used widely enough that it now needs to switch to a more complicated release model. I may have esbuild use a beta channel model for further development.
-
Fix preserving collapsed JSX whitespace (#3818)
When transformed, certain whitespace inside JSX elements is ignored completely if it collapses to an empty string. However, the whitespace should only be ignored if the JSX is being transformed, not if it's being preserved. This release fixes a bug where esbuild was previously incorrectly ignoring collapsed whitespace with --jsx=preserve
. Here is an example:
// Original code
<Foo>
<Bar />
</Foo>
// Old output (with --jsx=preserve)
<Foo><Bar /></Foo>;
// New output (with --jsx=preserve)
<Foo>
<Bar />
</Foo>;