71 lines
2.0 KiB
YAML
71 lines
2.0 KiB
YAML
name: Publish npm
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- master
|
|
|
|
jobs:
|
|
publish:
|
|
if: github.repository == 'anghunk/cwd'
|
|
runs-on: ubuntu-latest
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "20"
|
|
registry-url: "https://registry.npmjs.org"
|
|
|
|
- name: Get local package info
|
|
id: pkg
|
|
working-directory: docs/widget
|
|
run: |
|
|
name=$(node -p "require('./package.json').name")
|
|
version=$(node -p "require('./package.json').version")
|
|
echo "name=$name" >> $GITHUB_OUTPUT
|
|
echo "version=$version" >> $GITHUB_OUTPUT
|
|
|
|
- name: Get npm published version
|
|
id: npm
|
|
run: |
|
|
PUBLISHED_VERSION=$(npm view "${{ steps.pkg.outputs.name }}" version || echo "none")
|
|
echo "version=$PUBLISHED_VERSION" >> $GITHUB_OUTPUT
|
|
|
|
- name: Decide whether to publish
|
|
id: decision
|
|
run: |
|
|
echo "local=${{ steps.pkg.outputs.version }}"
|
|
echo "remote=${{ steps.npm.outputs.version }}"
|
|
if [ "${{ steps.npm.outputs.version }}" = "none" ]; then
|
|
echo "should_publish=true" >> $GITHUB_OUTPUT
|
|
elif [ "${{ steps.pkg.outputs.version }}" != "${{ steps.npm.outputs.version }}" ]; then
|
|
echo "should_publish=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "should_publish=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Install dependencies
|
|
if: steps.decision.outputs.should_publish == 'true'
|
|
working-directory: docs/widget
|
|
run: npm install
|
|
|
|
- name: Build widget
|
|
if: steps.decision.outputs.should_publish == 'true'
|
|
working-directory: docs/widget
|
|
run: npm run build
|
|
|
|
- name: Publish to npm
|
|
if: steps.decision.outputs.should_publish == 'true'
|
|
working-directory: docs/widget
|
|
env:
|
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
run: npm publish --access public
|