--- title: no-unapproved-deps description: Begrens produksjonsavhengigheter til en godkjent tillatelsesliste for å kontrollere forsyningskjederisiko og avhengighetsoppblåsing. --- Begrens produksjonsavhengigheter til en godkjent tillatelsesliste. ## Regeldetaljer Store avhengighetstrær øker forsyningskjederisiko og blåser opp pakkestørrelser. Denne regelen leser `package.json` og rapporterer enhver produksjonsavhengighet som ikke står på en eksplisitt tillatelsesliste. Utviklingsavhengigheter sjekkes ikke. ## Eksempler på **feil** kode ```json title="package.json" { "dependencies": { "zod": "^3.23.0", "chalk": "^5.3.0" } } ``` Hvis bare `zod` står på den godkjente listen, utløser `chalk` et brudd. ## Eksempler på **riktig** kode ```json title="package.json" { "dependencies": { "zod": "^3.23.0" }, "devDependencies": { "chalk": "^5.3.0" } } ``` Alle produksjonsavhengigheter står på den godkjente listen. Biblioteker som bare trengs ved byggetidspunkt ligger i `devDependencies`. ## Regelimplementasjon ```typescript /// const APPROVED_DEPS = [ "@commander-js/extra-typings", "inquirer", "@modelcontextprotocol/sdk", "zod", ]; export default { rules: { "no-unapproved-deps": { description: "Production dependencies must be on the approved list", async check(ctx) { let pkg: { dependencies?: Record }; try { pkg = (await ctx.readJSON("package.json")) as typeof pkg; } catch { return; // No package.json — nothing to check } const deps = Object.keys(pkg.dependencies ?? {}); for (const dep of deps) { if (!APPROVED_DEPS.includes(dep)) { ctx.report.violation({ message: `Unapproved production dependency: "${dep}". Approved: ${APPROVED_DEPS.join(", ")}`, file: "package.json", fix: `Either add "${dep}" to the approved list in the ADR or move it to devDependencies`, }); } } }, }, }, } satisfies RuleSet; ``` ## Når du bør bruke den Når teamet ditt har en eksplisitt policy for avhengighetsstyring og ønsker å forhindre at ikke-godkjente pakker havner i produksjonspakken. ## Når du ikke bør bruke den I prosjekter i tidlig fase der avhengighetslisten fortsatt utvikles raskt, eller når avhengighetsstyring håndteres av et eget verktøy som Socket eller Snyk.