TypeScript + rollup.js を使ってモジュールを自作しています。
モジュール自体のバンドルは問題ないのですが、デモ用スクリプトのみ下記のようなエラーが表示されてしまいます。
解決方法はありますでしょうか?
consloe
1demo/src/demo.ts → demo/build.js... 2[!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript) 3demo/src/demo.ts (1:10) 4 51: const test:number = 123; 6 ^
現状
フォルダ構成
/ +- src # モジュールのソース +- dist # 出力先 +- demo # デモ用ファイル | bundle.js # デモスクリプトの出力 +- src demo.js # デモスクリプトのソース
demo.ts
typescript
1const test:number = 123; 2console.log(test);
package.json 抜粋
json
1 "scripts": { 2 "demo": "rollup -c rollup.demo.config.js" 3 }, 4 "devDependencies": { 5 "@babel/core": "^7.16.0", 6 "@babel/preset-env": "^7.16.4", 7 "@rollup/plugin-babel": "^5.3.0", 8 "@rollup/plugin-commonjs": "^21.0.1", 9 "@rollup/plugin-node-resolve": "^13.0.6", 10 "@rollup/plugin-typescript": "^8.3.0", 11 "rollup": "^2.60.0", 12 "rollup-plugin-terser": "^7.0.2", 13 "tslib": "^2.3.1", 14 "typescript": "^4.5.2" 15 }
tsconfig.json
json
1{ 2 "compilerOptions": { 3 "target": "ESNext", 4 "module": "ES6", 5 "moduleResolution": "node", 6 "baseUrl": "./", 7 "paths": { 8 "@/*":["src/*"] 9 }, 10 "resolveJsonModule": true, 11 "allowJs": true, 12 "sourceMap": true, 13 "noEmit": true, 14 "isolatedModules": true, 15 "esModuleInterop": true, 16 "forceConsistentCasingInFileNames": true, 17 "strict": true, 18 "strictNullChecks": true, 19 "skipLibCheck": true 20 }, 21 "include": ["src/**/*.ts"], 22 "exclude": ["node_modules"] 23}
rollup.demo.config.js
javascript
1import pluginTypescript from "@rollup/plugin-typescript"; 2 3export default { 4 input: 'demo/src/demo.ts', 5 output: [{ 6 file: 'demo/build.js', 7 format: 'iife', 8 }], 9 plugins: [ 10 pluginTypescript({ 11 // 試してみたオプション 12 // declaration: false, 13 // isolatedModules: false, 14 // baseUrl: './demo', 15 // rootDir: 'demo/src', 16 // include: ['demo/src/**/*.ts'], 17 // paths: { 18 // '@/*':['demo/src/*'] 19 // }, 20 }), 21 ],};
説明
demo.ts
のTypeScript構文、型指定の部分でエラーになります。
型指定を削除してJavaScriptの構文にすると問題なく出力されます。
demo.ts
を/demo/src
から/src
に移動すると問題なく出力されます。
(もちろんrollupの設定を同様に変更します)
@rollup/plugin-typescript
の設定でrootDir
を指定すると良いという情報があったので試しましたが駄目でした。その他コメントアウトしているものも同様です。
補足
テストのため簡略化していますが、最終的にはモジュールのimportをしたり、babelを使ったりします。
補足2
色々試したり@rollup/plugin-typescript
のドキュメントを見て気付いたんですが、tsconfig.json
の設定が全て使えるわけではないんですね(今さら)。
デモ用にtsconfig.demo.json
を別途用意したら解決しそう……。試します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。