@@ -3,7 +3,7 @@ type: tutorial
33title : ブログ記事一覧を作成する
44description : |-
55 「初めてのAstroブログ」チュートリアル -
6- Astro .glob()を使用してプロジェクト内にあるファイルのデータにアクセスする
6+ import.meta .glob()を使用してプロジェクト内にあるファイルのデータにアクセスする
77i18nReady : true
88---
99import Box from ' ~/components/tutorial/Box.astro' ;
@@ -16,20 +16,20 @@ import { Steps } from '@astrojs/starlight/components';
1616リンクしたいブログ記事がいくつかできたので、そのリストを自動的に作成するようブログページを設定しましょう!
1717
1818<PreCheck >
19- - ` Astro .glob()` を使ってすべての投稿のデータに一度にアクセスする
19+ - ` import.meta .glob()` を使ってすべての投稿のデータに一度にアクセスする
2020 - 動的に生成された記事のリストをブログページに表示する
2121 - リストの各項目に` <BlogPost /> ` コンポーネントを使用するようリファクタリングする
2222</PreCheck >
2323
2424## 記事のリストを動的に表示する
2525
2626<Steps >
27- 1 . 以下のコードを` blog.astro ` に追加して、すべてのMarkdownファイルに関する情報を取得します。` Astro .glob()` は、各ブログ記事に対応するオブジェクトの配列を返します。
27+ 1 . 以下のコードを` blog.astro ` に追加して、すべてのMarkdownファイルに関する情報を取得します。` import.meta .glob()` は、各ブログ記事に対応するオブジェクトの配列を返します。
2828
2929 ``` astro title="src/pages/blog.astro" ins={3}
3030 ---
3131 import BaseLayout from '../layouts/BaseLayout.astro'
32- const allPosts = await Astro. glob('../pages/ posts/*.md');
32+ const allPosts = Object.values(import.meta. glob('./ posts/*.md', { eager: true }) );
3333 const pageTitle = "私のAstro学習ブログ";
3434 ---
3535 <BaseLayout pageTitle={pageTitle}>
@@ -48,7 +48,7 @@ import { Steps } from '@astrojs/starlight/components';
4848 ``` astro title="src/pages/blog.astro" del={9,10,11} ins={13}
4949 ---
5050 import BaseLayout from '../layouts/BaseLayout.astro'
51- const allPosts = await Astro. glob('../pages/ posts/*.md');
51+ const allPosts = Object.values(import.meta. glob('./ posts/*.md', { eager: true }) );
5252 const pageTitle = "私のAstro学習ブログ";
5353 ---
5454 <BaseLayout pageTitle={pageTitle}>
@@ -58,12 +58,12 @@ import { Steps } from '@astrojs/starlight/components';
5858 <li><a href="/posts/post-2/">Post 2</a></li>
5959 <li><a href="/posts/post-3/">Post 3</a></li>
6060
61- {allPosts.map((post) => <li><a href={post.url}>{post.frontmatter.title}</a></li>)}
61+ {allPosts.map((post: any ) => <li><a href={post.url}>{post.frontmatter.title}</a></li>)}
6262 </ul>
6363 </BaseLayout>
6464 ```
6565
66- ` Astro. glob()` によって返される配列をマップすることで、ブログ記事のリスト全体が動的に生成されるようになりました 。
66+ Astroは標準でTypeScriptをサポートしています。 ` import.meta. glob()` が返す配列をマップすることで、ブログ記事のリスト全体が動的に生成されます 。
6767
68683 . ` src/pages/posts/ ` に新しく` post-4.md ` ファイルを作成し、Markdownコンテンツを追加して新しいブログ記事を追加します。以下で使用されているフロントマターのプロパティを少なくとも含めるようにしてください。
6969
@@ -79,7 +79,7 @@ import { Steps } from '@astrojs/starlight/components';
7979 pubDate: 2022-08-08
8080 tags: ["astro", "成功"]
8181 ---
82- 記事のリストを作成するために`Astro. glob()`がすべての記事データのリストを返しているので 、この記事は他のブログ記事と一緒に表示されるはずです。
82+ `import.meta. glob()`で取得した記事データの配列を使っているので 、この記事は他のブログ記事と一緒に表示されるはずです。
8383 ```
8484
85854 . ブラウザのプレビューで` http://localhost:4321/blog ` のブログページに再度アクセスし、新しいブログ記事を含む4つの項目のリストへと更新されているのを確認してください。
@@ -93,8 +93,8 @@ import { Steps } from '@astrojs/starlight/components';
9393
9494``` astro title="src/pages/blog.astro" del={2} ins={3}
9595<ul>
96- {allPosts.map((post) => <li><a href={post.url}>{post.frontmatter.title}</a></li>)}
97- {allPosts.map((post) => <BlogPost url={post.url} title={post.frontmatter.title} />)}
96+ {allPosts.map((post: any ) => <li><a href={post.url}>{post.frontmatter.title}</a></li>)}
97+ {allPosts.map((post: any ) => <BlogPost url={post.url} title={post.frontmatter.title} />)}
9898</ul>
9999```
100100
@@ -141,7 +141,7 @@ import { Steps } from '@astrojs/starlight/components';
141141 ---
142142 import BaseLayout from '../layouts/BaseLayout.astro';
143143 import BlogPost from '../components/BlogPost.astro';
144- const allPosts = await Astro. glob('../pages/posts/*.md');
144+ const allPosts = Object.values(import.meta. glob('../pages/posts/*.md', { eager: true }) );
145145 const pageTitle = "私のAstro学習ブログ";
146146 ---
147147 ```
@@ -161,13 +161,13 @@ import { Steps } from '@astrojs/starlight/components';
161161 ---
162162 import BaseLayout from '../layouts/BaseLayout.astro';
163163 import BlogPost from '../components/BlogPost.astro';
164- const allPosts = await Astro. glob('../pages/posts/*.md');
164+ const allPosts = Object.values(import.meta. glob('../pages/posts/*.md', { eager: true }) );
165165 const pageTitle = "私のAstro学習ブログ"
166166 ---
167167 <BaseLayout pageTitle={pageTitle}>
168168 <p>ここには、私がAstroを学んでいく旅の様子を投稿します。</p>
169169 <ul>
170- {allPosts.map((post) => <BlogPost url={post.url} title={post.frontmatter.title} />)}
170+ {allPosts.map((post: any ) => <BlogPost url={post.url} title={post.frontmatter.title} />)}
171171 </ul>
172172 </BaseLayout>
173173 ```
@@ -186,7 +186,7 @@ Astroコンポーネントに以下のコードが含まれているとします
186186
187187``` astro
188188---
189- const myPosts = await Astro. glob('../pages/ posts/*.md');
189+ const myPosts = Object.values(import.meta. glob('./ posts/*.md', { eager: true }) );
190190---
191191```
192192
@@ -244,4 +244,8 @@ const myPosts = await Astro.glob('../pages/posts/*.md');
244244- [ ] ローカルファイルのデータを取得できる。
245245- [ ] ブログ記事のリストを表示できる。
246246</Checklist >
247- </Box >
247+ </Box >
248+
249+ ### 参考
250+
251+ - [ globパターンでインポートする] ( /ja/guides/imports/#importmetaglob )
0 commit comments