feat!: change the plugin to an ESM-only package #2690
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] | |
env: | |
project_root_path: ./packages/eslint-plugin-svelte | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v2 | |
- uses: actions/setup-node@v4 | |
- name: Install Packages | |
run: pnpm install | |
- name: Lint eslint-plugin-svelte | |
run: | | |
pnpm run build | |
pnpm run lint | |
working-directory: ${{ env.project_root_path }} | |
- name: Lint docs-svelte-kit | |
run: | | |
pnpm run build | |
pnpm run lint | |
working-directory: ./docs-svelte-kit | |
- name: Type Coverage | |
run: pnpm run typecov | |
working-directory: ${{ env.project_root_path }} | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v2 | |
- uses: actions/setup-node@v4 | |
- name: Install Packages | |
run: pnpm install | |
- name: Build | |
run: | | |
pnpm run update | |
pnpm run build | |
working-directory: ${{ env.project_root_path }} | |
test: | |
name: 'Test for ESLint ${{ matrix.eslint }} on Node.js: ${{ matrix.node }} OS: ${{matrix.os}}' | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
eslint: [7, 8, 9] | |
node: [18.x, 20.x, 22.x, latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v2 | |
- name: Setup Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install Packages | |
run: pnpm install | |
- name: Build eslint-plugin-svelte | |
run: pnpm build | |
working-directory: ${{ env.project_root_path }} | |
# Hack: Install `eslint-plugin-svelte` is necessary for `packages/eslint-plugin-svelte/tests/src/configs` tests. | |
- name: Install eslint-plugin-svelte | |
run: pnpm install -D eslint-plugin-svelte | |
working-directory: ${{ env.project_root_path }} | |
- name: Install ESLint ${{ matrix.eslint }} | |
if: matrix.eslint != 9 | |
run: pnpm install -D -w eslint@${{ matrix.eslint }} | |
- name: Test | |
run: pnpm test | |
working-directory: ${{ env.project_root_path }} | |
test-for-svelte-v4: | |
name: 'Test for Svelte v4 on Node.js: ${{ matrix.node }} OS: ${{matrix.os}}' | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
eslint: [9] | |
node: [18, 20, 22] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v2 | |
- name: Setup Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install svelte@4 | |
run: | | |
pnpm install -D svelte@4 | |
rm -rf node_modules | |
working-directory: ${{ env.project_root_path }} | |
- name: Install ESLint ${{ matrix.eslint }} | |
run: | | |
pnpm install -D -w eslint@${{ matrix.eslint }} | |
rm -rf node_modules | |
- name: Install Packages | |
run: pnpm install | |
- name: Test | |
run: pnpm run test | |
working-directory: ${{ env.project_root_path }} | |
test-for-svelte-v3: | |
name: Test for Svelte v3 | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
node: [18] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v2 | |
- name: Setup Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install svelte@3 | |
# Remove @sveltejs/kit because postinstall fails on old node. | |
run: | | |
cd docs-svelte-kit | |
pnpm rm @sveltejs/kit | |
cd .. | |
pnpm install -D -w @typescript-eslint/parser@5 @typescript-eslint/eslint-plugin@5 eslint@8 | |
cd packages/eslint-plugin-svelte | |
pnpm install -D svelte@3 | |
cd ../.. | |
rm -rf packages/eslint-plugin-svelte/node_modules | |
rm -rf docs-svelte-kit/node_modules | |
rm -rf node_modules | |
- name: Install Packages | |
run: pnpm install | |
- name: Test | |
run: pnpm run test | |
working-directory: ${{ env.project_root_path }} | |
test-for-typescript-eslint-v5: | |
name: Test for typescript-eslint v5 | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
node: [18] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v2 | |
- name: Setup Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install typescript-eslint v5 | |
run: | | |
pnpm install -D -w @typescript-eslint/parser@5 @typescript-eslint/eslint-plugin@5 | |
rm -rf node_modules | |
- name: Install Packages | |
run: pnpm install | |
- name: Test | |
run: pnpm run test | |
working-directory: ${{ env.project_root_path }} | |
update-resources: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v2 | |
- uses: actions/setup-node@v4 | |
- name: Install Packages | |
run: pnpm install | |
- name: Update resources | |
run: pnpm run update | |
working-directory: ${{ env.project_root_path }} | |
- name: Check changes | |
run: | | |
git add --all && \ | |
git diff-index --cached HEAD --stat --exit-code |