0203
ログ
- 昨日に続き,
riotjs, vite, tailwindcss, typescriptでチャットアプリ開発 まだ開発環境の時点でコケている
- riot を typescript で書きたいが,
.riotファイルのコンパイルができない tsconfig.jsonをちょっといじる- "include": ["src"] + "include": ["**/*.ts", "src/**/*.riot", "global.d.ts"], + "exclude": ["node_modules"]まだだめ
続いて
vite.config.tsをちょっといじる- plugins: [ - riotPlugin(), - typescript() - ] + root: process.cwd(), + plugins: [riotPlugin(), typescript()], + build: { + outDir: + "dist" /** https://vitejs.dev/config/build-options.html#build-outdir */, + minify: + "esbuild" /** https://vitejs.dev/config/build-options.html#build-minify */, + target: + "esnext" /** https://vitejs.dev/config/build-options.html#build-target */, + },まだあかん
- そもそも riot のコンパイルが行われてはいるが,ts のコンパイルがなされていない
 - これあれか.
@riotjs/compilerで明示的に ts のコンパイル関数書かないといけなかったっけpre-processorってやつ- そういえば 
@riotjs/hot-reload入れてなかった - なんか typescript の example 見ているが,別に pre-processor 書いてないな
 
 withTypesか?いや違うなtypes.tsで型を切り出して書くのが良いのか.何故かうまく行かない.webpackならいけるのにviteだと何故かいかない- カスタムプラグインのメソッドを書いて,その中で 
console.log()仕込んだが,そもそも流れてこねぇ - 改めて chat gpt に投げてみたら vite プラグインのコードが変わった
 
import ts from "typescript"; import fs from "fs"; import path from "path"; ... const riotPlugin = () => { return { name: "riot", transform(src: string, id: string) { if (id.endsWith(".riot")) { const { code: riotCompiledCode } = compile(src, { file: id }); const tempFilePath = path.resolve( "./temp", path.basename(id) + ".ts" ); if (!fs.existsSync(path.dirname(tempFilePath))) { fs.mkdirSync(path.dirname(tempFilePath), { recursive: true }); } fs.writeFileSync(tempFilePath, riotCompiledCode); const tsResult = ts.transpileModule(riotCompiledCode, { compilerOptions: { module: ts.ModuleKind.ESNext, target: ts.ScriptTarget.ESNext, }, }); fs.unlinkSync(tempFilePath); return { code: tsResult.outputText, map: tsResult.sourceMapText ? JSON.parse(tsResult.sourceMapText) : null, }; } }, }; };- riot を typescript で書きたいが,
 nodejs標準モジュールをいくつか使うので type 定義もインスコ> pnpm install -D @types/node
- なんか動いたが,
> pnpm devでは typescript の型チェックが動いていない> pnpm buildで型エラーが出た- 直して再度実行したら動いたが,意図的に型エラー出るようなコードを書いてもエラーにならなかったので,そもそも動いてなさそう
 - うーん,自己満だが VSCode が TS の型チェックしてくれるのでこのまま TS で書いていくことにする
 
 - README.md, LICENSE も追加
 - 一旦これはこれでコンポーネントの作成にうつる
 その前に,tailwindcss 読み込めていないのでそっちから
// tailwind.config.js - content: [], + content: ["./src/**/*.{html,js,riot}"],- その他設定は公式サイトのドキュメントそのまんまなので割愛
 - 読み込み
 
// src/input.css + @tailwind base; + @tailwind components; + @tailwind utilities;- その他諸々の設定
 
// package.json "scripts": { "dev": "vite", "build": "vite build", + "css": "tailwindcss -i ./src/input.css -o ./output.css", "preview": "vite preview" }, // index.html <title>RiotJS + Vite + TS</title> + <link href="/output.css" rel="stylesheet" /> </head>// index.html + <link href="/output.css" rel="stylesheet" />一旦
riotjs, vite, tailwindcss, typescriptでチャットアプリ開発の方はストップ.正直飽きた.ちなみに Chat GPT - GPT4 さんにも尋ねてみた.曰く
提供したカスタムプラグインの設定では、.riot ファイル内の TypeScript コードをトランスパイルする際に、TypeScript の型チェックが行われていないことが原因で、意図的に仕込んだ TypeScript のエラーがビルド時に検出されない状況が発生しています。
(中略)
Vite ビルドプロセス中に.riot ファイル内の TypeScript コードに対する型チェックを行うことは、直接的なサポートがないため困難です。
とのこと
- これは作らない限りは難しそう…少なくとも今の俺の技術力,typescript 力では分からない
 - なんとなく 
d.tsでの型定義で行けなくはなさそうだが,ワークアラウンド的な対応になりかねないのでやるなら学んでから