Skip to content

Commit bb0a07d

Browse files
committed
feat: publish releases to GitHub Packages npm registry
1 parent c461312 commit bb0a07d

5 files changed

Lines changed: 36 additions & 3 deletions

File tree

.github/workflows/release.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ permissions:
99
contents: write
1010
issues: write
1111
pull-requests: write
12+
packages: write
1213

1314
jobs:
1415
release:
@@ -29,11 +30,14 @@ jobs:
2930
with:
3031
node-version: 20
3132
cache: pnpm
33+
registry-url: https://npm.pkg.github.com
34+
scope: '@obcode'
3235

3336
- name: Install dependencies
3437
run: pnpm install --frozen-lockfile
3538

3639
- name: Release
3740
env:
3841
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42+
NPM_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3943
run: pnpm run release

.releaserc.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
"changelogFile": "CHANGELOG.md"
1010
}
1111
],
12+
[
13+
"@semantic-release/npm",
14+
{
15+
"npmPublish": true
16+
}
17+
],
1218
"@semantic-release/github",
1319
[
1420
"@semantic-release/git",

README.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ Reusable CLI toolkit for Slidev-based lecture repositories.
88
pnpm add -D github:obcode/lecture-toolkit-cli#v0.1.0
99
```
1010

11+
via GitHub Packages (npm registry):
12+
13+
```bash
14+
pnpm add -D @obcode/lecture-toolkit-cli
15+
```
16+
1117
or run on demand:
1218

1319
```bash
@@ -97,9 +103,19 @@ This repository is configured for Semantic Release via GitHub Actions.
97103
- Config: `.releaserc.json`
98104
- Trigger: push to `main`
99105

100-
Required GitHub repository secrets:
106+
The release workflow publishes:
101107

102-
- no extra secrets required (uses `GITHUB_TOKEN`)
108+
- Git tag + GitHub Release
109+
- npm package to GitHub Packages (`npm.pkg.github.com`)
110+
111+
No extra secrets are required for same-repo publishing. The workflow maps `NPM_TOKEN` to `GITHUB_TOKEN` and requires `packages: write` permission.
112+
113+
To consume the package from GitHub Packages, configure `.npmrc` in the consuming repo or user profile:
114+
115+
```ini
116+
@obcode:registry=https://npm.pkg.github.com
117+
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}
118+
```
103119

104120
Use Conventional Commits for release versioning, for example:
105121

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "lecture-toolkit-cli",
2+
"name": "@obcode/lecture-toolkit-cli",
33
"version": "0.1.0",
44
"description": "Reusable CLI toolkit for Slidev lecture repositories",
55
"type": "module",
@@ -18,12 +18,16 @@
1818
"scripts": {
1919
"release": "semantic-release"
2020
},
21+
"publishConfig": {
22+
"registry": "https://npm.pkg.github.com"
23+
},
2124
"packageManager": "pnpm@10.33.0",
2225
"devDependencies": {
2326
"@semantic-release/changelog": "^6.0.3",
2427
"@semantic-release/commit-analyzer": "^13.0.1",
2528
"@semantic-release/git": "^10.0.1",
2629
"@semantic-release/github": "^11.0.6",
30+
"@semantic-release/npm": "^12.0.2",
2731
"@semantic-release/release-notes-generator": "^14.1.0",
2832
"semantic-release": "^24.2.9"
2933
}

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)