esbuild - An extremely fast bundler for the web

Node.js

# Node.js 버전 확인
➜ node -v
v20.9.0

# v20.9.0 가 설치되어 있지 않다면
➜ nvm install 20.9.0

# v20.9.0 를 사용하고 있지 않다면
➜ nvm use 20.9.0

# Node.js 버전 다시 확인
➜ node -v
v20.9.0

npm

# npm 버전 확인
➜ npm -v
10.2.1

# 최신 버전 npm 으로 업그레이드 
➜ npm i [email protected] -g

# npm 버전 다시 확인
➜ npm -v
10.2.1

pnpm

# pnpm 설치 확인 및 버전 확인
➜ pnpm -v
8.10.0

# 최신 버전 pnpm 으로 업그레이드 
➜ npm i [email protected] -g

# pnpm 설치 다시 확인 및 버전 다시 확인
➜ pnpm -v
8.10.0

Create Project

➜ mkdir esbuild-example

➜ cd esbuild-example

➜ corepack enable

➜ pnpm init

➜ corepack use [email protected]

➜ code .
# esbuild-example

packages:
  - "packages/*"

my-utils 만들기

➜ mkdir packages packages/my-utils

➜ cd packages/my-utils

➜ pnpm init

➜ cd ...

➜ pnpm --filter my-utils add esbuild typescript -D
// esbuild-example/packages/my-utils/src/plus.ts

export function plusOne(x: number): number {
  return x + 1;
}

export function plusTwo(x: number): number {
  return x + 2;
}
// esbuild-example/packages/my-utils/src/index.ts

import * as plus from "./plus";

const plusOne = plus.plusOne;

export { plusOne };
require("esbuild").build({
  entryPoints: ["src/index.ts"],
  outfile: "dist/index.js",
  bundle: true,
  platform: "node",
});
{
  "name": "my-utils",
  "version": "1.0.0",
  "description": "",
  "main": "dist/index.js",
  "scripts": {
    "build": "node build.js",
    "test": "echo \\"Error: no test specified\\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "esbuild": "^0.19.5",
    "typescript": "^5.2.2"
  }
}
➜ pnpm --filter my-utils build

bundle 이 true 이면, treeShaking 은 true

require("esbuild").build({
  entryPoints: ["src/index.ts"],
  outfile: "dist/index.js",
  bundle: true,
  //   treeShaking: false,
  platform: "node",
});
➜ pnpm --filter my-utils build