To start with this project, you will need pnpm 9. Install the dependencies with pnpm i in the root.
This project is a monorepo of the following packages:
packages/steiger— the linter itselfpackages/steiger-plugin-fsd— a set of rules for checking FSD compliancepackages/pretty-reporter— a reporter for the linter to print diagnosticstooling/eslint-config— a shared ESLint configurationtooling/tsconfig— a shared TypeScript configuration
Packages steiger and steiger-plugin-fsd are published to npm, the rest are internal.
Note
The package steiger-plugin-fsd is published as @feature-sliced/steiger-plugin.
The tasks in this monorepo are managed with Turborepo 2. It is available in this project as pnpm turbo, but you should also consider installing it globally for easier use:
pnpm install turbo --globalHere are some of the things you can do around the repo:
turbo build— build all packagesturbo test— run tests for all packagesturbo lint— lint all packages with ESLintturbo typecheck— type-check all packagespnpm check-monorepo— check the monorepo structure with Manypkg
This project uses Changesets for versioning. When you made changes, run pnpm changeset in the root to create a new changeset and add that to your PR.
For maintainers
When it's time to release new versions of packages to npm, run the following commands:
turbo build
pnpm changeset version
# -- Commit the changelog and the version bump --
pnpm changeset publish
git push --follow-tags