How to bootstrap javascript project with esbuild

This article will present a simple code generator for kicking off a browser project that uses esbuild as a bundler.

Code generator

For generating code, I'm using degit. It allows you to start a new project directly from a GitHub repository without dragging anything besides flat files from the original repository. So you can focus on your project instead of cleaning up the starter references.

Code

The application is greatly simplified, and it's very similar to the minimal code example I use in my blog.

index.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>webpack</title>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <script defer="defer" src="dist/main.js"></script>
  </head>
  <body></body>
</html>

src/index.js:

console.log("Hello!");

the build command:

    "build": "esbuild --bundle src/index.js --outfile=dist/main.js"

Usage

To start a new esbuild project, you can run:

npx degit how-to-js/esbuild-starter new-project
npx: installed 1 in 1.968s
> cloned how-to-js/esbuild-starter#HEAD to new-project

After getting basic files, we can install dependencies:

npm install

> esbuild@0.12.24 postinstall /home/marcin/workspace/github/tmp/new-project/node_modules/esbuild
> node install.js

npm notice created a lockfile as package-lock.json. You should commit this file.
added 1 package and audited 1 package in 0.664s
found 0 vulnerabilities

and build our code:

$ npm run build

> esbuild-starter@1.0.0 build /home/marcin/workspace/github/tmp/new-project
> esbuild --bundle src/index.js --outfile=dist/main.js


  dist/main.js  58b 

⚡ Done in 1ms

the build output:

(() => {
  // src/index.js
  console.log("Hello!");
})();

Links

Summary

I hope this little code generator will help you start with esbuild.