# Create TypeScript Fast

This project is generated by [create-ts-fast](https://github.com/yangshun/create-ts-fast), a tool for scaffolding npm libraries written in TypeScript.

## Directory walkthrough

The project has the following files and directories:

```
├── .github/workflows/ci.yml
├── dist
├── src
│   ├── __tests__
│   └── index.ts
├── package.json
├── README.md
├── tsconfig.json
├── tsup.config.ts
└── vitest.config.ts
```

- `src`: Contains source code
  - `__tests__`: Directory containing tests. Code within `__tests__` will be ignored during build
  - `index.ts`: Main file
- `package.json`: Self explanatory
- `README.md`: Project's README file. Contents will be displayed on the package homepage on npmjs.com and repo homepage of github.com
- `tsconfig.json`: Base TypeScript config. Used when developing
- `tsup.config.json`: tsup config. Refer to its [documentation for customization](https://tsup.egoist.dev/#using-custom-configuration)
- `vitest.config.ts`: Vitest config. Refer to its [documentation for customization](https://vitest.dev/config/)
- `dist`: Directory containing generated files. The contents of this directory is published
- `.github/workflows/ci.yml`: GitHub action that runs typechecks, tests and build

## Next steps

1. Implement your library within `src`. Add tests if you take pride in being a developer
2. Modify `package.json` – update `name`, `version`, `author` and any other relevant fields
3. Update `README.md`
4. `npm publish`. You will have to login to npm if you aren't already logged in
5. Profit!

## Commands

- `npm run typecheck`: Checks code within `src` for TypeScript issues. No artifacts are generated
- `npm test`: Single test run using Vitest
- `npm run test:watch`: Watch mode. Runs all test suites and reruns them when there are changes
- `npm run build`: Compiles `src` into CommonJS and ES modules (along with TypeScript declaration files) into the `dist` directory
- `npm run verify`: Run typechecks + tests + build. Suitable when developing and in CI environments to ensure all checks are valid
- `npm run clean`: Deletes the `dist` directory
