Overview
Provides a Node.js demo with minimal (and selectable) set of dependencies.
See blog post for more information.
Usage
To run once, in an empty directory:
npx --yes @flydotio/node-demo@latest
To enable rerunning with different options, install via:
npm install @flydotio/node-demo --save-dev
Then you can rerun as many times as desired using:
npx node-demo
General Option:
-
--force
- overwrite existing files -
--esm
- use imports (es6) instead of require (cjs)
Templating Options:
-
--ejs
- use Embedded JavaScript templating (ejs) -
--mustache
- use mustache templates
Alternate Web Server
-
--express
- use express web server
Database Options:
-
--monbodb
- use mongodb -
--postgresql
- use postgresdb -
--sqlite
- use sqlite3
ORM Options:
-
--drizzle
- use drizzle ORM for databases. Implies typescript. -
--knex
- use knex ORM for databases -
--prisma
- use prisma ORM for databases
WebSocket:
-
--websocket
- use websockets for real-time updates -
--htmx
- use htmx for socket updates -
--redis
- use redis pub/sub
Packaging alternatives:
-
--pnpm
- use pnpm as the package manager -
--yarn
- use yarn as the package manager
Popular builders
-
--tailwindcss
- use tailwindcss -
--typescript
- generate typescript
Testing
A testing strategy is evolving. The combinatorics of the above options are mind boggling!
What tests we have can be run with npm test
. This runs a series of tests defined in test.json, and compares the results to previously captures test/results.
Capturing new test results can be accomplished by running npm run test:capture
. Review the results before committing.
Known bugs/limitations:
-
When rerunning this tool, files that were previously created but no longer needed are removed. This does not include outputs in the
build
directory for example. -
Switching packaging managers may result in problems. It generally is best to delete the
node_modules
directory before switching. -
This tool does not install or set up Postgres or Mongodb databases for you locally.
-
This tool does not set environment variables or update your
.env
file.