What is @esbuild/win32-ia32?
The @esbuild/win32-ia32 npm package is a binary distribution of esbuild for Windows (32-bit) systems. Esbuild is an extremely fast JavaScript bundler and minifier. It compiles TypeScript and JavaScript into code that can run in the browser, and it can bundle many files into a single output file. It's designed to be very fast and efficient.
What are @esbuild/win32-ia32's main functionalities?
Bundling JavaScript
This feature allows you to bundle multiple JavaScript files into a single file, which can be useful for reducing the number of HTTP requests needed to load a web page.
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, which reduces file size by removing unnecessary characters without changing its functionality.
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, making it possible to use TypeScript's features while still targeting environments that only support JavaScript.
require('esbuild').build({
entryPoints: ['app.ts'],
outfile: 'out.js',
}).catch(() => process.exit(1))
Other packages similar to @esbuild/win32-ia32
webpack
Webpack is a powerful module bundler that can transform front-end assets like HTML, CSS, and JavaScript. It's more configurable than esbuild but generally slower due to its complexity and feature-rich nature.
parcel
Parcel is a web application bundler that offers a zero-configuration experience. It's known for its simplicity and speed, but esbuild typically outperforms it in terms of build times.
rollup
Rollup is another module bundler for JavaScript which is best known for its tree-shaking capabilities, allowing for the creation of smaller bundles. It's more focused on bundling for libraries and has a different scope compared to esbuild's focus on speed.
terser
Terser is a JavaScript parser, mangler and compressor toolkit for ES6+. It's specifically focused on minification and is often used in conjunction with other bundling tools rather than as a standalone bundler like esbuild.
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>;