Skip to content

Commit 0f7e256

Browse files
authored
feat: convert to esm with cjs fallback, switch from default to named export (#54)
* feat: convert to esm with cjs fallback, switch from default to named export * disable eslint on partial js in readme * changeset * chore: fix formatting * use named export 'svelte' and provide deprecation warning in default export * remove default export with deprecation warning, add note about named export to changelog
1 parent 7d18604 commit 0f7e256

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+723
-675
lines changed

.changeset/happy-toys-boil.md

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': major
3+
---
4+
5+
feat: convert to es module with cjs fallback, use named export instead of default
6+
7+
If you are using vite-plugin-svelte with require, you should switch to esm and import the named export "svelte".
8+
An example can be found in the usage section of the [readme](README.md)
9+
10+
For existing esm configs update your import to use the new named export.
11+
12+
```diff
13+
- import svelte from '@sveltejs/vite-plugin-svelte';
14+
+ import { svelte } from '@sveltejs/vite-plugin-svelte';
15+
```
16+
17+
continuing with cjs/require is discouraged but if you must use it, update your require statement to use the named export
18+
19+
```diff
20+
- const svelte = require('@sveltejs/vite-plugin-svelte');
21+
+ const { svelte } = require('@sveltejs/vite-plugin-svelte');
22+
```

.github/workflows/ci.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# build and test on linux, windows, mac with node 12,14
1+
# build and test on linux, windows, mac with node 12, 14, 16
22
name: CI
33

44
env:
@@ -20,7 +20,7 @@ jobs:
2020
fail-fast: false
2121
matrix:
2222
os: [ ubuntu-latest, windows-latest, macos-latest ]
23-
node: [ 12, 14 ]
23+
node: [ 12, 14, 16 ]
2424

2525
steps:
2626
- uses: actions/setup-node@v2
@@ -136,7 +136,7 @@ jobs:
136136
fail-fast: false
137137
matrix:
138138
os: [ ubuntu-latest, windows-latest, macos-latest ]
139-
node: [ 12, 14 ]
139+
node: [ 12, 14, 16 ]
140140
steps:
141141
- uses: actions/setup-node@v2
142142
with:

.gitignore

+40-17
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,45 @@
1-
.DS_Store
2-
node_modules
3-
dist
4-
dist-ssr
5-
build
6-
TODOs.md
1+
# logs and temp
72
*.log
3+
**/*.log
4+
*.cpuprofile
5+
**/*.cpuprofile
86
temp
9-
explorations
10-
.idea
7+
**/temp
8+
*.tmp
9+
**/*.tmp
10+
11+
# build and dist
12+
build
13+
**/build
14+
dist
15+
**/dist
16+
.svelte
17+
.svelte-kit
18+
**/.svelte
19+
**/.svelte-kit
20+
21+
# env and local
1122
*.local
12-
*.cpuprofile
23+
**/*.local
1324
.env
14-
packages/**/pnpm-lock.yaml
15-
packages/**/package-lock.json
16-
packages/**/yarn.lock
17-
packages/**/dist
18-
packages/**/dist-ssr
19-
packages/**/build
20-
packages/**/node_modules
21-
temp/**/*
25+
**/.env
26+
27+
#node_modules and pnpm
28+
node_modules
29+
**/node_modules
30+
# only workspace root has a lock
31+
**/pnpm-lock.yaml
2232
.pnpm-store
33+
**/.pnpm-store
34+
35+
#ide
36+
.idea
37+
**/.idea
38+
.vscode
39+
**/.vscode
40+
41+
# macos
42+
.DS_Store
43+
._.DS_Store
44+
**/.DS_Store
45+
**/._.DS_Store

.pnpmfile.cjs

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
const viteVersion = require('./package.json').devDependencies.vite;
1+
const {vite,esbuild} = require('./package.json').devDependencies;
2+
23
function readPackage(pkg) {
34
for (const section of [
45
'dependencies',
@@ -7,12 +8,20 @@ function readPackage(pkg) {
78
'optionalDependencies'
89
]) {
910
// enforce use of workspace vite-plugin-svelte
11+
// integration testing with svelte-kit would test outdated version otherwise
1012
if (pkg[section]['@sveltejs/vite-plugin-svelte']) {
1113
pkg[section]['@sveltejs/vite-plugin-svelte'] = 'workspace:*';
1214
}
1315
// enforce use of workspace vite
16+
// integration testing with svelte-kit would test outdated version otherwise
1417
if(pkg[section]['vite']) {
15-
pkg[section]['vite'] = viteVersion;
18+
pkg[section]['vite'] = vite;
19+
}
20+
21+
// enforce use of workspace esbuild
22+
// to ensure a single version is used and
23+
if(pkg[section]['esbuild']) {
24+
pkg[section]['esbuild'] = esbuild;
1625
}
1726
}
1827
return pkg;

package.json

+16-17
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"private": true,
44
"scripts": {
55
"dev": "pnpm --dir packages/vite-plugin-svelte dev",
6-
"build:ci": "pnpm -r build-bundle --filter=./packages/vite-plugin-svelte",
6+
"build:ci": "pnpm -r build:ci --filter=./packages/vite-plugin-svelte",
77
"build": "pnpm -r build --filter=\\!./packages/playground",
88
"build:vite-plugin-svelte": "pnpm --dir packages/vite-plugin-svelte build",
99
"test": "run-s test:serve test:build",
@@ -15,9 +15,9 @@
1515
"test:ci:serve": "cross-env VITE_PRESERVE_BUILD_ARTIFACTS=1 jest --verbose --no-cache --runInBand --force-exit --ci --json --outputFile=\"temp/serve/jest-results.json\"",
1616
"test:ci:build": "cross-env VITE_TEST_BUILD=1 VITE_PRESERVE_BUILD_ARTIFACTS=1 jest --verbose --no-cache --runInBand --force-exit --ci --json --outputFile=\"temp/build/jest-results.json\"",
1717
"lint": "eslint --ignore-path .gitignore '**/*.{js,ts,svelte,html,svx,md}'",
18-
"lint:fix": "pnpm lint -- --fix",
18+
"lint:fix": "pnpm run lint -- --fix",
1919
"format": "prettier --ignore-path .gitignore '**/*.{css,scss,svelte,html,js,ts,svx,md}' --check",
20-
"format:fix": "pnpm format -- --write",
20+
"format:fix": "pnpm run format -- --write",
2121
"fixup": "run-s lint:fix format:fix",
2222
"update-deps": "ncu -u && ncu -f \"/^@sveltejs\\/(?:kit|adapter)/\" --target=greatest -u",
2323
"release": "pnpm run build && pnpx --no changeset publish",
@@ -26,26 +26,25 @@
2626
"devDependencies": {
2727
"@changesets/changelog-github": "^0.4.0",
2828
"@changesets/cli": "^2.16.0",
29-
"@microsoft/api-extractor": "^7.15.2",
3029
"@types/fs-extra": "^9.0.11",
3130
"@types/jest": "^26.0.23",
32-
"@types/node": "^15.12.0",
31+
"@types/node": "^15.12.2",
3332
"@types/semver": "^7.3.6",
34-
"@typescript-eslint/eslint-plugin": "^4.26.0",
35-
"@typescript-eslint/parser": "^4.26.0",
33+
"@typescript-eslint/eslint-plugin": "^4.26.1",
34+
"@typescript-eslint/parser": "^4.26.1",
3635
"chalk": "^4.1.1",
3736
"cross-env": "^7.0.3",
3837
"enquirer": "^2.3.6",
39-
"esbuild": "~0.12.5",
40-
"eslint": "^7.27.0",
38+
"esbuild": "^0.12.8",
39+
"eslint": "^7.28.0",
4140
"eslint-config-prettier": "^8.3.0",
4241
"eslint-plugin-html": "^6.1.2",
4342
"eslint-plugin-jest": "^24.3.6",
4443
"eslint-plugin-markdown": "^2.2.0",
4544
"eslint-plugin-node": "^11.1.0",
4645
"eslint-plugin-prettier": "^3.4.0",
4746
"eslint-plugin-svelte3": "^3.2.0",
48-
"execa": "^5.1.0",
47+
"execa": "^5.1.1",
4948
"fs-extra": "^10.0.0",
5049
"husky": "^6.0.0",
5150
"jest": "^27.0.4",
@@ -56,17 +55,17 @@
5655
"node-fetch": "^2.6.1",
5756
"npm-check-updates": "^11.6.0",
5857
"npm-run-all": "^4.1.5",
59-
"playwright-core": "^1.11.1",
60-
"pnpm": "^6.6.2",
61-
"prettier": "^2.3.0",
58+
"playwright-core": "^1.12.0",
59+
"pnpm": "^6.7.4",
60+
"prettier": "^2.3.1",
6261
"prettier-plugin-svelte": "^2.3.0",
6362
"rimraf": "^3.0.2",
6463
"semver": "^7.3.5",
6564
"sirv": "^1.0.12",
6665
"svelte": "^3.38.2",
67-
"ts-jest": "^27.0.2",
66+
"ts-jest": "^27.0.3",
6867
"typescript": "^4.3.2",
69-
"vite": "^2.3.6"
68+
"vite": "^2.3.7"
7069
},
7170
"lint-staged": {
7271
"*.{js,ts,svelte,html,md,svx}": "eslint --fix",
@@ -75,9 +74,9 @@
7574
]
7675
},
7776
"engines": {
78-
"pnpm": ">=6",
77+
"pnpm": "^6.7.0",
7978
"yarn": "forbidden, use pnpm",
8079
"npm": "forbidden, use pnpm",
81-
"node": "^12.20 || ^14.13.1 || >= 16"
80+
"node": "^12.20 || ^14.13.1 || >= 16"
8281
}
8382
}

packages/playground/autoprefixer-browerslist/.gitignore

-4
This file was deleted.

packages/playground/autoprefixer-browerslist/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
"svelte": "^3.38.2",
1818
"svelte-hmr": "^0.14.4",
1919
"svelte-preprocess": "^4.7.3",
20-
"vite": "^2.3.6"
20+
"vite": "^2.3.7"
2121
}
2222
}

packages/playground/autoprefixer-browerslist/vite.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const svelte = require('@sveltejs/vite-plugin-svelte');
1+
const { svelte } = require('@sveltejs/vite-plugin-svelte');
22
const { defineConfig } = require('vite');
33

44
module.exports = defineConfig(({ command, mode }) => {

packages/playground/big/.gitignore

-7
This file was deleted.

packages/playground/big/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
"@sveltejs/vite-plugin-svelte": "workspace:*",
1414
"svelte": "^3.38.2",
1515
"svelte-hmr": "^0.14.4",
16-
"vite": "^2.3.6"
16+
"vite": "^2.3.7"
1717
}
1818
}

packages/playground/big/vite.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const svelte = require('@sveltejs/vite-plugin-svelte');
1+
const { svelte } = require('@sveltejs/vite-plugin-svelte');
22
const { defineConfig } = require('vite');
33

44
module.exports = defineConfig(({ command, mode }) => {

packages/playground/configfile-custom/.gitignore

-4
This file was deleted.

packages/playground/configfile-custom/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@
1414
"svelte": "^3.38.2",
1515
"svelte-hmr": "^0.14.4",
1616
"svelte-preprocess": "^4.7.3",
17-
"vite": "^2.3.6"
17+
"vite": "^2.3.7"
1818
}
1919
}

packages/playground/configfile-custom/vite.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const svelte = require('@sveltejs/vite-plugin-svelte');
1+
const { svelte } = require('@sveltejs/vite-plugin-svelte');
22
const { defineConfig } = require('vite');
33

44
module.exports = defineConfig(({ command, mode }) => {

packages/playground/configfile-esm/.gitignore

-4
This file was deleted.

packages/playground/configfile-esm/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"svelte": "^3.38.2",
1515
"svelte-hmr": "^0.14.4",
1616
"svelte-preprocess": "^4.7.3",
17-
"vite": "^2.3.6"
17+
"vite": "^2.3.7"
1818
},
1919
"type": "module"
2020
}

packages/playground/configfile-esm/vite.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import svelte from '@sveltejs/vite-plugin-svelte';
1+
import { svelte } from '@sveltejs/vite-plugin-svelte';
22
import { defineConfig } from 'vite';
33

44
export default defineConfig(({ command, mode }) => {

packages/playground/default-svelte-template-ts/.gitignore

-4
This file was deleted.

packages/playground/default-svelte-template-ts/.vscode/extensions.json

-3
This file was deleted.

packages/playground/default-svelte-template-ts/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"@tsconfig/svelte": "^2.0.1",
1414
"svelte": "^3.38.2",
1515
"svelte-hmr": "^0.14.4",
16-
"vite": "^2.3.6",
16+
"vite": "^2.3.7",
1717
"svelte-check": "^2.1.0",
1818
"svelte-preprocess": "^4.7.3",
1919
"typescript": "^4.3.2",

packages/playground/default-svelte-template-ts/vite.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const svelte = require('@sveltejs/vite-plugin-svelte');
1+
const { svelte } = require('@sveltejs/vite-plugin-svelte');
22
const { defineConfig } = require('vite');
33

44
module.exports = defineConfig(({ command, mode }) => {

packages/playground/default-svelte-template/.gitignore

-4
This file was deleted.

packages/playground/default-svelte-template/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
"@sveltejs/vite-plugin-svelte": "workspace:*",
1111
"svelte": "^3.38.2",
1212
"svelte-hmr": "^0.14.4",
13-
"vite": "^2.3.6"
13+
"vite": "^2.3.7"
1414
}
1515
}

packages/playground/default-svelte-template/vite.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const svelte = require('@sveltejs/vite-plugin-svelte');
1+
const { svelte } = require('@sveltejs/vite-plugin-svelte');
22
const { defineConfig } = require('vite');
33

44
module.exports = defineConfig(({ command, mode }) => {

packages/playground/hmr-test-dependency/svelte.js

-2
This file was deleted.

packages/playground/hmr/.gitignore

-4
This file was deleted.

packages/playground/hmr/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"@sveltejs/vite-plugin-svelte": "workspace:*",
1414
"svelte": "^3.38.2",
1515
"svelte-hmr": "^0.14.4",
16-
"vite": "^2.3.6",
16+
"vite": "^2.3.7",
1717
"node-fetch": "^2.6.1"
1818
}
1919
}

packages/playground/hmr/vite.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { defineConfig } = require('vite');
2-
const svelte = require('@sveltejs/vite-plugin-svelte');
2+
const { svelte } = require('@sveltejs/vite-plugin-svelte');
33

44
module.exports = defineConfig(({ command, mode }) => {
55
const isProduction = mode === 'production';

packages/playground/kit-node/.gitignore

-5
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# default svelte app template
2+
3+
Created with `npx degit sveltejs/template`
4+
5+
adapted to vite by moving index.html to root and replacing rollup config with vite
6+
7+
use pnpm
8+
9+
`pnpm dev` starts dev server
10+
`pnpm build` builds for production
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { getText } from '../../testUtils';
2+
3+
test('should render component imported via svelte field in package.json', async () => {
4+
expect(await getText('#test-id')).toBe('svelte field works');
5+
});

0 commit comments

Comments
 (0)