diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..46e0c9e --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,34 @@ +name: Publish NPM Package + +on: + push: + branches: + - main + +jobs: + publish: + runs-on: ubuntu-latest + if: contains(github.event.head_commit.message, 'release') + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + registry-url: 'https://registry.npmjs.org' + + - name: Install pnpm + run: npm i -g pnpm@9 + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build lib + run: pnpm run build:lib + + - name: Publish package + run: sh ./scripts/publish.sh + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9418d31..3815700 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,20 +1,28 @@ -name: test - -on: [push, pull_request] - -jobs: - jest: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v4 - with: - node-version: '20' - - name: Install pnpm - run: npm i -g pnpm@9 - - name: Install dependencies - run: pnpm install - - name: Run unit test - run: pnpm run test:unit - - name: Run build - run: pnpm run build:lib +name: test + +on: [push, pull_request] + +jobs: + jest: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + registry-url: 'https://registry.npmjs.org' + + - name: Install pnpm + run: npm i -g pnpm@9 + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Run unit test + run: pnpm run test:unit + + - name: Run build lib + run: pnpm run build:lib diff --git a/package.json b/package.json index 9bc78df..5a128f1 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,9 @@ "lint:fix": "eslint --fix", "lint:lint-staged": "lint-staged", "lint:stylelint": "stylelint ./**/*.{css,scss} --cache --fix", - "publish:patch": "cross-env NEXT_VERSION=patch pnpm recursive run publish", - "publish:minor": "cross-env NEXT_VERSION=minor pnpm recursive run publish", - "publish:major": "cross-env NEXT_VERSION=major pnpm recursive run publish" + "version:patch": "pnpm recursive run version:patch", + "version:minor": "pnpm recursive run version:minor", + "version:major": "pnpm recursive run version:major" }, "author": "LonelySnowman", "license": "ISC", diff --git a/packages/components/package.json b/packages/components/package.json index d3a530e..a60e637 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -12,7 +12,9 @@ "scripts": { "build": "snow-tools run build", "clean": "rimraf lib dist node_modules", - "publish": "npm version $NEXT_VERSION --no-git-tag-version && npm publish" + "version:patch": "npm version patch --no-git-tag-version", + "version:minor": "npm version minor --no-git-tag-version", + "version:major": "npm version major --no-git-tag-version" }, "keywords": [ "snow-design", diff --git a/packages/foundation/package.json b/packages/foundation/package.json index c5d5934..cf28e72 100644 --- a/packages/foundation/package.json +++ b/packages/foundation/package.json @@ -5,7 +5,9 @@ "scripts": { "build": "snow-tools run compileFoundation", "clean": "rimraf lib node_modules", - "publish": "npm version $NEXT_VERSION --no-git-tag-version && npm publish" + "version:patch": "npm version patch --no-git-tag-version", + "version:minor": "npm version minor --no-git-tag-version", + "version:major": "npm version major --no-git-tag-version" }, "files": [ "lib" diff --git a/packages/locale/package.json b/packages/locale/package.json index c1e8bd5..4968d60 100644 --- a/packages/locale/package.json +++ b/packages/locale/package.json @@ -1,17 +1,21 @@ { "name": "@snow-design/locale", - "version": "0.0.22", + "version": "0.0.23", "files": [ "lib" ], "scripts": { "build": "tsup", "clean": "rimraf lib node_modules", - "publish": "npm version $NEXT_VERSION --no-git-tag-version && npm publish" + "version:patch": "npm version patch --no-git-tag-version", + "version:minor": "npm version minor --no-git-tag-version", + "version:major": "npm version major --no-git-tag-version" }, "description": "SnowDesign 组件库国际化语言包", "main": "index.ts", - "keywords": ["snow-design"], + "keywords": [ + "snow-design" + ], "author": "LonelySnowman", "license": "ISC", "devDependencies": { diff --git a/packages/theme-default/package.json b/packages/theme-default/package.json index 5137316..e303aaa 100644 --- a/packages/theme-default/package.json +++ b/packages/theme-default/package.json @@ -1,11 +1,15 @@ { "name": "@snow-design/theme-default", - "version": "0.0.22", + "version": "0.0.23", "scripts": { - "publish": "npm version $NEXT_VERSION --no-git-tag-version && npm publish" + "version:patch": "npm version patch --no-git-tag-version", + "version:minor": "npm version minor --no-git-tag-version", + "version:major": "npm version major --no-git-tag-version" }, "description": "SnowDesign 组件库默认主题包", - "keywords": ["snow-design"], + "keywords": [ + "snow-design" + ], "author": "LonelySnowman", "license": "ISC" } diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 595e0dd..9334316 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@snow-design/vite-plugin", - "version": "0.0.22", + "version": "0.0.23", "description": "SnowDesign 组件库主题包 Vite 插件", "main": "dist/index.cjs", "types": "dist/index.d.ts", @@ -8,12 +8,16 @@ "scripts": { "build": "rollup -c rollup.config.ts --configPlugin typescript", "clean": "rimraf lib node_modules", - "publish": "npm version $NEXT_VERSION --no-git-tag-version && npm publish" + "version:patch": "npm version patch --no-git-tag-version", + "version:minor": "npm version minor --no-git-tag-version", + "version:major": "npm version major --no-git-tag-version" }, "files": [ "lib/*" ], - "keywords": ["snow-design"], + "keywords": [ + "snow-design" + ], "author": "LonelySnowman", "license": "ISC", "devDependencies": { diff --git a/packages/vue3/package.json b/packages/vue3/package.json index 7bc78fd..7962826 100644 --- a/packages/vue3/package.json +++ b/packages/vue3/package.json @@ -12,7 +12,9 @@ "scripts": { "build": "snow-tools run build --mode vue", "clean": "rimraf lib dist node_modules", - "publish": "npm version $NEXT_VERSION --no-git-tag-version && npm publish" + "version:patch": "npm version patch --no-git-tag-version", + "version:minor": "npm version minor --no-git-tag-version", + "version:major": "npm version major --no-git-tag-version" }, "keywords": [ "snow-design" diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 7be65b4..b415643 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -1,18 +1,22 @@ { "name": "@snow-design/webpack-plugin", - "version": "0.0.22", + "version": "0.0.23", "description": "SnowDesign 组件库主题包 Webpack 插件", "main": "lib/index.js", "scripts": { "build:lib": "tsc", "build": "pnpm run build:lib", "clean": "rimraf lib node_modules", - "publish": "npm version $NEXT_VERSION --no-git-tag-version && npm publish" + "version:patch": "npm version patch --no-git-tag-version", + "version:minor": "npm version minor --no-git-tag-version", + "version:major": "npm version major --no-git-tag-version" }, "files": [ "lib/*" ], - "keywords": ["snow-design"], + "keywords": [ + "snow-design" + ], "author": "LonelySnowman", "license": "ISC", "dependencies": { diff --git a/scripts/publish.sh b/scripts/publish.sh new file mode 100644 index 0000000..65df748 --- /dev/null +++ b/scripts/publish.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +set -e + +cd packages/components +npm publish --access public +cd - + +cd packages/vue3 +npm publish --access public +cd - + +cd packages/foundation +npm publish --access public +cd - + +cd packages/locale +npm publish --access public +cd - + +cd packages/theme-default +npm publish --access public +cd - + +cd packages/vite-plugin +npm publish --access public +cd - + +cd packages/webpack-plugin +npm publish --access public +cd - + +echo "✅ Publish completed"