# In JavaScript 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 Transpiled JavaScript # This workflow will only run on PRs targeting `main` and direct pushes to # `main`. It will only run if the listed files/paths are modified (e.g. there is # no need to run this workflow when documentation files are modified). on: pull_request: branches: - main paths: - src/** - .node-version - .prettierrc.json - package.json - package-lock.json - tsconfig.json push: branches: - main paths: - src/** - .node-version - .prettierrc.json - package.json - package-lock.json - tsconfig.json permissions: checks: write contents: read jobs: check-dist: name: 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 Expected and Actual 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 # If `dist/` was different than expected, upload the expected version as a # workflow artifact. - if: ${{ failure() && steps.diff.outcome == 'failure' }} name: Upload Artifact id: upload uses: actions/upload-artifact@v4 with: name: dist path: dist/