What is @esbuild/freebsd-x64?
The @esbuild/freebsd-x64 npm package is a binary package for esbuild, an extremely fast JavaScript bundler and minifier. This specific package is tailored for FreeBSD x64 systems. It allows developers to bundle JavaScript files for the browser, transpile TypeScript, and minify code among other functionalities, directly on FreeBSD x64 systems.
What are @esbuild/freebsd-x64's main functionalities?
JavaScript Bundling
This code sample demonstrates how to bundle a JavaScript file along with its dependencies into a single file. This is useful for optimizing web applications for production.
require('esbuild').build({
entryPoints: ['app.js'],
bundle: true,
outfile: 'out.js'
}).catch(() => process.exit(1))
TypeScript Transpilation
This example shows how to transpile TypeScript files into JavaScript, allowing developers to use TypeScript's features while targeting environments that only support JavaScript.
require('esbuild').build({
entryPoints: ['app.ts'],
bundle: true,
outfile: 'out.js',
loader: { '.ts': 'ts' }
}).catch(() => process.exit(1))
Code Minification
This code snippet demonstrates the minification of JavaScript code to reduce file size, which is beneficial for improving load times on web pages.
require('esbuild').build({
entryPoints: ['app.js'],
minify: true,
outfile: 'out.min.js'
}).catch(() => process.exit(1))
Other packages similar to @esbuild/freebsd-x64
webpack
Webpack is a powerful module bundler that can transform, bundle, or package just about any resource or asset. Compared to @esbuild/freebsd-x64, webpack offers a more extensive plugin system and configuration options, but esbuild is known for its speed and simplicity.
parcel
Parcel is a web application bundler, differentiated by its developer-friendly zero configuration approach. While Parcel and @esbuild/freebsd-x64 both aim to simplify the bundling process, esbuild typically offers faster build times due to its efficient Go-based architecture.
rollup
Rollup is a module bundler for JavaScript which compiles small pieces of code into something larger and more complex, such as a library or application. Rollup focuses on ES modules, making it ideal for libraries. Compared to @esbuild/freebsd-x64, Rollup has a different focus but both provide efficient bundling solutions.
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>;