Skip to content

rtivital/ts-package-template

Repository files navigation

ts-package-template

A template to publish a TypeScript package to npm.

Key features:

  • Ready to use ESM build system
  • Properly configured exports in package.json to support all modern bundlers and Node.js
  • CI with GitHub Actions
  • Testing and linting setup ready: Jest, ESLint, Prettier, Knip
  • Publish to npm with an npm script, including support for pre-releases (alpha, beta, rc)
  • npm pack validation as part of the testing pipeline: makes sure only necessary files are included in the package
  • Size limit check with size-limit

Included tools:

  • Yarn v4
  • Rollup
  • esbuild
  • jest
  • prettier
  • ESLint
  • Knip
  • size-limit
  • GitHub workflow for tests

Usage

  • Click "Use this template" button to create a new repository from this template
  • Clone the new repository
  • Change package.json to your own package name, description, etc. !important: change repository.url and other repository links to your own repository url
  • Install dependencies: yarn (other package managers are not supported)
  • Write your code in src/ directory
  • Run npm run release to build and publish your package to npm

Testing

  • Run npm test to run all tests (prettier check, typecheck, lint, jest tests, build, package validation with npm pack, knip)
  • Run npm run jest:coverage to run jest with coverage report
  • Run npm run jest:watch to run jest in watch mode
  • Run npm run size to validate package size or npm run analyze to see size analysis report

Publishing to npm

Use release script to publish the package:

  • npm run release – release a new patch version to npm
  • npm run release minor – release a new minor version to npm
  • npm run release major – release a new major version to npm
  • npm run release minor -- --stage alpha – release a new minor alpha version to npm (for example, 1.1.0-alpha.0)

Note that release script will always publish public packages to npm. If you want to publish a private package, change release script in scripts/release.ts.

License

MIT

About

A template to create npm packages with TypeScript

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors