@kitschpatrol/repo-config
v5.0.5
Published
Repository configuration and GitHub workflows for @kitschpatrol/shared-config.
Downloads
601
Maintainers
Readme
@kitschpatrol/repo-config
Repository configuration and GitHub workflows for @kitschpatrol/shared-config.
Overview
It's a pnpm
-flavored shared config with some essential files for a fresh repo, plus automated linting for things like copyright notice dates, all accessible via a bundled command like tool named kpi-repo
.
This includes the following:
.npmrc
with hoisting patterns forkpi
tool access.gitignore
with typical patterns.vscode
extension recommendations (additional settings and recommendations come from other@kitschpatrol/shared-config
packages).github
folder with workflows:github-release.yml
Automates turning turning vX.X.X tags on main into GitHub releases with changelogsset-github-metadata.yml
Populates GitHub repo metadata from package.json
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 itskpi
command
Setup
Run-once approach
If you just need to set up your .npmrc
in anticipation of installing another shared config, you can run the script via dlx
to copy the .npmrc
to your home folder:
pnpm dlx @kitschpatrol/repo-config init
Installation approach
Optionally, 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 kpi-repo init
GitHub Configuration
There are two options for authenticating the release workflow action:
GitHub Token
- Ensure that read / write permissions are set for actions on the repository under Settings → Actions → General → Workflow permissions.
Personal Access token
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')
GitHub Actions
Note: Action dependencies have been forked.
| Original | Fork | Modifications | | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------- | | bullrich/generate-release-changelog | kitschpatrol/github-action-release-changelog | ❌ | | softprops/action-gh-release | kitschpatrol/github-action-release | ❌ | | kbrashears5/github-action-repo-sync | kitschpatrol/github-action-repo-sync | ✅ |
Usage
CLI
Command: kpi-repo
Kitschpatrol's repository-related shared configuration tools.
This section lists top-level commands for kpi-repo
.
Usage:
kpi-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. |
| Option | Description | Type |
| ------------------- | ------------------- | --------- |
| --help
-h
| Show help | boolean
|
| --version
-v
| Show version number | boolean
|
See the sections below for more information on each subcommand.
Subcommand: kpi-repo init
Initialize by copying starter config files to your project root.
Usage:
kpi-repo init
| Option | Description | Type |
| ------------------- | ------------------- | --------- |
| --help
-h
| Show help | boolean
|
| --version
-v
| Show version number | boolean
|
Subcommand: kpi-repo lint
Check the repo for common issues. Package-scoped. In a monorepo, it will also run in all packages below the current working directory.
Usage:
kpi-repo lint
| Option | Description | Type |
| ------------------- | ------------------- | --------- |
| --help
-h
| Show help | boolean
|
| --version
-v
| Show version number | boolean
|
Subcommand: kpi-repo 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.
Usage:
kpi-repo fix
| Option | Description | Type |
| ------------------- | ------------------- | --------- |
| --help
-h
| Show help | boolean
|
| --version
-v
| Show version number | boolean
|
License
MIT © Eric Mika