DevJourney · code I wrote while learning
js-projects-install-check.yml
3.4 KBname: JS Projects Install & Build Check
# Projects covered by a dedicated Docker Image CI workflow (learning-react,
# learning-qwik, html.nodejs.dj.upayan.dev) already install and build on
# every push/PR, so they are intentionally excluded from this matrix.
on:
push:
branches: ['main']
paths:
- 'NodeJS/**'
- 'Typescript/**'
- 'astro/**'
- 'electronjs/**'
- 'nextjs/**'
- 'react/VIT/react-crud/**'
- 'react/crud-operations/**'
- 'react/last-practice/**'
- '.github/workflows/js-projects-install-check.yml'
pull_request:
branches: ['main']
paths:
- 'NodeJS/**'
- 'Typescript/**'
- 'astro/**'
- 'electronjs/**'
- 'nextjs/**'
- 'react/VIT/react-crud/**'
- 'react/crud-operations/**'
- 'react/last-practice/**'
- '.github/workflows/js-projects-install-check.yml'
permissions:
contents: read
jobs:
install-and-build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
project:
- { path: 'NodeJS', manager: 'npm', build: false }
- {
path: 'NodeJS/crud-operations-mongodb',
manager: 'npm',
build: false,
}
- { path: 'NodeJS/my-rest-api', manager: 'npm', build: false }
- { path: 'NodeJS/rest-api', manager: 'npm', build: false }
- { path: 'Typescript/website', manager: 'npm', build: false }
- {
path: 'Typescript/fleet-tracker/api',
manager: 'npm',
build: true,
}
- {
path: 'Typescript/fleet-tracker/app',
manager: 'npm',
build: true,
}
- { path: 'astro/learning-astro', manager: 'npm', build: true }
- { path: 'electronjs', manager: 'npm', build: false }
- { path: 'nextjs/learning-nextjs', manager: 'pnpm', build: true }
- { path: 'react/VIT/react-crud/api', manager: 'npm', build: false }
- { path: 'react/VIT/react-crud/app', manager: 'npm', build: true }
- { path: 'react/crud-operations/api', manager: 'pnpm', build: false }
- { path: 'react/crud-operations/app', manager: 'pnpm', build: true }
- { path: 'react/last-practice/api', manager: 'pnpm', build: false }
- { path: 'react/last-practice/app', manager: 'pnpm', build: true }
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up pnpm
if: matrix.project.manager == 'pnpm'
uses: pnpm/action-setup@v4
with:
version: 11
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: ${{ matrix.project.manager }}
cache-dependency-path: ${{ matrix.project.path }}/${{ matrix.project.manager == 'npm' && 'package-lock.json' || 'pnpm-lock.yaml' }}
- name: Install dependencies (npm)
if: matrix.project.manager == 'npm'
working-directory: ${{ matrix.project.path }}
run: npm ci
- name: Install dependencies (pnpm)
if: matrix.project.manager == 'pnpm'
working-directory: ${{ matrix.project.path }}
run: pnpm install --frozen-lockfile
- name: Build
if: matrix.project.build
working-directory: ${{ matrix.project.path }}
run: ${{ matrix.project.manager }} run build