This is how I initialize a Node.js project:

  1. Initialize a new Node.js project using pnpm:

    pnpm init --init-type=module --init-package-manager
  2. If the project is not going to be open source, remove the default license field from package.json:

    pnpm pkg delete license
  3. Install TypeScript and types for Node.js:

    pnpm add -D typescript @types/node@24.x @tsconfig/node24
  4. Set up tsconfig.json file (more info):

    cat > tsconfig.json <<'EOF'
    {
      "extends": "@tsconfig/node24/tsconfig.json",
      "compilerOptions": {
        "verbatimModuleSyntax": true,
        "allowImportingTsExtensions": true,
        "noEmit": true
      }
    }
    EOF
  5. Add .gitignore:

    wget -O .gitignore https://raw.githubusercontent.com/github/gitignore/refs/heads/main/Node.gitignore
  6. Add node script to let me use pnpm node command to run Node.js with TypeScript support:

    pnpm pkg set scripts.node="node --experimental-transform-types"