setup-node-api scaffolds a minimal Node.js + Express API with sensible defaults.
Node.js 20.12.0 or newer is required.
- Scaffold a ready-to-run Express API
- Choose JavaScript or TypeScript
- Use prompts interactively or pass CLI flags
- Accept defaults instantly with
--yes - Validate project names before generation
- Avoid overwriting existing folders without confirmation
- Optionally skip dependency installation
- Optionally enable CORS during generation
- Include basic API defaults like JSON parsing, request logging,
/health,/echo, and common starter files
npx setup-node-api my-apiRun it against the latest published version explicitly:
npx setup-node-api@latest my-apiCreate a TypeScript project:
npx setup-node-api my-api --typescriptSkip package installation:
npx setup-node-api my-api --no-installSet a custom port:
npx setup-node-api my-api --port 8080Generate with defaults and skip prompts:
npx setup-node-api my-api --yesGenerate with CORS enabled:
npx setup-node-api my-api --corssetup-node-api [project-name] [options]| Option | Description |
|---|---|
--typescript |
Generate the TypeScript template |
--no-install |
Skip dependency installation |
--port <number> |
Write a custom PORT value to .env |
--cors |
Add CORS support to the generated API |
-y, --yes |
Use defaults for any missing options |
-h, --help |
Show help |
-V, --version |
Show the installed CLI version |
If you omit some options, the CLI prompts for them in an interactive terminal.
JavaScript template:
my-api/
|-- .gitignore
|-- .env
|-- package.json
|-- README.md
`-- src/
`-- app.js
TypeScript template:
my-api/
|-- .gitignore
|-- .env
|-- package.json
|-- README.md
|-- tsconfig.json
`-- src/
`-- app.ts
The generated project name in package.json is automatically set to the selected folder name, and the starter app includes request logging, JSON parsing, a /health endpoint, a /echo endpoint, a 404 handler, and a basic error handler.
Create a JavaScript project without installing dependencies:
setup-node-api my-api --no-installCreate a TypeScript project and set a custom port:
setup-node-api my-api --typescript --port 4000Create a JavaScript API with CORS enabled and no prompts:
setup-node-api my-api --cors --yesAsk the CLI to guide you interactively:
setup-node-apinpm install
npm test
npm run checkGitHub Actions runs the test suite on Node.js 20 and 22 across Linux, Windows, and macOS for pushes to main and pull requests.
- In a non-interactive environment, provide the project name as an argument.
- When using
--yes, you still need to provide the project name as an argument. - If the target folder already exists, the CLI stops unless you explicitly confirm overwrite in an interactive terminal.
- The JavaScript template includes a
devscript using Node's built-in watch mode. prepublishOnlyrunsnpm run checkbefore publish.
MIT