@@ -4,6 +4,9 @@ on: [workflow_dispatch]
44defaults :
55 run :
66 working-directory : src
7+ permissions :
8+ contents : read
9+ id-token : write
710
811jobs :
912 build :
1821 registry-url : " https://registry.npmjs.org"
1922 node-version-file : ./src/.nvmrc
2023
24+ - name : Ensure specific npm version
25+ run : npm install -g npm@11.9.0
26+
2127 - name : Install dependencies
2228 run : npm ci
2329
@@ -50,20 +56,24 @@ jobs:
5056 NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
5157 NODE_ENV : production
5258
53- - name : Publish Pongo package on NPM 📦
59+ - name : Publish packages on NPM 📦
5460 run : |
55- VERSION=$(node -p "require('./package.json').version")
56- if [[ $VERSION == *"beta"* ]]; then
57- TAG="beta"
58- elif [[ $VERSION == *"alpha"* ]]; then
59- TAG="alpha"
60- elif [[ $VERSION == *"rc"* ]]; then
61- TAG="rc"
62- else
63- TAG="latest"
64- fi
65- npm publish --w @event-driven-io/pongo --tag $TAG
66- continue-on-error : true
67- env :
68- NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
69- NODE_ENV : production
61+ for pkg_dir in packages/*/; do
62+ [ -f "${pkg_dir}package.json" ] || { echo "⏭ ${pkg_dir} has no package.json — skipping"; continue; }
63+
64+ read -r pkg_name pkg_version pkg_private < <(node -p "
65+ const p = require('./${pkg_dir}package.json');
66+ [p.name, p.version, p.private ?? false].join(' ')
67+ ")
68+
69+ [ "$pkg_private" = "true" ] && { echo "⏭ ${pkg_name}@${pkg_version} is private — skipping"; continue; }
70+
71+ tag=$(echo "$pkg_version" | sed -E 's/.*-(beta|alpha|rc)\..*/\1/; t; s/.*/latest/')
72+
73+ if npm view "${pkg_name}@${pkg_version}" version >/dev/null 2>&1; then
74+ echo "⏭ ${pkg_name}@${pkg_version} already published — skipping"
75+ else
76+ echo "📦 Publishing ${pkg_name}@${pkg_version}"
77+ npm publish -w "${pkg_dir}" --tag "$tag" --access public --provenance
78+ fi
79+ done
0 commit comments