|
| 1 | +# verify-npm-template-typescript |
| 2 | + |
| 3 | +Verify reusing the [npm-template-typescript](https://github.com/lengocduy/npm-template-typescript) to 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. |
| 4 | + |
| 5 | +## Prerequisites |
| 6 | + |
| 7 | +The following tools need to be installed: |
| 8 | + |
| 9 | +- [Git](http://git-scm.com/) |
| 10 | +- [Node.js 18+](http://nodejs.org/) |
| 11 | + |
| 12 | +## Capabilities and Frameworks |
| 13 | + |
| 14 | +| Capability | Module | |
| 15 | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 16 | +| 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 | |
| 17 | +| Build Tools | [`tsup`](https://tsup.egoist.dev) Bundle your TypeScript library with no config, powered by esbuild | |
| 18 | +| 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. | |
| 19 | +| Testing Framework | [Jest](https://jestjs.io/) a delightful JavaScript Testing Framework with a focus on simplicity. | |
| 20 | +| Useful Links | [npmtrends](https://npmtrends.com/) Compare package download counts over time, [act](https://nektosact.com/introduction.html) run your GitHub Actions locally, [Actionlint](https://marketplace.visualstudio.com/items?itemName=arahata.linter-actionlint) static checker for GitHub Actions workflow files | |
| 21 | + |
| 22 | +## How to test |
| 23 | + |
| 24 | +```bash |
| 25 | +npm test | yarn test |
| 26 | +``` |
| 27 | + |
| 28 | +## How to check lint |
| 29 | + |
| 30 | +```bash |
| 31 | +# check lint's rules |
| 32 | +npm run lint | yarn lint |
| 33 | +# check lint's rules and try to fix |
| 34 | +npm run lint:fix | yarn lint:fix |
| 35 | +# format your code |
| 36 | +npm run prettier:format | yarn prettier:format |
| 37 | +``` |
| 38 | + |
| 39 | +## How to use |
| 40 | + |
| 41 | +### Clone the repository |
| 42 | + |
| 43 | +```bash |
| 44 | +git clone git@github.com:lengocduy/npm-template-typescript.git |
| 45 | +cd npm-template-typescript |
| 46 | +npm install | yarn install |
| 47 | +``` |
| 48 | + |
| 49 | +### Import and use |
| 50 | + |
| 51 | +Check more in [example](./example/README.md) |
| 52 | + |
| 53 | +## Collaboration |
| 54 | + |
| 55 | +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` |
| 56 | +2. Follow TypeScript Style Guide [Google](https://google.github.io/styleguide/tsguide.html) |
| 57 | +3. Follow Best-Practices in coding: |
| 58 | + 1. [Clean code](https://github.com/labs42io/clean-code-typescript) make team happy |
| 59 | + 2. [Return early](https://szymonkrajewski.pl/why-should-you-return-early/) make code safer and use resource Efficiency |
| 60 | + 3. [Truthy & Falsy](https://frontend.turing.edu/lessons/module-1/js-truthy-falsy-expressions.html) make code shorter |
| 61 | + 4. [SOLID Principles](https://javascript.plainenglish.io/solid-principles-with-type-script-d0f9a0589ec5) make clean code |
| 62 | + 5. [DRY & KISS](https://dzone.com/articles/software-design-principles-dry-and-kiss) avoid redundancy and make your code as simple as possible |
| 63 | + 6. Make buildable commit and pull latest code from `main` branch frequently |
| 64 | + 7. Use readable commit message [karma](http://karma-runner.github.io/6.3/dev/git-commit-msg.html) |
| 65 | + |
| 66 | +```bash |
| 67 | + /‾‾‾‾‾‾‾‾ |
| 68 | +🔔 < Ring! Please use semantic commit messages |
| 69 | + \________ |
| 70 | + |
| 71 | + |
| 72 | +<type>(<scope>): ([issue number]) <subject> |
| 73 | + │ │ | │ |
| 74 | + | | | └─> subject in present tense. Not capitalized. No period at the end. |
| 75 | + | | | |
| 76 | + │ │ └─> Issue number (optional): Jira Ticket or Issue number |
| 77 | + │ │ |
| 78 | + │ └─> Scope (optional): eg. Articles, Profile, Core |
| 79 | + │ |
| 80 | + └─> Type: chore, docs, feat, fix, refactor, style, ci, perf, build, or test. |
| 81 | +``` |
0 commit comments