あけましておめでとうございます。
最新バージョンに追従していく
Vite / React / Tailwind CSS / esbuild
を使ってるプロジェクトの現状です。
Vite
で何か怒られています。もうついでにVite 6
にして解決させようと。あとReact 19
が出ててこれもやらなきゃなんだよな。
なんかヤバそうな文章が
環境
このプロジェクトはFigma
のプラグインなんですが、Figma
関係ないところの作業なんですよね。
https://www.figma.com/community/plugin/1344710416431362546
ライブラリ。重要そうなところを抜粋
移行前のpackage.json
を全部見たい場合は↓
https://github.com/takusan23/yajirushi-mode/blob/6c818ffd4757e5e2ef1c2f678314517a88fb0b03/package.json#L1
あんまり影響無さそうなライブラリアップデート
esbuild
、TypeScript
、Tailwind CSS
を上げた。
ビルドできるしスタイリングもされてそう。
Vite 6 にした
https://vite.dev/blog/announcing-vite6
なんか普通にビルドできる。リンク先を見るとVite 6
で削除ってあるけど、なんかビルドできている。。。
Vite の警告に対応するため type module
https://vite.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated
vite.config.ts
はESM 構文
か
export default
なのでCJS
じゃなくESM
っぽいんだよな
package.json
に"type": "module"
を追加するか、該当ファイルを.mjs
、.mts
の拡張子に変更する
わからん...
そもそもCJS
時代を知らんからESM
なはずなんだよな(よくわからん)
とりあえず"type": "module"
を足してみる
ちなみにCJS
がCommonJS
、ESM
がES Modules
の略で
CJS
だとrequire() / module.exports = ...
、ESM
だとimport / export default ...
みたいな書き方を言うそうです。
なんで2つもあるんって話は調べてもらえば分かるのですが、ブラウザだと<script src="...">
でライブラリを追加できたのが、Node.js
だとそもそもhtml
を書かないのでライブラリを読み込ませる手段がないってことで作られたそう。
のちに言語仕様として逆輸入されるのですがその際は後者の構文が採用されました(なんでCJS
が採用されんかったのかは追えてない)。
ESM
をわざわざ作ったのは多分この辺に書いてありそう
動かない
PostCSS
はTailwind CSS
で使ってるやつですね、で
Failed to load PostCSS config
はなんだろう。Vite + Tailwind CSS
のセットアップをミスったか
https://github.com/QwikDev/qwik/issues/836
Tailwind CSS と PostCSS を ESM の書き方にする
どうやらtailwind.config.js
とpostcss.config.js
がCJS
の書き方なのに、package.json
に"type": "module"
を足したことにより全てがESM
として扱われ、CJS
が読み込めなくなってそう。
最短ルートとしては、tailwind.config.js
とpostcss.config.js
がCJS
であることを示すため拡張子を.cjs
にするのが早そう?
と思ったらTailwind CSS
がESM
でセットアップできるようになってそう
よくわからんけどESM
で書けるならこっちにしておくか
npx tailwind init
コマンドがESM
に対応して、package.json
で"type": "module"
を使ってると認識した時、export default
の形で出せるようになったそう。
適当に新規プロジェクトを作ったときのtailwind.config.ts
とpostcss.config.js
を貼っておきます。ESM
です!!!
tailwind.config.ts
postcss.config.js
というわけでこれの書き方にすれば"type": "module"
に書き足すだけで終わり!!
雰囲気で直せるはず。
というわけで直してみた。ちゃんとビルド出来てます。
見たい方がいるかわかりませんが一応差分です。
https://github.com/takusan23/yajirushi-mode/commit/d526b34be74fbca0a9a8a0a86b9307f799122a81
React 19 にする
https://ja.react.dev/blog/2024/04/25/react-19-upgrade-guide
react
に付随するreact-i18next
周りもやるか。
まずアップデートするか。
react-i18next
使ってるのでそれらも
codemod 使ってみる
勝手に書き直してくれるそう、使ったこと無いので使ってみる。git
あるからすぐ戻せるし。えいっ
a
キーを押してすべてのcodemod
にチェックを付け、enter
で実行。git
にコミットしてない差分が残ってるけどお前やるか?って聞かれたのでenter
。やります。
npm i
したときにpackage.json
書き換わってるだけなので。
・・・何も変わっていない。
本当にこれでいいのか、ちゃんとマイグレーションガイドを読みます。
よくわからんけど読んだ。ペライチReact
アプリだから、そもそもそんなに使ってない。からいいか。
TypeScript TS2865 エラーが出ている
tsc
コマンドを叩いたらこれ。
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-5.html#isolated-declarations
どうやらimport
で使った名前と同じ名前の関数があるのが原因っぽい?
名前変えたら直った(えっ)
おわりに
該当リポジトリです
https://github.com/takusan23/yajirushi-mode
以上です、お疲れ様でした ノシ