Svelte 公式の TypeScript 化したプロジェクトで、.svelte
テンプレート内で自作の TypeScript ファイルをインポートしたらコンパイルエラーになってしまいました。
Svelte の TypeScript 化
公式のテンプレート README に書かれているスクリプトを実行しただけ
$ npx degit sveltejs/template svelte-app
cd svelte-app
$ node scripts/setupTypeScript.js
環境
"svelte": "^3.0.0", "typescript": "^4.0.0", "rollup": "^2.3.4",
.svelte
テンプレート内で .ts
ファイルをインポートしたらエラーが発生する
// /src/Component.svelte <script lang="ts"> import { myScript } from './myScript'; </script>
=> [!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
rollup の TypeScript の設定に rootDir
を指定すれば OK
rollup.config
の plugin.typescript
に rootDir
で .ts
ファイルのある場所を指定してあげれば解決しました。
plugins: [
// …
typescript({
sourceMap: !production,
inlineSources: !production,
+ rootDir: "./src",
}),
自分のプロジェクトでは .ts
ファイルも /src
内に配置していたので rootDir: './src'
と指定しています。
設定を保存すると自動的に再ビルドされエラーが消え問題なく .svelte
ファイル内で TypeScript のモジュールが使えるようになりました。
おわり
stackoverflow では新しいバージョンでは修正されているのように書かれていたのですが、この方法で解決することが出来ました。Svelte template で使われている rollup のバージョンの関係?
rollup のことは詳しく解っていないので、なぜこれで解決するのかまでは調べられていません。あしからず :pray:
[参考]