Package Exports
- @bbckr/codeowners
- @bbckr/codeowners/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@bbckr/codeowners) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@bbckr/codeowners
A TypeScript library for parsing and composing CODEOWNERS files.
Features
- 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)
Installation
npm install @bbckr/codeownersyarn add @bbckr/codeownersUsage
Parse a CODEOWNERS file
import { 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);Get the owners of a file
const owners = codeowners.getOwners("path/to/file");Output
['@owner1', '@owner2']Compose a CODEOWNERS file programatically
import { CodeOwners, PathNode, CommentNode } from "@bbckr/codeowners";
const codeowners = new CodeOwners([
new PathNode("/path/to/file", ["owner1", "@owner2"]),
new CommentNode("# comment"),
]);Output
/path/to/file owner1 @owner2
# commentCompose a GitLab CODEOWNERS file programatically
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,
);Output
/path/to/file owner1 @owner2
[README Owners]
README.md @user1 @user2
internal/README.md @user4