A TypeScript library for parsing and composing CODEOWNERS files.
- Supports both GitHub and GitLab CODEOWNERS syntax
- Preserves comments and whitespace
- Provides a way to get owners for a given file
- Parses CODEOWNERS files into an AST (Abstract Syntax Tree), allowing you to compose a CODEOWNERS file with entries, comments, and even sections (GitLab spec only)
npm install @bbckr/codeownersyarn add @bbckr/codeownersimport { CodeOwnersParser } from "@bbckr/codeowners";
const input = `
# comment # same comment
/some/path owner1 @owner2
/path/2 # comment
`;
const parser = new CodeOwnersParser();
const codeowners = parser.parse(input);const owners = codeowners.getOwners("path/to/file");['@owner1', '@owner2']
import { CodeOwners, PathNode, CommentNode } from "@bbckr/codeowners";
const codeowners = new CodeOwners([
new PathNode("/path/to/file", ["owner1", "@owner2"]),
new CommentNode("# comment"),
]);/path/to/file owner1 @owner2
# comment
import {
CodeOwners,
CodeOwnersSpec,
PathNode,
SectionNode,
} from "@bbckr/codeowners";
const codeowners = new CodeOwners(
[
new PathNode("/path/to/file", ["owner1", "@owner2"]),
new SectionNode(
"README Owners", // section name
false, // optional section
[], // owners
undefined, // count
undefined, // comment
undefined, // parent, undefined for root of file
[
new PathNode("README.md", ["@user1", "@user2"]),
new PathNode("internal/README.md", ["@user4"]),
],
),
],
CodeOwnersSpec.Gitlab,
);/path/to/file owner1 @owner2
[README Owners]
README.md @user1 @user2
internal/README.md @user4