typehole
Version:
Turn runtime types into static typescript types automatically
84 lines (57 loc) • 3.42 kB
Markdown
# Typehole runtime
A runtime library for [Typehole](https://github.com/rikukissa/typehole).
---
# Template: TypeScript Module [](https://github.com/lukeed/typescript-module/actions) [](https://codecov.io/gh/lukeed/typescript-module)
This is a [clonable template repository](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template) for authoring a `npm` module with TypeScript. Out of the box, it:
- Provides minimally-viable `tsconfig.json` settings
- Scaffolds a silly arithmetic module (`src/index.ts`)
- Scaffolds test suites for full test coverage (`test/index.ts`)
- Scaffolds a GitHub Action for Code Integration (CI) that:
- checks if compilation is successful
- runs the test suite(s)
- reports test coverage
- Generates type definitions (`types/*.d.ts`)
- Generates multiple distribution formats:
- ES Module (`dist/index.mjs`)
- CommonJS (`dist/index.js`)
- UMD (`dist/index.min.js`)
All configuration is accessible via the `rollup.config.js` and a few `package.json` keys:
- `name` — the name of your module
- `main` — the destination file for your CommonJS build
- `module` — the destination file for your ESM build (optional but recommended)
- `unpkg` — the destination file for your UMD build (optional for [unpkg.com](https://unpkg.com/))
- `umd:name` — the UMD global name for your module (optional)
## Setup
1. [Clone this template](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template)
2. Replace all instances of `TODO` within the `license` and `package.json` files
3. Create [CodeCov](https://codecov.io) account (free for OSS)
4. Copy the provided CodeCov token as the `CODECOV_TOKEN` [repository secret](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository) (for CI reporting)
5. Replace `src/index.ts` and `test/index.ts` with your own code! 🎉
## Commands
### build
Builds your module for distribution in multiple formats (ESM, CommonJS, and UMD).
```sh
$ npm run build
```
### test
Runs your test suite(s) (`/tests/**`) against your source code (`/src/**`).<br>Doing so allows for accurate code coverage.
> **Note:** Coverage is only collected and reported through the "CI" Github Action (`.github/workflows/ci.yml`).
```sh
$ npm test
```
## Publishing
> **Important:** Please finish [Setup](#setup) before continuing!
Once all `TODO` notes have been updated & your new module is ready to be shared, all that's left to do is decide its new version — AKA, do the changes consitute a `patch`, `minor`, or `major` release?
Once decided, you can run the following:
```sh
$ npm version <patch|minor|major> && git push origin master --tags && npm publish
# Example:
# npm version patch && git push origin master --tags && npm publish
```
This command sequence will:
- version your module, updating the `package.json` "version"
- create and push a `git` tag (matching the new version) to your repository
- build your module (via the `prepublishOnly` script)
- publish the module to the npm registry
## License
MIT © [Luke Edwards](https://lukeed.com)