Nuxt 3 覚書
現状の最新版はrc.8
となっている。
開発中につまった事や、現状の解決策など自分用の覚書として書いていきます。
rc.9
出た。
rc.10
でFull Static Generationの機能追加。
最新版はrc.11
に。
headless uiを使う
パッケージのインストール
npm install @headlessui/vue
基本これだけで使えて、開発サーバーでは問題なく動作していた。
generate
コマンドでSGしてCloudflare Pagesにデプロイした際にエラーとなってしまった。
以下のIssuesに回答があり、現状はbuild.transpile
に使用するライブラリを記述すると動く。
export default defineNuxtConfig({
build: {
transpile: ['@headlessui/vue'],
},
});
Meta Tagの書き方が変わっている
useHead
関数やmeta-componentsが利用できるようになっている。
公式ドキュメントから引用
useHeadを使用<script setup> const title = ref('My App') const description = ref('My App Description') // This will be reactive even you change title/description above useHead({ title, meta: [{ name: 'description', content: description }] }) </script>
meta-componentsを使用<template> <div> <Head> <Title>My App</Title> <Meta name="description" content="My app description"/> </Head> <!-- --> </div> </template>
Nuxt / Image
Nuxt 3用にv1
が開発中。基本的な機能は既に使えそうで、開発サーバーでは上手く動作していたが、SGしてデプロイするとパスが解決されない。現状SG未対応のよう。
以下ロードマップでは対応予定のよう。
Support static generation via nitro prerendering
PRが出た。期待!
default scroll behavior
現状、ページ遷移時にスクロール位置が遷移前の位置になってしまう。
ページの先頭に遷移させたい場合、以下のようにappフォルダ内にrouter.options.ts
ファイルを作成すると先頭にはスクロールするが、遷移とスクロールのタイミングが変で調整が必要かもしれない。他の方法もdiscussionsで議論されている。
import type { RouterConfig } from '@nuxt/schema';
export default <RouterConfig>{
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition;
} else {
return { left: 0, top: 0 };
}
},
};
以下のPRで解決されるかもしれない
Full Static Generation
現在開発中のよう。
Nuxt3本体にrc.10
からFull Static Generationの機能追加がされたのでそちらを使う。
OGP
OGP周りの設定を共通部分はnuxt.config.ts
に記述して各ページのuseHead()
で上書きするようにしていたが、OGPがtwitter側でキャッシュされていて、キャッシュがクリアになるまで新規で投稿したページが共通部分の表示になってしまう。
nuxt.config.ts
にはOGP周りの設定を削除し、適宜layouts
コンポーネントやpages
コンポーネントで管理するようにした。
共通
個別
nuxi commands
現状11種類もある。
nuxi add
フォルダやファイルの作成ができる。
# Generates `components/TheHeader.vue`
npx nuxi add component TheHeader
nuxi analyze
アプリケーションの分析するらしい。
→やってみたが見方がよくわからない...
nuxi buid
ビルド。.output
ディレクトリに書き出される。
nuxi cleanup
Nuxtファイルやキャッシュをクリアする。対象は以下
.nuxt
.output
node_modules/.vite
node_modules/.cache
現状RC版でバグらしきものも多かったりするので結構使わせてもらっている。
nuxi dev
開発サーバーの起動(HMR)。デフォルトではhttp://localhost:3000
nuxi generate
事前レンダリングされたHTMLファイルを作成(静的ホスティングサービスで配信できる)。
nuxi info
プロジェクトの情報が表示される。OSや各種バージョン、使用モジュールなど。
GitHubにissueを上げるときなどに利用するとよいのかもしれない?
nuxi init
新規Nuxtプロジェクトを初期化して作成。
nuxi preview
build
コマンドでビルドしたアプリケーションのプレビューサーバーを起動。
nuxi typecheck
vue-tsc
を実行して、アプリ全体の型をチェックする。
nuxi upgrade
Nuxt 3を最新バージョンにアップグレード。
現状RC版が頻繁に更新されているのでこちらも結構使わせてもらっている。