以下の内容はhttps://let.blog.jp/tag/Viteより取得しました。


Vite で動的インポートにしたらファイル数が思ってたよりかなり増えた
基本フロントエンドのビルドでファイルをまとめるとき 1 ファイルに全部をバンドルしているのですが 結構重たくなってきました
とりあえずページごとに動的に import するようにして分けたのですが 想像以上にファイル数が増えました

例えば こういう依存関係の場合

index.js
A.js
X.js
B.js
Y.js
Z.js
C.js
Z.js

A, B, C をそれぞれ動的なインポートにします
メインである index.js 以外に A, B, C の 3 つのファイルができて 4 つかなと思ったのですがそうじゃなかったです

Z は B からも C からも使われます
B と C の両方に Z を入れると両方を使うページでは二重になってムダですし 別モジュールとして扱われてしまう実害も出ます
なので Z は独立したモジュールとして自動的に分割されます
X は A だけで使われ Y は B だけなので これらはそれぞれ A と B に含まれることになります

実際のところ Z みたいに複数箇所で使われるモジュールってかなり多いです
各ページを開いたときにロードするファイルはメインのファイルとそのページ用のファイルの 2 ファイルになるくらいに考えていたのに 実際はそれよりはるかに多かったです

それでも最適化はされてるようで export せず console.log だけみたいな場合は一つのファイルにまとめられたり B と C の両方が Y と Z を読み込む場合は Y と Z は一つのファイルにまとめられるなどしてました

でも実際の大きめのプロジェクトになると まとまらないことも多そうですし ESM で直接ロードするのとそう変わらないくらいファイルをロードすることになりそうです
それならファイルをまとめる必要あるのかなと思いますね
Vite でローカルフォルダを node_modules に配置する場合は package.json が必要
- vite-project/
- package.json
- index.html
- src/
- main.js
- mylib/
- index.js
- ...

みたいな構造で package.json に

{
"dependencies": {
"mylib": "link:./mylib"
}
}

のように書いて node_modules/mylib が mylib へリンクするようにします
これで

import mylib from "mylib/index.js"

みたいにインポートできるはずです

Node.js では問題なく動くのですが Vite では resolve エラーになりました
こんな感じのメッセージが出てきます

[vite]: Rollup failed to resolve import "mylib/index.js" from "main.js".
This is most likely unintended because it can break your application at runtime.

Vite ではサポートされないのかと思いましたが package.json を mylib フォルダの中に配置すれば動きました
name も type もなしで {} だけの空 JSON でも大丈夫です

node_modules フォルダの中にあっても package.json がなければ .bin や .cache みたいなパッケージ以外のフォルダと判定されてそうです



以上の内容はhttps://let.blog.jp/tag/Viteより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14