1+ name : Publish to NPM
2+
3+ on :
4+ push :
5+ tags :
6+ - ' v*'
7+
8+ jobs :
9+ publish :
10+ runs-on : ubuntu-latest
11+ permissions :
12+ contents : read
13+ id-token : write
14+ steps :
15+ - name : Checkout repository
16+ uses : actions/checkout@v4
17+
18+ - name : Setup Node.js
19+ uses : actions/setup-node@v4
20+ with :
21+ node-version : 18
22+ cache : ' yarn'
23+ registry-url : ' https://registry.npmjs.org'
24+
25+ - name : Install Yarn
26+ run : corepack enable
27+
28+ - name : Install dependencies
29+ run : yarn install --immutable
30+
31+ - name : Lint packages
32+ run : |
33+ yarn workspace @vue-skuilder/common lint:check
34+ yarn workspace @vue-skuilder/db lint:check
35+ yarn workspace @vue-skuilder/express lint:check
36+
37+ - name : Type check packages
38+ run : |
39+ yarn workspace @vue-skuilder/express type-check
40+ yarn workspace @vue-skuilder/courses type-check
41+
42+ - name : Build packages in dependency order
43+ run : |
44+ echo "Building common package..."
45+ yarn workspace @vue-skuilder/common build
46+
47+ echo "Building db package..."
48+ yarn workspace @vue-skuilder/db build
49+
50+ echo "Building common-ui package..."
51+ yarn workspace @vue-skuilder/common-ui build
52+
53+ echo "Building courses package..."
54+ yarn workspace @vue-skuilder/courses build
55+
56+ echo "Building client package..."
57+ yarn workspace @vue-skuilder/client build
58+
59+ echo "Building platform-ui package..."
60+ yarn workspace @vue-skuilder/platform-ui build
61+
62+ echo "Building standalone-ui package..."
63+ yarn workspace @vue-skuilder/standalone-ui build
64+
65+ echo "Building express package..."
66+ yarn workspace @vue-skuilder/express build
67+
68+ - name : Verify build outputs
69+ run : |
70+ for package in common db common-ui courses client platform-ui standalone-ui express; do
71+ if [ ! -d "packages/$package/dist" ]; then
72+ echo "Error: dist directory not found for @vue-skuilder/$package"
73+ exit 1
74+ fi
75+ echo "✓ @vue-skuilder/$package build output verified"
76+ done
77+
78+ - name : Publish packages in dependency order
79+ env :
80+ NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
81+ run : |
82+ set -e
83+
84+ echo "Publishing @vue-skuilder/common..."
85+ cd packages/common && npm publish --access public
86+
87+ echo "Publishing @vue-skuilder/db..."
88+ cd ../db && npm publish --access public
89+
90+ echo "Publishing @vue-skuilder/common-ui..."
91+ cd ../common-ui && npm publish --access public
92+
93+ echo "Publishing @vue-skuilder/courses..."
94+ cd ../courses && npm publish --access public
95+
96+ echo "Publishing @vue-skuilder/client..."
97+ cd ../client && npm publish --access public
98+
99+ echo "Publishing @vue-skuilder/platform-ui..."
100+ cd ../platform-ui && npm publish --access public
101+
102+ echo "Publishing @vue-skuilder/standalone-ui..."
103+ cd ../standalone-ui && npm publish --access public
104+
105+ echo "Publishing @vue-skuilder/express..."
106+ cd ../express && npm publish --access public
107+
108+ echo "All packages published successfully!"
109+
110+ - name : Create GitHub Release
111+ uses : actions/create-release@v1
112+ env :
113+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
114+ with :
115+ tag_name : ${{ github.ref }}
116+ release_name : Release ${{ github.ref }}
117+ body : |
118+ Automated release for vue-skuilder packages
119+
120+ Published packages:
121+ - @vue-skuilder/common
122+ - @vue-skuilder/db
123+ - @vue-skuilder/common-ui
124+ - @vue-skuilder/courses
125+ - @vue-skuilder/client
126+ - @vue-skuilder/platform-ui
127+ - @vue-skuilder/standalone-ui
128+ - @vue-skuilder/express
129+ draft : false
130+ prerelease : false
0 commit comments