File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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
You can’t perform that action at this time.
0 commit comments