Skip to content

Create a new typescript library project in just 1 second

License

Notifications You must be signed in to change notification settings

kothing/vite-vanilla-typescript-library-template

Repository files navigation

vite-typescript-library-template

The starter is built on top of Vite 4.x and prepared for writing libraries in TypeScript. It generates a hybrid package - both support for CommonJS and ESM modules.

Features

  • Hybrid support - CommonJS and ESM modules
  • IIFE bundle for direct browser support without bundler
  • Typings bundle
  • ESLint - script linter
  • Stylelint - style linter
  • Prettier - formatter
  • Jest - test framework
  • Husky + lint-staged - pre-commit git hook set up for formatting

GitHub Template

This is a template repo. Click the green Use this template button to get started.

Clone to local

If you prefer to do it manually with the cleaner git history

git clone https://github.com/kothing/vite-typescript-library-template.git
cd vite-typescript-library-template
npm i

Checklist

When you use this template, update the following:

  • Remove .git directory and run git init to clean up the history
  • Change the name in package.json - it will be the name of the IIFE bundle global variable and bundle files name (.cjs, .mjs, .iife.js, d.ts)
  • Change the author name in LICENSE
  • Clean up the README and CHANGELOG files

And, enjoy :)

Usage

The starter contains the following scripts:

  • dev - starts dev server
  • build - generates the following bundles: CommonJS (.cjs) ESM (.mjs) and IIFE (.iife.js). The name of bundle is automatically taked from package.json name property
  • test - starts jest and runs all tests
  • test:coverage - starts jest and run all tests with code coverage report
  • eslint - lint .js, .jsx, .ts, .tsx files with eslint
  • prettier - format .js, .ts, .html and .json files with prettier
  • stylelint - format .css less and .scss files with stylelint
  • prepare - script for setting up husky pre-commit hook

Acknowledgment

If you found it useful somehow, I would be grateful if you could leave a star in the project's GitHub repository.

Thank you.