2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

vite 一括ファイルをロードしたい時 glob-import を使おう

Posted at

vite glob-import

🥺目的: ファイル一括ロード

glob ディレクトリの中を import文羅列でimportしたくない😅

スクリーンショット_2022-06-08_21.34.26.png

一括ロードしよう〜やり方😇

main.js

// main.js
const globModuels = import.meta.glob('./glob/*') // 全てを読み込む

console.log(globModuels)

ブラウザで確認

スクリーンショット_2022-06-08_21.39.35.png

glob配下のファイルを読み込んだMap Objectが返されます。

forEachしてみる

Object.entries(globModuels).forEach(([k, v]) => {
  console.log(k + ':', v)
})

スクリーンショット_2022-06-08_21.47.29.png

これで利用できることではない

Moduleを取り出す

Object.entries(globModuels).forEach(([k, v]) => {
  v().then((m) => console.log(k + ':', m.default))
})
  • v を実行して、非同期処理
  • 戻り値の m は本当の Module になります

スクリーンショット_2022-06-08_21.51.54.png

どんな時に使う:

  • 多種言語jsonファイルの読み込み?

ディレクトリのとある種類ファイル

js ファイルのみ読み込み

// main.js
const globModuels = import.meta.glob('./glob/*.js') // jsのみ読み込む

console.log(globModuels)

スクリーンショット_2022-06-08_21.54.31.png

正規表現を用いる

// main.js
const globModuels = import.meta.glob('./glob/*[0-9].js')  // jsのみかつ数字が末尾

console.log(globModuels)

スクリーンショット_2022-06-08_21.56.38.png

コンパイルされたコード

この機能はesの機能ではなく、viteの機能

スクリーンショット_2022-06-08_21.59.10.png

importのpathはコンパイルされます。

上記の書き方を書いても、別のコンパイラーはエラーになる可能性はあります。

非同期でロードするのやっぱり不便〜どうしよう〜〜〜最初からコンパイルされた結果にしたい 😗

import.meta.globEagerを使いましょ

// main.js
const globModuels = import.meta.globEager('./glob/*')

console.log(globModuels)

全部 Module に

スクリーンショット_2022-06-08_22.05.57.png

コンパイル結果:

スクリーンショット_2022-06-08_22.07.10.png

import.meta.globEager を使い便利になりますね!

これはこちらのライブラリによる機能:

https://github.com/mrmlnc/fast-glob

気になった方はぜひ本家を見てみてください😸

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?