skif-cli 0.4.0

Command-line interface for skif, a dependency and package-manager linter for JS/TS monorepos.
Documentation
---
source: crates/skif-cli/tests/cli.rs
expression: human.stdout
---
RULE                               CATEGORY   DEFAULT  FIXABLE    SUMMARY
empty-dependencies                 manifest   error    safe       A dependency section (`dependencies`, `devDependencies`, `peerDependencies`, `optionalDependencies`) is an empty object.
root-package-private-field         manifest   error    safe       The root `package.json` must set `"private": true` so it cannot be published by accident.
root-package-manager-field         manifest   error    none       The root `package.json` must declare the package manager in `packageManager` or `devEngines.packageManager`.
root-package-dependencies          manifest   warning  unsafe     The root package should only have `devDependencies`; runtime dependencies belong to the packages that use them.
types-in-dependencies              manifest   error    unsafe     A private package lists `@types/*` packages in `dependencies`; type packages belong in `devDependencies`.
member-toolchain-fields            manifest   warning  unsafe     Private member packages should not declare `packageManager` or `engines`; the root package owns the toolchain.
incompatible-peer-dependencies     manifest   warning  none       The version a package installs in `devDependencies` does not satisfy the range it declares in `peerDependencies`.
unsorted-dependencies              manifest   error    safe       The entries of a dependency section are not in alphabetical (byte) order.
unmatched-workspace-patterns       workspace  warning  unsafe     A workspace pattern does not match any directory.
missing-package-manifest           workspace  warning  unsafe     A directory matched by the workspace patterns has no `package.json`, or in a Bun workspace one without a `name`, which Bun does not install.
stray-lockfile                     workspace  warning  unsafe     A lockfile other than the root lockfile of the package manager: one in a workspace member, another manager's at the root, or one its manager ignores next to the one it reads (Bun's `bun.lockb` beside `bun.lock`, npm's `package-lock.json` beside `npm-shrinkwrap.json`).
nested-workspace-root              workspace  warning  none       A workspace member holds a `pnpm-workspace.yaml` of its own, so installs in that directory leave the workspace, or in a Bun workspace a `package.json` that declares `workspaces`, which Bun never installs; or a member is a Bazel convenience link (`bazel-<name>`) a workspace pattern follows.
local-path-dependency              manifest   error    sometimes  A dependency points at a path on disk (`link:`, `file:`, `portal:` or a relative path) instead of a registry or workspace version.
package-json-format                manifest   off      sometimes  A `package.json` is not formatted as `[format]` describes: key order, sorted fields, `exports` conditions, shorthand `bugs` and `repository`, and the indent. The fix is unsafe when `sort-exports` reorders conditions other than `types` and `default`.
stale-patched-dependencies         workspace  warning  none       A `patchedDependencies` entry no longer applies, names a missing file or lies outside the allowed paths, or a patch file is left over.
invalid-workspace-file             workspace  error    none       A member `package.json`, a workspace pattern or `.yarnrc.yml` cannot be read, so part of the workspace is not linted.
stale-lerna-config                 workspace  warning  none       `lerna.json` sets `useWorkspaces` or lacks `version`, which Lerna 7 and later reject, or a script runs `lerna bootstrap`, `lerna add` or `lerna link`, which Lerna 9 removed.
lerna-packages-mismatch            workspace  warning  none       The `packages` of `lerna.json`, which Lerna reads before the package manager's workspaces, select other packages than the workspace declaration.
version-mismatch                   policy     error    sometimes  A dependency instance differs from the version its version group requires (highest, lowest, pinned, local or snapped).
banned-dependency                  policy     error    unsafe     A dependency is declared, or resolved by the lockfile, although a banned version group forbids it.
semver-range-mismatch              policy     error    unsafe     A dependency uses a semver range other than the one its semver group requires.
policy-conflict                    policy     warning  sometimes  Two policies require incompatible outcomes for one dependency, or a group cannot be applied as configured.
invalid-local-version              policy     error    none       A workspace package has a `version` that is not an exact semver version, so dependents cannot align with it.
catalog-not-used                   catalog    warning  sometimes  A dependency that has a catalog entry is declared with a version instead of `catalog:`.
catalog-mismatch                   catalog    warning  sometimes  A dependency is declared with a version while other packages take it from a catalog.
catalog-missing-entry              catalog    warning  sometimes  A dependency that should come from a catalog has no catalog entry.
catalog-version-divergence         catalog    warning  none       Packages take one dependency from catalogs that resolve to different versions.
unresolved-catalog-references      catalog    error    none       A `catalog:` specifier names a catalog or an entry that does not exist.
unused-catalog-entries             catalog    warning  unsafe     A catalog entry that no manifest references; reported only when `[catalog] report-unused-entries` is `true`.
workspace-protocol                 policy     error    none       A dependency on a workspace package does not use the `workspace:` protocol.
unsynced-dependency-family         policy     error    none       Members of a dependency family are on different versions in one package, or as resolved by the lockfile.
toolchain-pin-drift                workspace  warning  none       Node and package-manager versions pinned in version files, Dockerfiles, CI workflows and Bazel module files must match the root's.
foreign-package-manager-command    workspace  warning  none       Dockerfiles, CI workflows and shell scripts must not run a package manager other than the workspace's.
unused-dependencies                js         error    unsafe     A package in `dependencies` is never imported, required or run by a script; `optionalDependencies` are not checked.
unused-dev-dependencies            js         warning  unsafe     A package in `devDependencies` is never imported, required or run by a script.
unlisted-dependencies              js         error    none       A file imports a package that neither its `package.json` nor any `package.json` above it lists. An import that only the tsconfig `paths` of another package map has the detail `ForeignTsconfigPaths`: it needs a mapping, not a dependency. A package a tool config names (a tsconfig `extends`, an ESLint or Oxlint plugin, a Prisma generator) is reported at the config with the detail `ConfigReference`.
unresolved-imports                 js         error    none       An import specifier does not resolve to a file or a package.
stale-mocks                        js         error    none       A test-runner mock names a relative or aliased module that does not exist.
unlisted-binaries                  js         warning  none       A script, or a command in a workflow, tool config or source file, runs a binary that no listed dependency provides.
unused-optional-peer-dependencies  js         warning  none       An optional peer dependency is imported but not installed as a dependency or dev dependency.
unused-files                       js         warning  sometimes  A project file is not reachable from any entry file.
unused-subpath-imports             js         warning  unsafe     A `package.json` `imports` entry is not imported by any file of its package.
unused-subpath-exports             js         off      none       A `package.json` `exports` subpath is not imported by any workspace package.
unused-exports                     js         warning  unsafe     An exported value is not imported by any other module.
unused-types                       js         warning  unsafe     An exported type or interface is not imported by any other module.
unused-namespace-exports           js         warning  unsafe     An exported value of a module that is only read through a namespace import is never accessed.
unused-namespace-types             js         warning  unsafe     An exported type of a module that is only read through a namespace import is never accessed.
unused-enum-members                js         warning  unsafe     A member of an exported enum is never read.
unused-namespace-members           js         warning  unsafe     An exported member of a TypeScript namespace is never read.
duplicate-exports                  js         warning  none       One binding is exported under several names.
circular-imports                   js         off      none       Modules import each other in a cycle.
unparseable-files                  js         warning  none       A file reachable from an entry file has a syntax error the parser could not recover from.
stale-js-config                    js         warning  none       A `[js]` setting matched nothing or is redundant, a published entry file is missing, or many files are unused.