Open11
Astroをv2に上げる
概要を掴むのはこちらのほうがわかりやすい
error Cannot find module '@/cores/Icon/TagIcon' imported from '**/src/content/config.ts'
vite-tsconfig-paths
を入れた。動いたが理由は不明
frontmatterにlayoutを指定していたが、[slug].astro
がmdに対して必要になったので以下のようにした
<BlogPostLayout>
<Content />
</BlogPostLayout>
あと全体的に日本語の内容は古いものを参照していることが多い。どうもAstroはそういう事が多くて、基本的には英語をみたほうがいいと思う
reeは頑張って作っていたんだけども、@astrojs/rss がだいぶ使いやすくなっていたのでついでに移行した。これで完全に不満がなくなった。
自動生成されるファイルでエラーになっていたので、"@typescript-eslint/triple-slash-reference": "off",
を追加した
zodで型定義するので、これまでobjectに対してas constしてたけど、配列つくってas constしてobjectに対してRecordつくってあげるように修正した
const blogCollection = defineCollection({
schema: z.object({
tags: z.array(z.enum(tagName)),
}),
});
上記みたいに書きたいので
export const tagName = ["foo"] as const;
export type TagType = (typeof tagName)[number];
export const tagList: Record<TagType, string> = {
foo: "foo",
}
こうした。
もともとはこんな感じだった
export const tagList = {
foo: "foo",
} as const;
export type TagType = Array<keyof typeof tagList>[number];
const { entry } = Astro.props as {
entry: CollectionEntry<"blog">;
};
いい感じの型定義がなかったのでこうしたが……
v1だと MarkdownHeading
がblogの記事に強制的に含まれていたが、v2では自分でつけないとだめかもしれない。設定なしだとCollectionEntry
には含まれない。
こういうことか……
と思ったけど、layout指定できたほうが良いか……
Frontmatterのところの型定義が重複していてちょっと気持ち悪いが、mdからLayoutを呼び出すとこうなる……