███ ▄████████ ▄▄▄▄███▄▄▄▄ ▄███████▄ ▄█ ▄████████ ███ ▄████████
▀█████████▄ ███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ▀█████████▄ ███ ███
▀███▀▀██ ███ █▀ ███ ███ ███ ███ ███ ███ ███ ███ ▀███▀▀██ ███ █▀
███ ▀ ▄███▄▄▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▀ ▄███▄▄▄
███ ▀▀███▀▀▀ ███ ███ ███ ▀█████████▀ ███ ▀███████████ ███ ▀▀███▀▀▀
███ ███ █▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▄
███ ███ ███ ███ ███ ███ ███ ███▌ ▄ ███ ███ ███ ███ ███
▄████▀ ██████████ ▀█ ███ █▀ ▄████▀ █████▄▄██ ███ █▀ ▄████▀ ██████████
▀
Source for ASCII-fonts: https://www.coolgenerator.com/ascii-text-generator (Font: Delta Corps Priest 1
This is template for TypeScript project in VS Code with linting.
To have an easier start for my projects.
You will need "node.js" and "pnpm" installed on your system to use this template. To install node.js I recommend using nvm (Node Version Manager). See https://github.com/nvm-sh/nvm for installation instructions.
Description from tldr nvm output:
Install, uninstall or switch between Node.js versions. Supports version numbers like "12.8" or "v16.13.1", and labels like "stable", "system", etc. More information: https://github.com/creationix/nvm.
-
Install a specific version of Node.js:
nvm install node_version -
Use a specific version of Node.js in the current shell:
nvm use node_version -
Set the default Node.js version:
nvm alias default node_version -
List all available Node.js versions and highlight the default one:
nvm list
pnpm is pinned to version 11 via the packageManager field in package.json and is
self-managed — no Corepack needed (Corepack was removed from Node.js 25+).
Install pnpm once:
brew install pnpm # macOS
# or see https://pnpm.io/installation for other platformsThis template requires Node.js 26+.
For local development start with pnpm install to install all dependencies.
For Visual Studio Code (VSC) there is a workspace configuration file included.
Available scripts:
pnpm run build— compile (type-check + lint + emit todist/).pnpm run typecheck— type-check only (tsc -b), no emit.pnpm run lint— lint only.pnpm test— build + core unit tests (no external dependencies).pnpm run test:integration— build + core tests + integration tests (requires Docker).pnpm start— run the app (loads.envvia--env-file).pnpm start "test argument"— run the app with a CLI argument.
Launch configs of VS Code can be found in .vscode/launch.json.
To build a local image:
docker buildx build -t jni-ts-template .To run with Docker Compose (uses docker-compose.yaml at the repo root):
docker compose up --build -dCI/CD publishing is handled externally (Forgejo/Woodpecker).
alias yourcommand='docker container run --rm jni-ts-template'Copy env.example to .env in the project root and fill in your values:
cp env.example .envThe .env file is loaded natively by Node.js via the --env-file flag — no dotenv
package is needed. The file is listed in .gitignore and will not be committed.
TEST_VAR="Test value"
For VSC debugging, ensure your launch configuration includes either
"envFile": "${workspaceFolder}/.env" or "--env-file=.env" in runtimeArgs.
Run pnpm update --latest -i to update all packages interactively.
The -i flag presents a checklist of available updates — toggle individual packages
with space, confirm with enter. This lets you review and select updates rather than
applying everything at once.
Note on minimumReleaseAge: pnpm-workspace.yaml is configured with a 7-day
supply-chain cooldown (minimumReleaseAge: 10080). Packages published less than 7 days
ago will be refused during install/lockfile-verification. If a bump is rejected, either
wait out the cooldown window or add the package name to minimumReleaseAgeExclude in
pnpm-workspace.yaml for a one-off bypass.
pnpm add -D <package> to add a package to the project. The -D flag is for development dependencies.
<< Insert your description here. >>
- Upgraded to Node.js 26+ and TypeScript 6 (
es2025target, ESM-only viaNodeNext) - pnpm 11, self-managed via the
packageManagerfield (Corepack removed in Node 25+) - ESLint 9 → 10; migrated to flat config using the unified
typescript-eslintpackage withstrictTypeCheckedpreset (removedFlatCompat,@eslint/eslintrc, and the split@typescript-eslint/eslint-plugin/@typescript-eslint/parserpackages) - Added
minimumReleaseAge(7-day) supply-chain cooldown inpnpm-workspace.yaml - testcontainers 11 → 12
- Native
--env-fileloading (removeddotenvdependency) - Added
env.exampleas a tracked template for.env - Removed the neo4j testcontainers integration example (was introduced in v2.0.0)
- Removed the
docker:build-pushscript (CI/CD publishing handled externally)
- Integrate Theo's trycatch
- Update of Typescript settings
- Update of ES Linting including new config file
- Update of all libraries to current version
- Introduction of core unit tests and integration tests
- Example for integration tests w/ testcontainers and a neo4j DB
- Docker image build includes core unit tests and only depends on itself
- Update of shared types and functions
- Update of the README file
- Better documentation and misusage.
- Fixing missing env variable in docker image.
- Add /logs to .gitignore.
- Merge in enums, sharedFunction, logger.
- Introduce winston.
- Updated to latest libraries.
- Even tougher linting rules.
- Multi stage docker build with Node 18 (for Rapsberry PI compatibility).
- TypeScript 5.3
- All packages updated to latest version.
- Tougher linting rules.
- Update packages (TS to 5.1)
- Update Docker image to use Node 20.
- Add optional package with test.
- Add tests for diverse useful use cases (e.g., using workers w/ multi cores).
- Remove obsolete greeter code.
- Add docker image creation (e.g. for an encapsulated CLI rool).
- Add helpers for reading the version, parsing .env file and user arguments.
- Remove not used workspace configuration.
- Upgrade all components to latest versions.
- Use 'NodeNext' for module resolution.
- Replace 'npm' with 'pnpm'.
- Replace 'jest' with 'mocha'.
- Template restrictions removed in linting.
- NCU guide added to readme.
- Upgraded to latest versions of TypeScript (4.5.2), Jest (27.4.3) and the rest.
- Upgrade of TypeScript to 4.3
- Support for dotenv
- Initial commit.