perf: Synchronously update value when key
changes without an additional render
#323
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Validate JS | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- '.github/workflows/validate-js.yml' | |
- 'src/**' | |
- '*.json' | |
- '*.js' | |
- '*.lock' | |
- 'example/src/**' | |
- 'example/*.json' | |
- 'example/*.js' | |
- 'example/*.lock' | |
- 'example/*.tsx' | |
pull_request: | |
paths: | |
- '.github/workflows/validate-js.yml' | |
- 'src/**' | |
- '*.json' | |
- '*.js' | |
- '*.lock' | |
- 'example/src/**' | |
- 'example/*.json' | |
- 'example/*.js' | |
- 'example/*.lock' | |
- 'example/*.tsx' | |
jobs: | |
compile: | |
name: Compile JS (tsc) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- 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@v2 | |
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 | |
steps: | |
- uses: actions/checkout@v2 | |
- 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@v2 | |
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 | |
test: | |
name: Test JS | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- 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@v2 | |
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 Jest | |
run: yarn test |