Skip to content

Commit d32a677

Browse files
author
Lemma Daily Lint
committed
feat: add npm publish script with workspace:* → ^version replacement
Publishes 5 packages in dependency order: canon → signer → verifier → visualizer → attest-zk-groth16. Replaces workspace:* with ^x.y.z in dependencies before each publish, restores after. Reference: lemmaoracle/lemma/scripts/publish-npm.sh
1 parent 2b0cdef commit d32a677

1 file changed

Lines changed: 136 additions & 0 deletions

File tree

scripts/publish-npm.sh

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
#!/bin/bash
2+
# Publish Verifiable OKF packages to npm
3+
# Usage:
4+
# ./scripts/publish-npm.sh [version]
5+
#
6+
# version: patch (default) | minor | major | specific version (e.g. 0.1.1)
7+
#
8+
# Publish order (dependency graph): canon → signer → verifier → visualizer → attest-zk-groth16
9+
10+
set -e
11+
12+
ALL_PACKAGES=("canon" "signer" "verifier" "visualizer" "attest-zk-groth16")
13+
NPM_SCOPE="@verifiable-okf"
14+
15+
VERSION="${1:-patch}"
16+
17+
echo "🚀 Publishing $NPM_SCOPE/* to npm"
18+
echo "Version: $VERSION"
19+
20+
# Check npm login
21+
if ! npm whoami &> /dev/null; then
22+
echo "❌ Not logged into npm. Run 'npm login' first."
23+
exit 1
24+
fi
25+
26+
# Must run from repo root
27+
if [ ! -f "package.json" ]; then
28+
echo "❌ Run from repository root"
29+
exit 1
30+
fi
31+
32+
# Build all packages
33+
echo "📦 Building all packages..."
34+
pnpm -F "./packages/*" build
35+
36+
# ── canon (leaf — no workspace deps) ──
37+
publish_canon() {
38+
cd packages/canon
39+
npm version "$VERSION" --no-git-tag-version
40+
local ver=$(node -p "require('./package.json').version")
41+
echo "🚀 Publishing $NPM_SCOPE/canon@$ver..."
42+
npm publish --access public
43+
cd ../..
44+
echo "$NPM_SCOPE/canon@$ver"
45+
}
46+
47+
# ── signer (depends on canon) ──
48+
publish_signer() {
49+
cd packages/signer
50+
npm version "$VERSION" --no-git-tag-version
51+
cp package.json package.json.backup
52+
53+
local canon_ver=$(node -p "require('../canon/package.json').version")
54+
node -e "
55+
const pkg = require('./package.json');
56+
pkg.dependencies['$NPM_SCOPE/canon'] = '^${canon_ver}';
57+
require('fs').writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');
58+
"
59+
local ver=$(node -p "require('./package.json').version")
60+
echo "🚀 Publishing $NPM_SCOPE/signer@$ver (canon: ^$canon_ver)..."
61+
npm publish --access public
62+
mv package.json.backup package.json
63+
cd ../..
64+
echo "$NPM_SCOPE/signer@$ver"
65+
}
66+
67+
# ── verifier (depends on canon) ──
68+
publish_verifier() {
69+
cd packages/verifier
70+
npm version "$VERSION" --no-git-tag-version
71+
cp package.json package.json.backup
72+
73+
local canon_ver=$(node -p "require('../canon/package.json').version")
74+
node -e "
75+
const pkg = require('./package.json');
76+
pkg.dependencies['$NPM_SCOPE/canon'] = '^${canon_ver}';
77+
require('fs').writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');
78+
"
79+
local ver=$(node -p "require('./package.json').version")
80+
echo "🚀 Publishing $NPM_SCOPE/verifier@$ver (canon: ^$canon_ver)..."
81+
npm publish --access public
82+
mv package.json.backup package.json
83+
cd ../..
84+
echo "$NPM_SCOPE/verifier@$ver"
85+
}
86+
87+
# ── visualizer (depends on canon + verifier) ──
88+
publish_visualizer() {
89+
cd packages/visualizer
90+
npm version "$VERSION" --no-git-tag-version
91+
cp package.json package.json.backup
92+
93+
local canon_ver=$(node -p "require('../canon/package.json').version")
94+
local verifier_ver=$(node -p "require('../verifier/package.json').version")
95+
node -e "
96+
const pkg = require('./package.json');
97+
pkg.dependencies['$NPM_SCOPE/canon'] = '^${canon_ver}';
98+
pkg.dependencies['$NPM_SCOPE/verifier'] = '^${verifier_ver}';
99+
require('fs').writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\n');
100+
"
101+
local ver=$(node -p "require('./package.json').version")
102+
echo "🚀 Publishing $NPM_SCOPE/visualizer@$ver (canon: ^$canon_ver, verifier: ^$verifier_ver)..."
103+
npm publish --access public
104+
mv package.json.backup package.json
105+
cd ../..
106+
echo "$NPM_SCOPE/visualizer@$ver"
107+
}
108+
109+
# ── attest-zk-groth16 (leaf — only external @lemmaoracle/sdk dep) ──
110+
publish_attest() {
111+
cd packages/attest-zk-groth16
112+
npm version "$VERSION" --no-git-tag-version
113+
local ver=$(node -p "require('./package.json').version")
114+
echo "🚀 Publishing $NPM_SCOPE/attest-zk-groth16@$ver..."
115+
npm publish --access public
116+
cd ../..
117+
echo "$NPM_SCOPE/attest-zk-groth16@$ver"
118+
}
119+
120+
# ── Execute in dependency order ──
121+
publish_canon
122+
publish_signer
123+
publish_verifier
124+
publish_visualizer
125+
publish_attest
126+
127+
echo ""
128+
echo "📋 Published:"
129+
for pkg in "${ALL_PACKAGES[@]}"; do
130+
local_ver=$(node -p "require('./packages/$pkg/package.json').version")
131+
echo " - $NPM_SCOPE/$pkg@$local_ver"
132+
done
133+
echo ""
134+
echo "⚠️ Version bumps applied to all package.json files."
135+
echo " Commit them after verifying: git diff packages/*/package.json"
136+
echo "✅ Done!"

0 commit comments

Comments
 (0)