Gå til innholdet

spdx-license-headers

Sørg for at hver kildefil deklarerer lisensen sin med en maskinlesbar SPDX-identifikator.

Åpen kildekode-prosjekter drar nytte av lisensdeklarasjoner per fil — de overlever filutpakking, bunting og kopier-og-lim-scenarier der rot-LICENSE-filen ikke er til stede. Denne regelen verifiserer at hver TypeScript-kildefil starter med standard SPDX-hodekommentar.

src/helpers/utils.ts
import { join } from "node:path";
export function resolvePath(base: string, rel: string): string {
return join(base, rel);
}

Filen mangler SPDX-lisensidentifikator-hodet.

src/helpers/utils.ts
// SPDX-License-Identifier: Apache-2.0
// Copyright 2026 Archgate
import { join } from "node:path";
export function resolvePath(base: string, rel: string): string {
return join(base, rel);
}

For filer med en shebang:

src/cli.ts
#!/usr/bin/env bun
// SPDX-License-Identifier: Apache-2.0
// Copyright 2026 Archgate
import { Command } from "commander";
/// <reference path="../rules.d.ts" />
export default {
rules: {
"spdx-header-present": {
description:
"All TypeScript source files must have an SPDX-License-Identifier header",
async check(ctx) {
const results = await Promise.all(
ctx.scopedFiles.map(async (file) => {
const content = await ctx.readFile(file);
return { file, content };
})
);
for (const { file, content } of results) {
if (content === null) continue;
// Check first 5 lines for the SPDX identifier (allows for shebang)
const lines = content.split("\n").slice(0, 5);
const hasSpdx = lines.some((line) =>
line.includes("SPDX-License-Identifier: Apache-2.0")
);
if (!hasSpdx) {
ctx.report.violation({
message: "Missing SPDX-License-Identifier header.",
file,
line: 1,
fix: 'Add "// SPDX-License-Identifier: Apache-2.0" as the first line of the file',
});
}
}
},
},
},
} satisfies RuleSet;
  • Endre lisensen: Erstatt Apache-2.0 med prosjektets SPDX-identifikator (f.eks. MIT, BSD-3-Clause)
  • Endre omfanget: Juster files-glob-en i ADR-frontmatteren for å samsvare med kildekatalogene dine
  • Legg til opphavsrettssjekk: Utvid regelen til også å verifisere opphavsrettslinje-formatet

Når prosjektet ditt er åpen kildekode og du ønsker entydige lisensdeklarasjoner per fil som gjenkjennes av samsvarsskannere (FOSSA, Snyk, Black Duck, npm license-checker).

I proprietære/lukkede prosjekter der alle filer implisitt er “alle rettigheter forbeholdt”, eller når organisasjonen din bruker en annen lisensdeklarasjonsmekanisme som REUSE 3.0 .dep5-filer.