@askbills/npm-template-typescript
Version:
Typescript template to build npm package
82 lines (61 loc) • 5.82 kB
Markdown
# npm-template-typescript
Supports javascript developers who use npm to publish and share package quicker. Less time to setup utility tools to follow best-practices and more time on the core features of the package.
## Prerequisites
The following tools need to be installed:
- [Git](http://git-scm.com/)
- [Node.js 18+](http://nodejs.org/)
## Capabilities and Frameworks
| Capability | Module |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Dependence Framework | [`@tsconfig/node18`](https://www.npmjs.com/package/@tsconfig/node18) extend ts config node18+, [typescript](https://www.npmjs.com/package/typescript) adds optional types to JavaScript that support tools for large-scale JavaScript applications |
| Build Tools | [`tsup`](https://tsup.egoist.dev) Bundle your TypeScript library with no config, powered by esbuild |
| Coding Standard | [eslint](https://eslint.org/) statically analyzes your code to quickly find and fix problems based on opt-in [rules](https://eslint.org/docs/latest/rules/), [prettier](https://prettier.io/docs/en/) an opinionated code formatter to build and enforce a style guide on save, [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) to turns off all rules that are unnecessary or might conflict with Prettier. |
| Testing Framework | [Jest](https://jestjs.io/) a delightful JavaScript Testing Framework with a focus on simplicity. |
| Useful Links | [npmtrends](https://npmtrends.com/) Compare package download counts over time |
## How to test
```bash
npm test | yarn test
```
## How to check lint
```bash
# check lint's rules
npm run lint | yarn lint
# check lint's rules and try to fix
npm run lint:fix | yarn lint:fix
# format your code
npm run prettier:format | yarn prettier:format
```
## How to use
### Clone the repository
```bash
git clone git@github.com:lengocduy/npm-template-typescript.git
cd npm-template-typescript
npm install | yarn install
```
### Open package.json file to edit some fields e.g. name, repository, etc
we can manage our package.json via [npm-pkg](https://docs.npmjs.com/cli/v10/commands/npm-pkg)
## Collaboration
1. We use the git rebase strategy to keep tracking meaningful commit message. Help to enable rebase when pull `$ git config --local pull.rebase true`
2. Follow TypeScript Style Guide [Google](https://google.github.io/styleguide/tsguide.html)
3. Follow Best-Practices in coding:
- [Clean code](https://github.com/labs42io/clean-code-typescript) make team happy
- [Return early](https://szymonkrajewski.pl/why-should-you-return-early/) make code safer and use resource Efficiency
- [Truthy & Falsy](https://frontend.turing.edu/lessons/module-1/js-truthy-falsy-expressions.html) make code shorter
- [SOLID Principles](https://javascript.plainenglish.io/solid-principles-with-type-script-d0f9a0589ec5) make clean code
- [DRY & KISS](https://dzone.com/articles/software-design-principles-dry-and-kiss) avoid redundancy and make your code as simple as possible
4. Make buildable commit and pull latest code from `main` branch frequently
5. Use readable commit message [karma](http://karma-runner.github.io/6.3/dev/git-commit-msg.html)
```bash
/‾‾‾‾‾‾‾‾
🔔 < Ring! Please use semantic commit messages
\________
<type>(<scope>): ([issue number]) <subject>
│ │ | │
| | | └─> subject in present tense. Not capitalized. No period at the end.
| | |
│ │ └─> Issue number (optional): Jira Ticket or Issue number
│ │
│ └─> Scope (optional): eg. Articles, Profile, Core
│
└─> Type: chore, docs, feat, fix, refactor, style, ci, perf, build, or test.
```