Skip to content

Commit b99835f

Browse files
committed
feat: add autorelease to npm packages
1 parent a2cc96c commit b99835f

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: Publish subpackages to npm
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
jobs:
8+
publish:
9+
runs-on: ubuntu-latest
10+
permissions:
11+
contents: read
12+
id-token: write
13+
14+
steps:
15+
- name: Checkout repo
16+
uses: actions/checkout@v4
17+
with:
18+
fetch-depth: 0
19+
20+
- name: Use Node.js
21+
uses: actions/setup-node@v4
22+
with:
23+
node-version: 20
24+
registry-url: "https://registry.npmjs.org"
25+
26+
- name: Get release version
27+
id: release
28+
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
29+
30+
- name: Detect changed packages
31+
id: changes
32+
run: |
33+
CHANGED=""
34+
for dir in templates/*; do
35+
# skip if folder does not contain a package.json
36+
if [ ! -f "$dir/package.json" ]; then
37+
echo "Skipping $dir (no package.json)"
38+
continue
39+
fi
40+
41+
if git diff --quiet HEAD~1 -- "$dir"; then
42+
continue
43+
fi
44+
45+
CHANGED="$CHANGED $dir"
46+
done
47+
echo "dirs=$CHANGED" >> "$GITHUB_OUTPUT"
48+
49+
- name: Publish changed packages
50+
if: steps.changes.outputs.dirs != ''
51+
env:
52+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
53+
run: |
54+
VERSION="${{ steps.release.outputs.version }}"
55+
56+
for dir in ${{ steps.changes.outputs.dirs }}; do
57+
echo "Publishing $dir"
58+
59+
# update version number
60+
jq --arg v "$VERSION" '.version=$v' "$dir/package.json" \
61+
> "$dir/package.json.tmp"
62+
mv "$dir/package.json.tmp" "$dir/package.json"
63+
64+
cd "$dir"
65+
npm publish --access public
66+
cd -
67+
done

0 commit comments

Comments
 (0)