Skip to content

Fix node version file name #9

Fix node version file name

Fix node version file name #9

Workflow file for this run

name: Publish new release
on:
push:
tags:
- '*'
jobs:
check-version-match:
name: Check versions match in package* files
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '/.nvmrc'
# versions match => equality is true => inequality is false => Number(false) is 0 => process.exit(0)
# versions differ => equality is false => inequality is true => Number(true) is 1 => process.exit(1)
- run: |2
node -e "process.exit(require('./package.json').version !== require('./package-lock.json').version)"
check-version-new:
name: Check version is new
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '/.nvmrc'
- name: Assert version is not published
run: |2
set -e
package_name=$(node -pe "require('./package.json').name;")
incoming_version=$(node -pe "require('./package.json').version;")
if [ ! -z "$(npm view $package_name@$incoming_version version)" ]; then
echo "This version ($incoming_version) of $package_name is already published; please, update version by running 'npm version <version>'"
exit 1
fi
check-no-deps:
name: Check no dependencies
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '/.nvmrc'
- name: Assert 'dependencies' object in package.json is empty
run: |2
node -e "const deps = Object.keys(require('./package.json').dependencies || {}); assert.equal(deps.length, 0, 'Claimed to have no dependencies, instead found: ' + deps.join(', '))"
# TODO: maybe also check that the branch is 'main'
lint:
needs:
- check-version-match
- check-version-new
- check-no-deps
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '/.nvmrc'
- run: npm ci
- run: npm run lint
test:
name: Run tests on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
needs:
- lint
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '/.nvmrc'
- run: npm ci
- run: npm t
publish:
name: Publish version
runs-on: ubuntu-20.04
needs:
- test
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '/.nvmrc'
- run: npm ci
- run: npm run build
- run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_AUTH_TOKEN }}" > .npmrc
- run: npm publish --tag latest