This module provides tooling to lint, format, test and write JS modules.
It makes use of the following stack:
- Prettier for code style linting and formatting
- ESLint for TS linting
- Jest for testing
- TypeDoc for documentation generation
- Husky / lint-staged for Git hooks
yarn global add @marvinroger/fusee
Then, inside a blank Node.js project, run fusee init
.
This will install the stack, and add the correct scripts inside the package.json
.
yarn lint [files...]
Lint the code with ESlint and Prettier, trying to fix what's fixable.
This runs eslint --fix
and prettier --write
on:
src/**/*.ts
- Only given files if a list of files is supplied (this is how lint-staged is setup)
The ESLint config can be found at ⚙ src/configs/eslint.ts, and the Prettier config at ⚙ src/configs/prettier.ts.
yarn test
Test the code with Jest.
This runs jest --passWithNoTests
with the default Jest config.
The Jest config can be found at ⚙ src/configs/jest.ts.
yarn generate-docs
Generate the HTML docs from the TypeScript code, into the docs/
directory.
Note: Due to a TypeDoc restriction, every single exported method will be documented (even if not exported from the entry-point). To ignore such methods, add a @hidden
annotation.
The Husky config can be found at ⚙ src/configs/husky.ts. The following hooks are set:
pre-commit
: This runslint-staged
with the config at ⚙ src/configs/lint-staged.ts. Whenever a file matches the*.{ts,tsx,js,jsx}
pattern, thelint
script will be ran on these files, fixing what's fixable. If the lint is unsuccessful and it cannot be auto-fixed, the commit will be aborted.
There is no pre-push
hook, as it might take too long to build or test the project.
These checks should be done on the CI.