@manypkg/cli
Version:
Manypkg is a linter for `package.json` files in Yarn, npm, Lerna, pnpm or Rush monorepos.
36 lines (33 loc) • 875 B
text/typescript
import {
makeCheck,
DEPENDENCY_TYPES,
sortDeps,
isArrayEqual,
} from "./utils.ts";
import type { Package } from "@manypkg/get-packages";
type ErrorType = {
type: "UNSORTED_DEPENDENCIES";
workspace: Package;
};
export default makeCheck<ErrorType>({
type: "all",
validate: (workspace) => {
for (let depType of DEPENDENCY_TYPES) {
let deps = workspace.packageJson[depType];
if (deps && !isArrayEqual(Object.keys(deps), Object.keys(deps).sort())) {
return [
{
type: "UNSORTED_DEPENDENCIES",
workspace,
},
];
}
}
return [];
},
fix: (error) => {
sortDeps(error.workspace);
},
print: (error) =>
`${error.workspace.packageJson.name}'s dependencies are unsorted, this can cause large diffs when packages are added, resulting in dependencies being sorted`,
});