Skip to content

Add ability to define export conditions per modules #14173

Add ability to define export conditions per modules

Add ability to define export conditions per modules #14173

Workflow file for this run

name: Node CI
on:
push:
branches:
- main
pull_request:
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
prepare-yarn-cache-ubuntu:
uses: ./.github/workflows/prepare-cache.yml
with:
os: ubuntu-latest
prepare-yarn-cache-macos:
uses: ./.github/workflows/prepare-cache.yml
with:
os: macos-latest
prepare-yarn-cache-windows:
uses: ./.github/workflows/prepare-cache.yml
with:
os: windows-latest
ts-compatibility:
name: TypeScript Compatibility
runs-on: ubuntu-latest
needs: prepare-yarn-cache-ubuntu
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-node@v4
with:
node-version: lts/*
cache: yarn
- name: install
run: yarn --immutable
- name: build
run: yarn build
- name: ts integration
run: yarn test-ts --selectProjects ts-integration
- name: type tests
run: yarn test-types --target 5.0,current
- name: verify [email protected] compatibility
run: yarn verify-old-ts
- name: run ESLint with type info
run: yarn lint-ts-files
- name: Run tests depending on type information
run: yarn test-with-type-info
typecheck:
name: Typecheck Examples and Tests
runs-on: ubuntu-latest
needs: prepare-yarn-cache-ubuntu
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-node@v4
with:
node-version: lts/*
cache: yarn
- name: install
run: yarn --immutable
- name: build
run: yarn build:ts
- name: typecheck examples
run: yarn typecheck:examples
- name: typecheck tests
run: yarn typecheck:tests
lint:
name: Lint
runs-on: ubuntu-latest
needs: prepare-yarn-cache-ubuntu
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-node@v4
with:
node-version: lts/*
cache: yarn
- name: install
run: yarn --immutable
- name: build
run: yarn build:js
- name: verify Yarn PnP compatibility
run: yarn verify-pnp
- name: run eslint
run: yarn lint
- name: run prettier
run: yarn lint:prettier:ci
- name: check changelog
run: yarn check-changelog
- name: check copyright headers
run: yarn check-copyright-headers
yarn-validate:
name: Validate Yarn dependencies and constraints
runs-on: ubuntu-latest
needs: prepare-yarn-cache-ubuntu
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-node@v4
with:
node-version: lts/*
cache: yarn
- name: 'Check for unmet constraints (fix w/ "yarn constraints --fix")'
run: yarn constraints
- name: 'Check for duplicate dependencies (fix w/ "yarn dedupe")'
run: yarn dedupe --check
test-ubuntu:
uses: ./.github/workflows/test.yml
needs: prepare-yarn-cache-ubuntu
strategy:
fail-fast: false
matrix:
shard: ['1/4', '2/4', '3/4', '4/4']
name: Ubuntu with shard ${{ matrix.shard }}
with:
os: ubuntu-latest
shard: ${{ matrix.shard }}
test-macos:
uses: ./.github/workflows/test.yml
needs: prepare-yarn-cache-macos
strategy:
fail-fast: false
matrix:
shard: ['1/3', '2/3', '3/3']
name: macOS with shard ${{ matrix.shard }}
with:
os: macos-latest
shard: ${{ matrix.shard }}
test-windows:
uses: ./.github/workflows/test.yml
needs: prepare-yarn-cache-windows
strategy:
fail-fast: false
matrix:
shard: ['1/4', '2/4', '3/4', '4/4']
name: Windows with shard ${{ matrix.shard }}
with:
os: windows-latest
shard: ${{ matrix.shard }}
test-leak:
name: Node LTS on Ubuntu with leak detection
runs-on: ubuntu-latest
needs: prepare-yarn-cache-ubuntu
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Use Node.js LTS
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: yarn
- name: install
run: yarn --immutable
- name: build
run: yarn build:js
- name: run tests with leak detection
run: yarn test-leak
test-coverage:
name: Node LTS on Ubuntu with coverage (${{ matrix.shard }})
strategy:
fail-fast: false
matrix:
shard: ['1/4', '2/4', '3/4', '4/4']
runs-on: ubuntu-latest
needs: prepare-yarn-cache-ubuntu
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Use Node.js LTS
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: yarn
- name: install
run: yarn --immutable
- name: build
run: yarn build:js
- name: Get number of CPU cores
id: cpu-cores
uses: SimenB/github-actions-cpu-cores@v2
- name: run tests with coverage
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
retry_on: error
command: yarn jest-coverage --color --config jest.config.ci.mjs --max-workers ${{ steps.cpu-cores.outputs.count }} --shard=${{ matrix.shard }}
- name: map coverage
run: node ./scripts/mapCoverage.mjs
if: always()
- uses: codecov/codecov-action@v4
if: always()
with:
directory: ./coverage