@cityheroes/api-client
TypeScript icon, indicating that this package has built-in type declarations

3.1.0 • Public • Published

Typescript Library Starter

NPM NPM GitHub Workflow Status

Yet another (opinionated) typescript library starter template.

Opinions and limitations

  1. Relies as much as possible on each included library's defaults
  2. Only rely on GitHub Actions
  3. Do not include documentation generation

Getting started

  1. npx degit gjuchault/typescript-library-starter my-project or click on Use this template button on GitHub!
  2. cd my-project
  3. npm install
  4. git init (if you used degit)
  5. npm run setup

To enable deployment, you will need to:

  1. Setup NPM_TOKEN secret in GitHub actions (Settings > Secrets > Actions)
  2. Give GITHUB_TOKEN write permissions for GitHub releases (Settings > Actions > General > Workflow permissions)

Features

Node.js, npm version

Typescript Library Starter relies on volta to ensure node version to be consistent across developers. It's also used in the GitHub workflow file.

Typescript

Leverages esbuild for blazing fast builds, but keeps tsc to generate .d.ts files. Generates two builds to support both ESM and CJS.

Commands:

  • build: runs typechecking then generates CJS, ESM and d.ts files in the build/ directory
  • clean: removes the build/ directory
  • type:dts: only generates d.ts
  • type:check: only run typechecking
  • type:build: only generates CJS and ESM

Tests

This project uses vitest. The coverage is done through vitest, using c8.

Commands:

  • test: runs vitest test runner
  • test:watch: runs vitest test runner in watch mode
  • test:coverage: runs vitest test runner and generates coverage reports
  • test:docker:login: logs in to AWS ECR using Docker
  • test:docker:up:db: starts the database service using Docker Compose
  • test:docker:up: starts all services using Docker Compose
  • test:db:sync: synchronizes the database schema using Docker and Prisma
  • test:ci: executes commands for continuous integration testing

Test Workflows

Development:

  1. yarn test:docker:up:db
  2. yarn test:db:sync
  3. yarn test:docker:login
  4. yarn test:docker:up
  5. yarn test

CI (Continuous Integration):

  1. yarn test:ci

Format & lint

This template relies on the combination of eslint — through typescript-eslint for linting and prettier for formatting. It also uses cspell to ensure spelling

Commands:

  • format: runs prettier with automatic fixing
  • format:check: runs prettier without automatic fixing (used in CI)
  • lint: runs eslint with automatic fixing
  • lint:check: runs eslint without automatic fixing (used in CI)
  • spell:check: runs spellchecking

Releasing

Under the hood, this library uses semantic-release and commitizen. The goal is to avoid manual release process. Using semantic-release will automatically create a github release (hence tags) as well as an npm release. Based on your commit history, semantic-release will automatically create a patch, feature or breaking release.

Commands:

  • cz: interactive CLI that helps you generate a proper git commit message, using commitizen
  • semantic-release: triggers a release (used in CI)

Readme

Keywords

none

Package Sidebar

Install

npm i @cityheroes/api-client

Weekly Downloads

6

Version

3.1.0

License

MIT

Unpacked Size

1.38 MB

Total Files

395

Last publish

Collaborators

  • maurotrigo
  • cityheroes_npm
  • jlarteaga