Enable typed linting #113
Workflow file for this run
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: CI | |
on: | |
push: | |
branches: ["main"] | |
pull_request: | |
branches: ["main"] | |
jobs: | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: ["20", "22"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }}.x | |
cache: "npm" | |
- name: Install dependencies | |
run: npm ci | |
- name: Run tests | |
run: npm test | |
create: | |
name: Create | |
strategy: | |
matrix: | |
os: [ubuntu, macos, windows] | |
node-version: ["20", "22"] | |
package-manager: [npm, yarn, pnpm] | |
runs-on: ${{ matrix.os }}-latest | |
env: | |
NODE_DEBUG: create-ts-node | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v4 | |
name: Install pnpm | |
if: matrix.package-manager == 'pnpm' | |
with: | |
version: "9" | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }}.x | |
- run: ${{ matrix.package-manager }} install | |
env: | |
NODE_ENV: production | |
- run: npm install --global . | |
if: matrix.package-manager == 'npm' | |
- run: npx create-ts-node new-project | |
if: matrix.package-manager == 'npm' | |
working-directory: ${{ runner.temp }} | |
- run: yarn link | |
if: matrix.package-manager == 'yarn' | |
- run: yarn create ts-node new-project | |
if: matrix.package-manager == 'yarn' | |
working-directory: ${{ runner.temp }} | |
- name: Create package.json for pnpm | |
run: | | |
with open('package.json', 'w') as f: | |
f.write('{}') | |
shell: python | |
if: matrix.package-manager == 'pnpm' | |
working-directory: ${{ runner.temp }} | |
- run: pnpm link ${{ github.workspace }} | |
if: matrix.package-manager == 'pnpm' | |
working-directory: ${{ runner.temp }} | |
- run: pnpm exec create-ts-node new-project | |
if: matrix.package-manager == 'pnpm' | |
working-directory: ${{ runner.temp }} | |
- run: ${{ matrix.package-manager }} install | |
working-directory: ${{ runner.temp }}/new-project | |
- run: ${{ matrix.package-manager }} run build | |
working-directory: ${{ runner.temp }}/new-project | |
- run: ${{ matrix.package-manager }} test | |
working-directory: ${{ runner.temp }}/new-project | |
- run: ${{ matrix.package-manager }} run format | |
working-directory: ${{ runner.temp }}/new-project | |
- name: Start app (Unix) | |
run: ${{ matrix.package-manager }} start & | |
working-directory: ${{ runner.temp }}/new-project | |
if: matrix.os != 'windows' | |
- name: Start app (Windows) | |
run: Start-Process -FilePath "${{ matrix.package-manager }}.cmd" -ArgumentList "start" -PassThru | |
working-directory: ${{ runner.temp }}/new-project | |
if: matrix.os == 'windows' | |
- name: Test app | |
run: curl --verbose --fail --silent --show-error --max-time 5 --retry 4 --retry-connrefused localhost:3000 | jq . | |
shell: bash | |
- name: Start app in dev mode (Unix) | |
run: ${{ matrix.package-manager }} run dev & | |
working-directory: ${{ runner.temp }}/new-project | |
env: | |
PORT: 3001 | |
if: matrix.os != 'windows' | |
- name: Start app in dev mode (Windows) | |
run: Start-Process -FilePath "${{ matrix.package-manager }}.cmd" -ArgumentList "run","dev" -PassThru | |
working-directory: ${{ runner.temp }}/new-project | |
env: | |
PORT: 3001 | |
if: matrix.os == 'windows' | |
- name: Test app in dev mode | |
run: curl --verbose --fail --silent --show-error --max-time 5 --retry 4 --retry-connrefused localhost:3001 | jq . | |
shell: bash |