diff --git a/.github/workflows/check-dist.yml b/.github/workflows/check-dist.yml new file mode 100644 index 0000000..46cf42f --- /dev/null +++ b/.github/workflows/check-dist.yml @@ -0,0 +1,58 @@ +# In TypeScript actions, `dist/` is a special directory. When you reference +# an action with the `uses:` property, `dist/index.js` is the code that will be +# run. For this project, the `dist/index.js` file is transpiled from other +# source files. This workflow ensures the `dist/` directory contains the +# expected transpiled code. +# +# If this workflow is run from a feature branch, it will act as an additional CI +# check and fail if the checked-in `dist/` directory does not match what is +# expected from the build. +name: check-dist + +on: + pull_request: + branches: + - main + +permissions: + contents: read + +jobs: + check-dist: + runs-on: ubuntu-latest + + steps: + - name: Checkout + id: checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + id: setup-node + uses: actions/setup-node@v4 + with: + node-version-file: .node-version + cache: npm + + - name: Install Dependencies + id: install + run: npm ci + + - name: Build dist/ Directory + id: build + run: npm run bundle + + # This will fail the workflow if the `dist/` directory is different than + # expected. + - name: Compare Directories + id: diff + run: | + if [ ! -d dist/ ]; then + echo "Expected dist/ directory does not exist. See status below:" + ls -la ./ + exit 1 + fi + if [ "$(git diff --ignore-space-at-eol --text dist/ | wc -l)" -gt "0" ]; then + echo "Detected uncommitted changes after build. See status below:" + git diff --ignore-space-at-eol --text dist/ + exit 1 + fi diff --git a/package.json b/package.json index 534b7a6..f5f09a3 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "node": ">=20" }, "scripts": { + "bundle": "npm run format:write && npm run package", "format:write": "npx prettier --write .", "format:check": "npx prettier --check .", "lint": "npx eslint .",