自動インポート
自動インポートを使うと、@vizejs/ui のコンポーネントや @vizejs/composable の関数を、
毎回 import 文を書かずに利用できます。アプリの各所でこれらのライブラリを使う場合に便利です。
利用箇所が少なければ、通常の明示的な import でも構いません。
下の Nuxt の設定 または Vite の設定 を追加し、
テンプレートで <VzDialogTrigger> などを使ってみてください。
ソースをコピーしている場合は ローカルソースの設定 に進んでください。
リゾルバーはビルド時に実行され、@vizejs/ui/dialog や @vizejs/composable/use-toggle のような
直接のサブパスを選びます。手書きの import と同じようにツリーシェイキングできます。
Nuxt
@vizejs/nuxt の ui と composables を明示的に有効にします。
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@vizejs/nuxt"],
vize: {
ui: { prefix: "Vz", exclude: ["tooltip"] },
composables: true,
},
});
uiはaddComponentで@vizejs/uiのコンポーネント(<VzDialogTrigger>、<VzButton>など)を登録し、各ファミリーが公開するuse*関数(useFieldWiring、useSafeAreaInsetsなど)も自動インポートします。prefix、ファミリー単位のinclude/exclude、関数の登録を省くcomposables: false、ローカルソースのオプション を指定できます。composablesはaddImportsで@vizejs/composableの実行時エクスポートを登録します。対象はinclude/excludeのエントリー名(例:"use-toggle")やnamesで絞れ、ローカルソースのオプションも使えます。両方が同じ名前を提供する場合は@vizejs/uiの登録が優先されます。
Nuxt は型付きの components.d.ts と imports.d.ts を生成するため、テンプレートとスクリプトで型情報を利用できます。登録対象はプロジェクトからパッケージを解決して決まるので、インストールしたバージョンに従います。
Vite
unplugin-vue-components と unplugin-auto-import にリゾルバーを渡します。
次の例は、Vue プラグインを設定済みの vite.config.ts に追加する部分です。
import Components from "unplugin-vue-components/vite";
import AutoImport from "unplugin-auto-import/vite";
import { VizeUiResolver, VizeUiComposablesResolver } from "@vizejs/ui/resolver";
import { VizeComposableResolver } from "@vizejs/composable/resolver";
// 既存の plugins 配列に追加
Components({ resolvers: [VizeUiResolver({ prefix: "Vz" })] });
AutoImport({ resolvers: [VizeUiComposablesResolver(), VizeComposableResolver()] });
AutoImport({ imports: [...] }) の形式を使う場合は、vizeUiImports() と
vizeComposableImports() が { "<module>": ["name", ...] } の設定を返します。
独自の構成では createVizeUiComponentDeclarations() と createVizeComposableDeclarations() で、通常はプラグインが生成する GlobalComponents とグローバルな .d.ts 宣言を生成できます。
コピーしたソースを使う
vize lib pull のソース配布 でコードをアプリ内にコピーした場合は、
source: "local" を指定してください。
VizeUiResolver({ source: "local" }); // ./vize-lib.lock.json を読む
VizeComposableResolver({ source: "local", root: projectRoot, lockfile: "vize-lib.lock.json" });
vize-lib.lock.json に記録された項目は <root>/<dir>/<entry> に解決されます。たとえば src/components/vize/families/actions/button/button.ts のような、コピーしたソースを使います。
その他の項目はパッケージにフォールバックします。フォールバックを止めるには fallback: false を指定します。
Nuxt の ui と composables にも同じオプションがあります。
カタログの更新(開発者向け)
@vizejs/ui のリゾルバーマニフェストは、ファミリーカタログから
pnpm --filter @vizejs/ui generate:resolver で生成します。カタログ内の項目が欠けるとテストが失敗します。
コンポーザブルのリゾルバーは COMPOSABLE_CATALOG を直接参照します。