JavaScript Tooling Configuration Monorepo - A collection of shareable configuration packages for JavaScript projects.
This monorepo contains the following packages:
| Package | Version | Description |
|---|---|---|
| @andrewmcodes/prettier-config | Shareable Prettier configuration | |
| @andrewmcodes/commitlint-config | Shareable commitlint configuration |
- Node.js >= 18.0.0
- pnpm >= 8.0.0
# Install pnpm if you haven't already
npm install -g pnpm
# Install dependencies
pnpm installpnpm build- Build all packagespnpm test- Run tests for all packagespnpm lint- Lint all packagespnpm format- Format all files with Prettierpnpm typecheck- Type check with JSDoc annotationspnpm ci- Run lint, test, and typecheck (used in CI)pnpm changeset- Create a new changeset for versioningpnpm version- Version packages based on changesetspnpm release- Build and publish packages
You can also run commands for individual packages:
# Run tests for a specific package
pnpm --filter @andrewmcodes/prettier-config test
# Lint a specific package
pnpm --filter @andrewmcodes/commitlint-config lintThis monorepo uses Changesets for version management and publishing.
When you make changes to a package, create a changeset:
pnpm changesetFollow the prompts to:
- Select which packages have changed
- Choose the type of version bump (major, minor, patch)
- Write a summary of the changes
Publishing is automated via GitHub Actions:
- Merge your PR with changesets to the
mainbranch - The Release workflow will create a "Version Packages" PR
- Merge the "Version Packages" PR
- Packages will be automatically published to npm
To publish manually (if needed):
pnpm releaseThis will:
- Build all packages
- Publish changed packages to npm
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Run
pnpm cito ensure everything passes - Create a changeset with
pnpm changeset - Submit a pull request
This project uses Prettier for code formatting. Run pnpm format before committing.
This project uses Conventional Commits. Please follow this format for your commit messages.