oxlint JS plugin with the containerbase lint rules.
{
"jsPlugins": ["@containerbase/oxlint-plugin"],
"rules": {
"containerbase/enforce-ts-extension": "error",
"containerbase/enum-member-pascal-case": "error",
"containerbase/no-undeclared-dependencies": "error",
"containerbase/organize-imports": "error",
"containerbase/test-root-describe": "error"
}
}enforce-ts-extension: in TypeScript files, local imports and exports (relative or~aliased) use.tsinstead of.js, and local paths invi.mockand friends have a file extension. Fixable.enum-member-pascal-case: enum members are written in PascalCase, like thePascalCaseformat of@typescript-eslint/naming-convention.no-undeclared-dependencies: imported packages are declared in the nearestpackage.json.devDependenciesare only allowed with theallowDevDependenciesoption, for example in tests. Type-only imports are skipped.organize-imports: imports are grouped by builtin, external, parent, sibling and index modules, then other paths like tsconfig aliases, and sorted alphabetically within each group. Side-effect imports stay in place. Fixable.test-root-describe: the rootdescribeof a spec file is named after its path, withoutsrc/,lib/ortest/and the.spec.tssuffix. Fixable.
Node.js, pnpm, jactionlint, shellcheck and zizmor are pinned in mise.toml, so mise installs them with mise install, then pnpm install --frozen-lockfile installs the dependencies.
Without mise, install Node.js and pnpm yourself and run only pnpm install --frozen-lockfile.
mise install
pnpm install --frozen-lockfile
pnpm lint
pnpm test
pnpm build
jactionlint
zizmor .github/pnpm lint-fixfixes the formatting and the fixable lint findings.pnpm buildcompiles the plugin todist/, which is what the package ships.jactionlintchecks the GitHub workflows andzizmor .github/audits them. CI runs both through mise in thelintjob.