Skip to content

Commit 66e46be

Browse files
committed
Add changesets based publishing
1 parent 86d8ec5 commit 66e46be

5 files changed

Lines changed: 1321 additions & 13 deletions

File tree

.changeset/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Changesets
2+
3+
This folder is used by `@changesets/cli` to track release notes and version bumps.
4+
5+
Quick links:
6+
7+
- [Adding a changeset](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md)
8+
- [Versioning packages](https://github.com/changesets/changesets/blob/main/docs/versioning-packages.md)
9+
- [Publishing packages](https://github.com/changesets/changesets/blob/main/docs/publishing.md)

.changeset/config.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"$schema": "https://unpkg.com/@changesets/config@2.1.1/schema.json",
3+
"commit": false,
4+
"fixed": [],
5+
"linked": [],
6+
"access": "public",
7+
"baseBranch": "main",
8+
"updateInternalDependencies": "patch",
9+
"ignore": []
10+
}

.github/workflows/release.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
release:
10+
name: Release
11+
outputs:
12+
has_changesets: ${{ steps.changesets.outputs.hasChangesets }}
13+
should_publish: ${{ steps.publish-check.outputs.should_publish }}
14+
permissions:
15+
contents: write
16+
issues: read
17+
pull-requests: write
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout
21+
uses: actions/checkout@v4
22+
23+
- name: Install Node.js
24+
uses: actions/setup-node@v4
25+
with:
26+
node-version-file: package.json
27+
cache: npm
28+
cache-dependency-path: package-lock.json
29+
registry-url: "https://registry.npmjs.org"
30+
31+
- name: Update npm
32+
run: npm install -g npm@11.11
33+
34+
- name: Install dependencies
35+
run: npm ci
36+
37+
- name: Create Release Pull Request
38+
id: changesets
39+
uses: changesets/action@v1
40+
with:
41+
version: npm run version
42+
env:
43+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44+
45+
- name: Check whether this version still needs publishing
46+
if: steps.changesets.outputs.hasChangesets == 'false'
47+
id: publish-check
48+
shell: bash
49+
run: |
50+
PACKAGE_NAME=$(node -p "require('./package.json').name")
51+
PACKAGE_VERSION=$(node -p "require('./package.json').version")
52+
53+
echo "Checking whether ${PACKAGE_NAME}@${PACKAGE_VERSION} is already on npm"
54+
if npm view "${PACKAGE_NAME}@${PACKAGE_VERSION}" version >/dev/null 2>&1; then
55+
echo "should_publish=false" >> "$GITHUB_OUTPUT"
56+
exit 0
57+
fi
58+
59+
echo "should_publish=true" >> "$GITHUB_OUTPUT"
60+
61+
publish:
62+
name: Publish
63+
needs: release
64+
if: needs.release.outputs.should_publish == 'true'
65+
environment:
66+
name: npm
67+
url: https://www.npmjs.com/package/@preact/preset-vite
68+
permissions:
69+
contents: write
70+
id-token: write
71+
runs-on: ubuntu-latest
72+
steps:
73+
- name: Checkout
74+
uses: actions/checkout@v4
75+
76+
- name: Install Node.js
77+
uses: actions/setup-node@v4
78+
with:
79+
node-version-file: package.json
80+
cache: npm
81+
cache-dependency-path: package-lock.json
82+
registry-url: "https://registry.npmjs.org"
83+
84+
- name: Update npm
85+
run: npm install -g npm@11.11
86+
87+
- name: Install dependencies
88+
run: npm ci
89+
90+
- name: Publish packages
91+
uses: changesets/action@v1
92+
with:
93+
publish: npx changeset publish
94+
env:
95+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)