Skip to content

bed-and-breakfast/templates-open-source

Repository files navigation

NPM Version CI Release Code Climate Code Coverage Known Vulnerabilities Semantic Release: Conventional Commits Commitizen friendly

Bed & Breakfast Open Source Repository Template

GitHub repository template to make developing typescript packages easier. Creates an out-of-the-box environment for best code practices and project management.

Features

  • Complete GitHub CI/CD process
    • Typescript builds for ESM and CommonJS
    • Validate commit format (conventional commits)
    • Check for broken Markdown links (markdown-link-check)
    • Validate linting (typescript-eslint) and formatting (prettier)
    • Test integration
      • Test against all major node versions (18, LTS, latest)
      • Test reports in all CI workflows (including PRs)
      • Coverage reports in all CI workflows (including PRs)
      • Coverage history and code quality analysis (Code Climate)
    • Automatic releases based on git log (semantic-release)
      • Only release when CI is successful
      • Automatically creates semver versions
      • Generates changelog
      • Releases npm package
      • Releases GitHub release
  • Improved development
  • Repository management
  • Documentation and templates
    • README stub with configured badges
    • Issue templates
    • PR template
    • CODEOWNERS, CODE_OF_CONDUCT, CONTRIBUTING, LICENSE, SECURITY, SUPPORT

Getting Started

Create a new repository using this template (instructions).

Initialize the repository

We can use @bed-and-breakfast/template-tools to initialize the repository. Execute the following command and follow the instructions on the screen.

npx template-init

Adding a remote to pull updates

Bed & Breakfast repository templates will be updated over time. Start by setting up a remote with the template-add-remote command.

npx template-add-remote

Pulling updates from the template

You can then use the following command to pull these changes into an existing repository:

npx template-pull

Note Be careful resolving conflicts when pulling from a template. Files like package.json, README.md, CHANGELOG.md etc. will have changes you don't want to accept.

Development

Making commits

Action Command
Build npm run build
Test npm run test, npm run test:coverage, npm run test:watch
Lint npm run lint, npm run lint:fix
Format npm run format, npm run format:fix
Format Package npm run format:package
Check Markdown npm run check:md

Using commitizen

npm i -g commitizen
npm run commit

Releasing

Releasing is completely automated and is as simple as:

git push

It will create a new release based on all commits since the last release.