node typescript starter
Production ready starter for typescript-node projects
Quick Start
npx create-ts-starter PROJECT_NAME Vscode
Functionalities
- create ESM and CommonJS modules and publish to npm registry.
- configured to support top-level-await (look at Caveat section).
- scan for vulnerabilities via HCL AppScan CodeSweep in vscode IDE.
- auto tag the git commit at publish time.
- generate changelog.md file after each publishes.
- run tests with jest.
- load environment variables from .env file.
- load credentials from host operation system's credential manger.
- ready to run in a docker environment.
- write logs in .log file in the logs directory with customizable log rotation policy.
- generate API documentation in docs folder of the root project directory.
- compile the app to an executable single file.
- restart the process after modifying ts files.
- dies at unhandled errors (this is a very good strategy for production - docker will take care of restart the program after exit).
- type-def for process.env variables.
- recommends useful vscode extensions.
Notice:
- If you don't want to open the project folder in VSCode, You can ignore the 'VSCode' parameter.
- minimap is disabled by default.
- workbench sidebar is in right side of screen.
Commands
-
npm start
to start the development environment -
npm run compile
to compile to single executable file -
npm run prod
to run in production -
npm run test
to run tests -
npm run test:watch
to run tests in watch mode -
npm run format
to format with prettier -
npm run lint
to lint with eslint -
npm run gen-docs
to generate documentations website -
npm run docker:build
to create docker image with data from.env
file and version # frompackage.json
-
docker-compose up
to run in docker environment
Powered By (Credit):
- [x] typescript
- [x] fast-node-logger
- [x] jest
- [x] eslint
- [x] pkg
- [x] keytar
- [x] prettier
- [x] TypeDoc
- [x] auto-changelog
- [x] npm-run-all
- [x] nodemon
- [x] colors
- [x] Docker
- [x] wait-on
TODO:
- [ ] improve error handling best practices
- [ ] docker best practices
- [ ] add entry for other builds (e.g. esm, browser, ...)
- [ ] fix failures when git is not installed on the host system.
- [ ] add templates to based on type of project that user wants to create, generate different projects (esbuild for projects without decorators, tsc compiler, ...)
- [ ] add please wait... in initial of the process
Caveat
- top level await is not supported when compiling the single executable file.