在GatsbyJS中使用gatsby-transformer-csv处理WordPress导出CSV的配置咨询
嘿,我来帮你一步步搞定这个问题~
一、CSV文件的存放位置
Gatsby有个约定俗成的最佳实践:把数据文件放在src/data目录下,这样既符合Gatsby的默认读取逻辑,也方便项目维护。你可以先创建这个目录,把其中一份CSV(比如包含标题、内容的那份,假设命名为posts.csv)放进去就行,另一份后续处理时直接加进来就好。
当然如果你想自定义路径也可以,但推荐先用默认目录,减少配置复杂度。
二、配置gatsby-config.js
要让gatsby-transformer-csv正常工作,你还需要配置gatsby-source-filesystem插件(它负责读取本地文件,transformer-csv依赖它解析内容)。如果还没装这个插件,先执行安装命令:
npm install gatsby-source-filesystem
然后在你的gatsby-config.js里添加以下配置:
module.exports = { plugins: [ // 配置文件系统源,指向存放CSV的目录 { resolve: `gatsby-source-filesystem`, options: { name: `data`, path: `${__dirname}/src/data/`, }, }, // 启用CSV转换插件 `gatsby-transformer-csv`, ], }
三、验证数据是否可查询
配置完成后,重启你的Gatsby开发服务器(gatsby develop),然后打开GraphiQL界面(通常是http://localhost:8000/___graphql),尝试查询你的CSV数据。比如如果你的CSV文件名为posts.csv,对应的GraphQL节点会是allPostsCsv(复数)和postsCsv(单个),示例查询:
query GetAllPosts { allPostsCsv { nodes { id title content # 这里替换成你CSV里的实际字段名 } } }
如果能返回数据,说明配置成功啦!
四、后续处理第二份图片CSV的思路
等第一份配置好后,把图片相关的CSV也放进src/data目录,Gatsby会自动生成对应的节点(比如如果文件是post-images.csv,节点名就是allPostImagesCsv)。之后你可以利用两份CSV里的匹配ID,通过GraphQL的关联查询把内容和图片数据结合起来,示例查询逻辑:
query GetPostsWithImages { allPostsCsv { nodes { id title content # 假设图片CSV里关联内容ID的字段是post_id images: allPostImagesCsv(filter: { post_id: { eq: $id } }) { nodes { image_url alt_text } } } } }
内容的提问来源于stack exchange,提问作者Anders Kitson

