Repository configuration and GitHub workflows for @kitschpatrol/shared-config.
It's a pnpm-flavored shared config with some essential files for a fresh repo, plus automated linting and fixing via a bundled CLI tool named ksc-repo.
The lint and fix commands check and correct:
- License year: Ensures the copyright year in
license.txtmatches the current year. - Node.js version: Ensures
engines.nodeanddevEngines.runtimeinpackage.jsonreflect the minimum Node.js versions actually required by your dependency tree (derived from the pnpm lockfile). If dev dependencies require a higher Node.js version than production dependencies, a separatedevEngines.runtimeentry is managed automatically.
This includes the following:
pnpm-workspace.yamlwith hoisting patterns forksctool access and trusted dependency installation scripts..gitignorewith typical patterns.vscodeextension recommendations (additional settings and recommendations come from other@kitschpatrol/shared-configpackages).vscode/tasks.jsonwithksc-repo lintandksc-repo fixtasks that run the checks above in--format machinemode and feed reported issues into VS Code's Problems panel via a problem matcher. (The other@kitschpatrol/shared-configpackages contribute tasks for their own tools the same way.) If atasks.jsonalready exists,initmerges by task label, leaving your own tasks untouched..githubfolder with workflows:github-release.ymlAutomates turning turning vX.X.X tags on main into GitHub releases with changelogsset-github-metadata.ymlPopulates GitHub repo metadata from package.jsonci.ymlBasic cross-platform CI action
In order to work around some hoisting issues related to plugin resolution in the other @kitschpatrol/shared-config packages, it's critical that it is applied before any other @kitschpatrol/shared-config packages are installed.
Important
You can use this package on its own, but it's recommended to use @kitschpatrol/shared-config instead for a single-dependency and single-package approach to linting and fixing your project.
This package is included as a dependency in @kitschpatrol/shared-config, which also automatically invokes the command line functionality in this package via its ksc command
If you just need to set up your basic repository configuration files in anticipation of installing another @kitschpatrol shared configuration dependency, you can run the script via dlx to copy them to your project's root:
pnpm --package=@kitschpatrol/repo-config dlx ksc-repo initOptionally, you can install the package if you think you'll ever want to regenerate the repo config files.
-
Add the package:
pnpm add -D @kitschpatrol/repo-config
-
If / when you need to regenerate the repo config files, you can run the bundled script:
pnpm exec ksc-repo init
There are two options for authenticating the release workflow action:
- Ensure that read / write permissions are set for actions on the repository under Settings → Actions → General → Workflow permissions.
If you want releases to come from your account instead of github_actions, then:
-
Create a fine-grained personal access token in your GitHub account with the following permissions:
Permission Access Administration Read and write Contents Read and write Metadata Read-only -
Add the token as a secret to your new GitHub repository.
You can do this through the GitHub website under the Settings → Secrets and variables → Actions page under the key
PERSONAL_ACCESS_TOKEN.Alternately, you can do this locally with the GitHub CLI and a credential manager like 1Password CLI:
gh secret set PERSONAL_ACCESS_TOKEN --app actions --body $(op read 'op://Personal/GitHub Mika/PERSONAL_ACCESS_TOKEN')
Note: Action dependencies have been forked.
Kitschpatrol's repository-related shared configuration tools.
This section lists top-level commands for ksc-repo.
Usage:
ksc-repo <command>| Command | Description |
|---|---|
init |
Initialize by copying starter config files to your project root. |
lint |
Check the repo for common issues. Package-scoped. In a monorepo, it will also run in all packages below the current working directory. |
fix |
Fix common issues like outdated copyright years in license files. Package-scoped. In a monorepo, it will also run in all packages below the current working directory. |
print-config |
Print minimum Node.js version constraints from the pnpm lockfile. |
| Option | Description | Type |
|---|---|---|
--help-h |
Show help | boolean |
--version-v |
Show version number | boolean |
See the sections below for more information on each subcommand.
Initialize by copying starter config files to your project root.
Usage:
ksc-repo init| Option | Description | Type |
|---|---|---|
--help-h |
Show help | boolean |
--version-v |
Show version number | boolean |
Check the repo for common issues. Package-scoped. In a monorepo, it will also run in all packages below the current working directory.
Usage:
ksc-repo lint| Option | Description | Type | Default |
|---|---|---|---|
--format |
Output format: "native" streams each tool's own output, "machine" prints one parseable line per issue for editor problem matchers, "json" prints an aggregate report. | "json" "machine" "native" |
"native" |
--cache |
Use tool-native caches stored below node_modules/.cache/ksc at the workspace root. Disable with --no-cache. | boolean |
true |
--help-h |
Show help | boolean |
|
--version-v |
Show version number | boolean |
Fix common issues like outdated copyright years in license files. Package-scoped. In a monorepo, it will also run in all packages below the current working directory.
Usage:
ksc-repo fix| Option | Description | Type | Default |
|---|---|---|---|
--format |
Output format: "native" streams each tool's own output, "machine" prints one parseable line per issue for editor problem matchers, "json" prints an aggregate report. | "json" "machine" "native" |
"native" |
--cache |
Use tool-native caches stored below node_modules/.cache/ksc at the workspace root. Disable with --no-cache. | boolean |
true |
--help-h |
Show help | boolean |
|
--version-v |
Show version number | boolean |
Print minimum Node.js version constraints from the pnpm lockfile.
Usage:
ksc-repo print-config| Option | Description | Type |
|---|---|---|
--help-h |
Show help | boolean |
--version-v |
Show version number | boolean |
ksc-repo init adds a .vscode/tasks.json with two tasks:
ksc-repo lintrunsksc-repo lint --format machineacross the whole projectksc-repo fixrunsksc-repo fix --format machine, applying auto-fixes and reporting whatever couldn't be fixed
If you're using the complete @kitschpatrol/shared-config package, you'd more likely want to run:
ksc lintrunsksc lint --format machine, which runs allksc linttools across the whole projectksc fixrunsksc fix --format machine, which applies allksc fixauto-fixes and reports anything unfixable
Run them via the Tasks: Run Task command (or the Terminal → Run Task… menu item).
Each task's problem matcher parses the machine-format output and populates VS Code's Problems panel with every reported issue, pointing to the offending file, line, and column.
The tasks share a problem matcher owner with the other @kitschpatrol/shared-config tasks, so the panel reflects the most recent run rather than stacking duplicates.
If your project already has a .vscode/tasks.json, init merges by task label: your own tasks are left alone, and same-label tasks are replaced with the latest definitions.