name: Validate JS on: push: branches: - main paths: - '.github/workflows/validate-js.yml' - 'package/src/**' - 'package/*.json' - 'package/*.js' - 'package/*.lock' - 'package/example/src/**' - 'package/example/*.json' - 'package/example/*.js' - 'package/example/*.lock' - 'package/example/*.tsx' pull_request: paths: - '.github/workflows/validate-js.yml' - 'package/src/**' - 'package/*.json' - 'package/*.js' - 'package/*.lock' - 'package/example/src/**' - 'package/example/*.json' - 'package/example/*.js' - 'package/example/*.lock' - 'package/example/*.tsx' jobs: compile: name: Compile JS (tsc) runs-on: ubuntu-latest defaults: run: working-directory: ./package steps: - uses: actions/checkout@v4 - name: Install reviewdog uses: reviewdog/action-setup@v1 - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - name: Restore node_modules from cache uses: actions/cache@v3 id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Install node_modules run: yarn install --frozen-lockfile - name: Install node_modules (example/) run: yarn install --frozen-lockfile --cwd example - name: Run TypeScript # Reviewdog tsc errorformat: %f:%l:%c - error TS%n: %m run: | yarn typescript | reviewdog -name="tsc" -efm="%f(%l,%c): error TS%n: %m" -reporter="github-pr-review" -filter-mode="nofilter" -fail-on-error -tee env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Run TypeScript in example/ # Reviewdog tsc errorformat: %f:%l:%c - error TS%n: %m run: | cd example && yarn typescript | reviewdog -name="tsc" -efm="%f(%l,%c): error TS%n: %m" -reporter="github-pr-review" -filter-mode="nofilter" -fail-on-error -tee && cd .. env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} lint: name: Lint JS (eslint, prettier) runs-on: ubuntu-latest defaults: run: working-directory: ./package steps: - uses: actions/checkout@v4 - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - name: Restore node_modules from cache uses: actions/cache@v3 id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Install node_modules run: yarn install --frozen-lockfile - name: Install node_modules (example/) run: yarn install --frozen-lockfile --cwd example - name: Run ESLint run: yarn lint -f @jamesacarr/github-actions - name: Run ESLint with auto-fix run: yarn lint --fix - name: Run ESLint in example/ run: cd example && yarn lint -f @jamesacarr/github-actions && cd .. - name: Run ESLint in example/ with auto-fix run: cd example && yarn lint --fix && cd .. - name: Verify no files have changed after auto-fix run: git diff --exit-code HEAD