Skip to content

Commit 2ce87fd

Browse files
bluwydominikg
andauthored
fix: import ts with .js extension (#324)
* fix: import ts with js extension * chore: add test * chore: add changeset * refactor: use preprocessor * fix: remove cache update * chore: update vite * fix: test * fix: test 2 * refactor: simplify implementation * fix: improve regex Co-authored-by: Dominik G. <[email protected]> * chore: fix lint Co-authored-by: Dominik G. <[email protected]>
1 parent 5a002c7 commit 2ce87fd

File tree

26 files changed

+108
-70
lines changed

26 files changed

+108
-70
lines changed

.changeset/slow-dolphins-turn.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': patch
3+
---
4+
5+
Support import typescript files with .js extension

.eslintrc.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ module.exports = {
9999
'import/first': 'off',
100100
'import/no-duplicates': 'off',
101101
'import/no-mutable-exports': 'off',
102-
'import/no-unresolved': 'off'
102+
'import/no-unresolved': 'off',
103+
'node/no-missing-import': 'off' // doesn't work with typescript's "import from 'src/foo.js'" for src/foo.ts
103104
}
104105
},
105106
{

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
"svelte": "^3.47.0",
5757
"ts-jest": "^27.1.4",
5858
"typescript": "^4.6.3",
59-
"vite": "^2.9.5"
59+
"vite": "^2.9.8"
6060
},
6161
"lint-staged": {
6262
"*.{js,ts,svelte,html,md,svx}": "eslint --fix",
@@ -77,4 +77,4 @@
7777
"node-fetch@2": "^2.6.7"
7878
}
7979
}
80-
}
80+
}

packages/e2e-tests/autoprefixer-browerslist/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
"postcss-load-config": "^3.1.4",
1818
"svelte": "^3.47.0",
1919
"svelte-preprocess": "^4.10.6",
20-
"vite": "^2.9.5"
20+
"vite": "^2.9.8"
2121
}
2222
}

packages/e2e-tests/configfile-custom/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
"devDependencies": {
1414
"@sveltejs/vite-plugin-svelte": "workspace:*",
1515
"svelte": "^3.47.0",
16-
"vite": "^2.9.5"
16+
"vite": "^2.9.8"
1717
}
1818
}

packages/e2e-tests/configfile-esm/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"@sveltejs/vite-plugin-svelte": "workspace:*",
1515
"svelte": "^3.47.0",
1616
"svelte-preprocess": "^4.10.6",
17-
"vite": "^2.9.5"
17+
"vite": "^2.9.8"
1818
},
1919
"type": "module"
2020
}

packages/e2e-tests/custom-extensions/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
"devDependencies": {
1111
"@sveltejs/vite-plugin-svelte": "workspace:*",
1212
"svelte": "^3.47.0",
13-
"vite": "^2.9.5"
13+
"vite": "^2.9.8"
1414
}
1515
}

packages/e2e-tests/env/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"devDependencies": {
1111
"@sveltejs/vite-plugin-svelte": "workspace:*",
1212
"svelte": "^3.47.0",
13-
"vite": "^2.9.5"
13+
"vite": "^2.9.8"
1414
},
1515
"type": "module"
1616
}

packages/e2e-tests/hmr/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515
"e2e-test-dep-vite-plugins": "workspace:*",
1616
"node-fetch": "^2.6.7",
1717
"svelte": "^3.47.0",
18-
"vite": "^2.9.5"
18+
"vite": "^2.9.8"
1919
}
2020
}

packages/e2e-tests/package-json-svelte-field/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@
1414
"devDependencies": {
1515
"@sveltejs/vite-plugin-svelte": "workspace:*",
1616
"svelte": "^3.47.0",
17-
"vite": "^2.9.5"
17+
"vite": "^2.9.8"
1818
}
1919
}

packages/e2e-tests/preprocess-with-vite/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
"sass": "^1.50.1",
1313
"stylus": "^0.57.0",
1414
"svelte": "^3.47.0",
15-
"vite": "^2.9.5"
15+
"vite": "^2.9.8"
1616
}
1717
}

packages/e2e-tests/svelte-preprocess/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
"svelte": "^3.47.0",
1313
"svelte-preprocess": "^4.10.6",
1414
"typescript": "^4.6.3",
15-
"vite": "^2.9.5"
15+
"vite": "^2.9.8"
1616
}
1717
}

packages/e2e-tests/ts-type-import/__tests__/ts-type-import.spec.ts

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { isBuild, getText, editFileAndWaitForHmrComplete } from '../../testUtils
22

33
test('should render App', async () => {
44
expect(await getText('#hello')).toBe('Hello world');
5+
expect(await getText('#foobar')).toBe('foobar');
56
});
67

78
if (!isBuild) {

packages/e2e-tests/ts-type-import/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
"@tsconfig/svelte": "^3.0.0",
1313
"@types/node": "^17.0.21",
1414
"svelte-preprocess": "^4.10.6",
15-
"vite": "^2.9.5"
15+
"vite": "^2.9.8"
1616
}
1717
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<script lang="ts">
2+
import { foobar } from './foobar.js';
23
let s: string = 'world';
34
</script>
45

56
<div id="hello">Hello {s}</div>
7+
<div id="foobar">{foobar()}</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function foobar() {
2+
return 'foobar';
3+
}

packages/e2e-tests/vite-ssr-esm/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@
2121
"npm-run-all": "^4.1.5",
2222
"serve-static": "^1.15.0",
2323
"svelte": "^3.47.0",
24-
"vite": "^2.9.5"
24+
"vite": "^2.9.8"
2525
}
2626
}

packages/e2e-tests/vite-ssr/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@
1818
"express": "^4.17.3",
1919
"serve-static": "^1.15.0",
2020
"svelte": "^3.47.0",
21-
"vite": "^2.9.5"
21+
"vite": "^2.9.8"
2222
}
2323
}

packages/playground/big-component-library/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"@sveltejs/vite-plugin-svelte": "workspace:*",
1313
"carbon-components-svelte": "^0.63.1",
1414
"svelte": "^3.47.0",
15-
"vite": "^2.9.5"
15+
"vite": "^2.9.8"
1616
},
1717
"dependencies": {
1818
"lodash-es": "^4.17.21"

packages/playground/big/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
"devDependencies": {
1111
"@sveltejs/vite-plugin-svelte": "workspace:*",
1212
"svelte": "^3.47.0",
13-
"vite": "^2.9.5"
13+
"vite": "^2.9.8"
1414
}
1515
}

packages/playground/optimizedeps-include/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
"@sveltejs/vite-plugin-svelte": "workspace:*",
1313
"svelte": "^3.47.0",
1414
"tinro": "^0.6.12",
15-
"vite": "^2.9.5"
15+
"vite": "^2.9.8"
1616
}
1717
}

packages/playground/windicss/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"@sveltejs/vite-plugin-svelte": "workspace:*",
1515
"diff-match-patch": "^1.0.5",
1616
"svelte": "^3.47.0",
17-
"vite": "^2.9.5",
17+
"vite": "^2.9.8",
1818
"vite-plugin-windicss": "^1.8.4"
1919
}
2020
}

packages/vite-plugin-svelte/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,6 @@
7171
"rollup": "^2.70.2",
7272
"svelte": "^3.47.0",
7373
"tsup": "^5.12.5",
74-
"vite": "^2.9.5"
74+
"vite": "^2.9.8"
7575
}
7676
}

packages/vite-plugin-svelte/src/index.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,14 @@ export function svelte(inlineOptions?: Partial<Options>): Plugin[] {
193193
});
194194
}
195195
log.debug(`transform returns compiled js for ${svelteRequest.filename}`);
196-
return compileData.compiled.js;
196+
return {
197+
...compileData.compiled.js,
198+
meta: {
199+
vite: {
200+
lang: compileData.lang
201+
}
202+
}
203+
};
197204
},
198205

199206
handleHotUpdate(ctx: HmrContext): void | Promise<Array<ModuleNode> | void> {

packages/vite-plugin-svelte/src/utils/compile.ts

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import { SvelteRequest } from './id';
66
import { safeBase64Hash } from './hash';
77
import { log } from './log';
88

9+
const scriptLangRE = /<script [^>]*lang=["']?([^"' >]+)["']?[^>]*>/;
10+
911
const _createCompileSvelte = (makeHot: Function) =>
1012
async function compileSvelte(
1113
svelteRequest: SvelteRequest,
@@ -88,6 +90,7 @@ const _createCompileSvelte = (makeHot: Function) =>
8890
return {
8991
filename,
9092
normalizedFilename,
93+
lang: code.match(scriptLangRE)?.[1] || 'js',
9194
// @ts-ignore
9295
compiled,
9396
ssr,
@@ -148,6 +151,7 @@ export interface Compiled {
148151
export interface CompileData {
149152
filename: string;
150153
normalizedFilename: string;
154+
lang: string;
151155
compiled: Compiled;
152156
ssr: boolean | undefined;
153157
dependencies: string[];

0 commit comments

Comments
 (0)