Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f1fb8dd

Browse files
authored
ci: use specific dependencies for different Svelte/Node versions (#436)
1 parent 6096f05 commit f1fb8dd

File tree

12 files changed

+153
-63
lines changed

12 files changed

+153
-63
lines changed

‎.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ jobs:
7575
- name: ⎔ Setup node
7676
uses: actions/setup-node@v4
7777
with:
78-
node-version: 20
78+
node-version: 22
7979

8080
- name: 📥 Download deps
81-
run: npm install --no-package-lock
81+
run: npm install
8282

8383
- name: 🏗️ Build types
8484
run: npm run build
@@ -102,7 +102,7 @@ jobs:
102102
- name: ⎔ Setup node
103103
uses: actions/setup-node@v4
104104
with:
105-
node-version: 20
105+
node-version: 22
106106

107107
- name: 📥 Downloads types build
108108
uses: actions/download-artifact@v4

‎.npmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
package-lock=false
2+
engine-strict=true

‎CONTRIBUTING.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,24 @@ npm run preview-release
2828

2929
## Development setup
3030

31-
After cloning the repository, install the project's dependencies and run the `validate` script to run all checks and tests to verify your setup.
31+
After cloning the repository, use the `setup` script to install dependencies and run all checks:
3232

3333
```shell
34-
npm install # or `pnpm install`, or `yarn install`, etc.
35-
npm run validate
34+
npm run setup
3635
```
3736

3837
### Lint and format
3938

4039
Run auto-formatting to ensure any changes adhere to the code style of the repository:
4140

4241
```shell
43-
npm run format:delta
42+
npm run format
4443
```
4544

4645
To run lint and format checks without making any changes:
4746

4847
```shell
49-
npm run lint:delta
48+
npm run lint
5049
```
5150

5251
### Test
@@ -63,18 +62,19 @@ npm run test:watch
6362
Use the provided script to set up your environment for different versions of Svelte:
6463

6564
```shell
66-
# install Svelte 5
65+
# Svelte 5
6766
npm run install:5
67+
npm run all
6868

69-
# install Svelte 4
69+
# Svelte 4
7070
npm run install:4
71+
npm run all:legacy
7172

72-
# install Svelte 3
73+
# Svelte 3
7374
npm run install:3
75+
npm run all:legacy
7476
```
7577

76-
Not all checks will pass on `svelte<5`. Reference the CI workflows to see which checks are expected to pass on older versions.
77-
7878
### Docs
7979

8080
Use the `toc` script to ensure the README's table of contents is up to date:

‎package.json

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -53,24 +53,18 @@
5353
],
5454
"scripts": {
5555
"all": "npm-run-all contributors:generate toc format types build test:vitest:* test:jest",
56+
"all:legacy": "npm-run-all types:legacy test:vitest:* test:jest",
5657
"toc": "doctoc README.md",
5758
"lint": "prettier . --check && eslint .",
58-
"lint:delta": "npm-run-all -p prettier:delta eslint:delta",
59-
"prettier:delta": "prettier --check `./scripts/changed-files`",
60-
"eslint:delta": "eslint `./scripts/changed-files`",
6159
"format": "prettier . --write && eslint . --fix",
62-
"format:delta": "npm-run-all format:prettier:delta format:eslint:delta",
63-
"format:prettier:delta": "prettier --write `./scripts/changed-files`",
64-
"format:eslint:delta": "eslint --fix `./scripts/changed-files`",
65-
"setup": "npm install && npm run all",
60+
"setup": "npm run install:5 && npm run all",
6661
"test": "vitest run --coverage",
6762
"test:watch": "vitest",
6863
"test:vitest:jsdom": "vitest run --coverage --environment jsdom",
6964
"test:vitest:happy-dom": "vitest run --coverage --environment happy-dom",
7065
"test:jest": "npx --node-options=\"--experimental-vm-modules --no-warnings\" jest --coverage",
7166
"types": "svelte-check",
7267
"types:legacy": "svelte-check --tsconfig tsconfig.legacy.json",
73-
"validate": "npm-run-all test:vitest:* test:jest types build",
7468
"build": "tsc -p tsconfig.build.json && cp src/component-types.d.ts types",
7569
"contributors:add": "all-contributors add",
7670
"contributors:generate": "all-contributors generate",
@@ -93,19 +87,18 @@
9387
}
9488
},
9589
"dependencies": {
96-
"@testing-library/dom": "^10.0.0"
90+
"@testing-library/dom": "9.x.x || 10.x.x"
9791
},
9892
"devDependencies": {
9993
"@jest/globals": "^29.7.0",
100-
"@sveltejs/vite-plugin-svelte": "^2.0.0 || ^3.0.0 || ^4.0.0",
101-
"@testing-library/jest-dom": "^6.3.0",
102-
"@testing-library/user-event": "^14.5.2",
94+
"@sveltejs/vite-plugin-svelte": "^5.0.3",
95+
"@testing-library/jest-dom": "^6.6.3",
96+
"@testing-library/user-event": "^14.6.1",
10397
"@typescript-eslint/eslint-plugin": "^8.0.0",
10498
"@typescript-eslint/parser": "^8.0.0",
105-
"@vitest/coverage-v8": "0.x.x || ^1.0.0 || ^2.0.2",
99+
"@vitest/coverage-v8": "^3.1.3",
106100
"all-contributors-cli": "^6.26.1",
107101
"doctoc": "^2.2.1",
108-
"esbuild": "*",
109102
"eslint": "^8.57.0",
110103
"eslint-config-prettier": "^9.1.0",
111104
"eslint-config-standard": "^17.1.0",
@@ -114,20 +107,20 @@
114107
"eslint-plugin-promise": "^6.4.0",
115108
"eslint-plugin-simple-import-sort": "^12.1.1",
116109
"eslint-plugin-svelte": "^2.42.0",
117-
"expect-type": "^1.1.0",
118-
"happy-dom": "^16.3.0",
110+
"expect-type": "^1.2.1",
111+
"happy-dom": "^17.4.6",
119112
"jest": "^29.7.0",
120113
"jest-environment-jsdom": "^29.7.0",
121-
"jsdom": "^25.0.0",
114+
"jsdom": "^26.1.0",
122115
"npm-run-all": "^4.1.5",
123-
"prettier": "^3.3.3",
124-
"prettier-plugin-svelte": "^3.2.5",
125-
"svelte": "^3 || ^4 || ^5 || ^5.0.0-next.0",
126-
"svelte-check": "^3.0.0 || ^4.0.4",
116+
"prettier": "^3.5.3",
117+
"prettier-plugin-svelte": "^3.3.3",
118+
"svelte": "^5.28.2",
119+
"svelte-check": "^4.1.7",
127120
"svelte-jester": "^5.0.0",
128-
"typescript": "^5.5.3",
121+
"typescript": "^5.8.3",
129122
"typescript-svelte-plugin": "^0.3.46",
130-
"vite": "^4.0.0 || ^5.3.3",
131-
"vitest": "0.x.x || ^1.0.0 || ^2.0.2"
123+
"vite": "^6.3.5",
124+
"vitest": "^3.1.3"
132125
}
133126
}

‎scripts/changed-files

Lines changed: 0 additions & 3 deletions
This file was deleted.

‎scripts/install-dependencies

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,34 @@
22
# Install dependencies for a given version of Svelte
33
set -euxo pipefail
44

5-
svelte_version=${1}
6-
node_version=$(node --version)
5+
svelte_version="${1-}"
6+
node_version=$(node --version | sed 's/^v\([0-9]*\).*/1円/')
7+
env_dir="tests/envs/svelte$svelte_version"
8+
env_dir_by_node="$env_dir/node$node_version"
79

8-
rm -rf node_modules
9-
npm install --no-package-lock
10-
11-
if [[ "${svelte_version}" == "3" ]]; then
12-
npm uninstall --no-save vite vitest @vitest/coverage-v8 @sveltejs/vite-plugin-svelte svelte-check svelte
13-
npm install --no-save vite@4 vitest@0.x.x @vitest/coverage-v8@0.x.x @sveltejs/vite-plugin-svelte@2 svelte-check@3 svelte@3
14-
elif [[ "${svelte_version}" == "4" ]]; then
15-
npm uninstall --no-save @sveltejs/vite-plugin-svelte svelte
16-
npm install --no-save @sveltejs/vite-plugin-svelte@3 svelte@4
10+
if [[ -d $env_dir_by_node ]]; then
11+
env_dir="$env_dir_by_node"
1712
fi
1813

19-
if [[ "${node_version}" =~ "v16" ]]; then
20-
npm uninstall --no-save vite vitest @vitest/coverage-v8 @sveltejs/vite-plugin-svelte
21-
npm install --no-save vite@4 vitest@0.x.x @vitest/coverage-v8@0.x.x @sveltejs/vite-plugin-svelte@2
14+
if [[ "$svelte_version" == "5" ]]; then
15+
rm -rf coverage node_modules
16+
npm install
17+
exit 0
2218
fi
2319

24-
npm dedupe
25-
installed_version=$(npm ls --depth=0 --parseable svelte@${svelte_version})
26-
27-
if [[ -z "${installed_version}" ]]; then
28-
echo "Error: expected svelte@${svelte_version}"
29-
npm ls --depth=0 svelte
20+
if [[ -z "$svelte_version" ]]; then
21+
echo "Invalid usage: missing Svelte version" >&2;
3022
exit 1
3123
fi
24+
25+
if [[ ! -d "$env_dir" ]]; then
26+
echo "Error: package.json for Svelte $svelte_version, Node $node_version not found" 1>&2
27+
exit 2
28+
fi
29+
30+
rm -rf coverage node_modules "$env_dir/node_modules"
31+
pushd "$env_dir"
32+
npm install --no-package-lock --engine-strict
33+
npm ls "$env_dir" svelte
34+
popd
35+
mv "$env_dir/node_modules" .

‎src/component-types.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-redundant-type-constituents */
1+
/* eslint-disable @typescript-eslint/no-explicit-any */
22
import type {
33
Component as ModernComponent,
44
ComponentConstructorOptions as LegacyConstructorOptions,

‎tests/envs/svelte3/node16/package.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"private": true,
3+
"engines": {
4+
"node": "16.x.x"
5+
},
6+
"devDependencies": {
7+
"@sveltejs/vite-plugin-svelte": "2.x.x",
8+
"@testing-library/dom": "9.x.x",
9+
"@testing-library/jest-dom": "^6.6.3",
10+
"@testing-library/user-event": "^14.6.1",
11+
"@vitest/coverage-v8": "0.x.x",
12+
"expect-type": "^1.2.1",
13+
"happy-dom": "14.x.x",
14+
"jest": "^29.7.0",
15+
"jest-environment-jsdom": "^29.7.0",
16+
"jsdom": "22.x.x",
17+
"npm-run-all": "^4.1.5",
18+
"svelte": "3.x.x",
19+
"svelte-check": "3.x.x",
20+
"svelte-jester": "3.x.x",
21+
"vite": "4.x.x",
22+
"vitest": "0.x.x"
23+
}
24+
}

‎tests/envs/svelte3/package.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"private": true,
3+
"engines": {
4+
"node": ">=18"
5+
},
6+
"devDependencies": {
7+
"@sveltejs/vite-plugin-svelte": "2.x.x",
8+
"@testing-library/dom": "^10.4.0",
9+
"@testing-library/jest-dom": "^6.6.3",
10+
"@testing-library/user-event": "^14.6.1",
11+
"@vitest/coverage-v8": "0.x.x",
12+
"expect-type": "^1.2.1",
13+
"happy-dom": "^17.4.6",
14+
"jest": "^29.7.0",
15+
"jest-environment-jsdom": "^29.7.0",
16+
"jsdom": "^26.1.0",
17+
"npm-run-all": "^4.1.5",
18+
"svelte": "3.x.x",
19+
"svelte-check": "3.x.x",
20+
"svelte-jester": "3.x.x",
21+
"vite": "4.x.x",
22+
"vitest": "0.x.x"
23+
}
24+
}

‎tests/envs/svelte4/node16/package.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"private": true,
3+
"engines": {
4+
"node": "16.x.x"
5+
},
6+
"devDependencies": {
7+
"@sveltejs/vite-plugin-svelte": "2.x.x",
8+
"@testing-library/dom": "9.x.x",
9+
"@testing-library/jest-dom": "^6.6.3",
10+
"@testing-library/user-event": "^14.6.1",
11+
"@vitest/coverage-v8": "0.x.x",
12+
"expect-type": "^1.2.1",
13+
"happy-dom": "14.x.x",
14+
"jest": "^29.7.0",
15+
"jest-environment-jsdom": "^29.7.0",
16+
"jsdom": "22.x.x",
17+
"npm-run-all": "^4.1.5",
18+
"svelte": "4.x.x",
19+
"svelte-check": "3.x.x",
20+
"svelte-jester": "3.x.x",
21+
"vite": "4.x.x",
22+
"vitest": "0.x.x"
23+
}
24+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /