
Gatsby gatsby-remark-relative-images는 YAML의 절대 이미지 경로를 상대 경로로 변환하지 않습니다
Gatsby와 gatsby-remark-relative-images를 함께 사용하면 YAML 파일의 절대 이미지 경로를 상대 경로로 변환하는 데 문제가 발생할 수 있습니다. 이 문제는 절대 경로가 Netlify CMS에서 제공되며 Gatsby에서 GraphQL을 사용하여 쿼리해야 할 때 발생합니다.
Markdown 파일에서는 gatsby-remark-relative-images가 절대 이미지 경로를 상대 경로로 변환하는 데 어떤 문제도 없습니다. 그러나 YAML 파일의 경우 동일한 변환이 적용되지 않습니다.
구성 이해하기
이 문제가 발생하는 원인을 이해하기 위해 관련된 구성 파일을 살펴보겠습니다:
gatsby-config.js
gatsby-source-filesystem 플러그인 옵션에서 이미지 파일의 올바른 경로가 지정되어 있는지 확인하세요:
{
resolve: 'gatsby-source-filesystem',
options: {
path: `${__dirname}/static/img`,
name: 'uploads',
},
},
경로가 정적 이미지 파일의 위치와 일치하는지 확인하세요.
gatsby-node.js
gatsby-node.js 파일의 onCreateNode 함수를 검사하여 이미지 경로가 올바르게 변환되는지 확인하세요:
exports.onCreateNode = ({ node, actions, getNode }) => {
const { createNodeField } = actions
fmImagesToRelative(node)
// ...
}
fmImagesToRelative 함수가 올바르게 호출되고 이미지 경로가 원하는대로 변환되는지 확인하세요.
static/admin/config.yml
Netlify CMS 구성 파일에서 올바른 media_folder 및 public_folder 값을 확인하세요:
media_folder: static/img
public_folder: /img
이 경로가 이미지 파일의 위치와 공개적으로 액세스 가능한 위치와 일치하는지 확인하세요.
GraphQL 오류 해결
경험하는 GraphQL 오류 “Field ‘image’ must not have a selection since type ‘String’ has no subfields”는 GraphQL 쿼리에서 image 필드를 해결하는 데 문제가 있음을 나타냅니다.
이를 해결하기 위해 GraphQL 스키마를 사용자 정의하고 ‘image’ 필드를 이미지 파일 노드를 참조하도록 변경할 수 있습니다. 다음은 이를 달성할 수 있는 예시입니다:
exports.createSchemaCustomization = async ({ actions }) => {
const { createTypes } = actions
const typeDefs = `
type YamlSliderDesktop @infer {
image: File @fileByStaticPath
}
type YamlSlider @infer {
desktop: YamlSliderDesktop
}
type PagesYaml implements Node @infer {
slider: YamlSlider
}
`
createTypes(typeDefs)
}
코드 예시에서 유형 이름과 필드를 프로젝트에서 사용하는 올바른 것으로 대체해야 합니다. 올바른 유형 이름을 찾으려면 GraphQL 엔드포인트를 참조하세요.
대체 방법
절대 이미지 경로와 관련된 문제를 자주 겪는다면 gatsby-schema-field-absolute-path 플러그인을 사용할 수 있습니다. 이 플러그인을 사용하면 GraphQL 스키마를 쉽게 사용자 정의하여 이미지 경로를 해결할 수 있습니다. 플러그인은 GitHub에서 찾을 수 있으며 블로그에서 자세한 내용을 읽을 수 있습니다.
결론
gatsby-remark-relative-images를 사용하여 YAML 파일의 절대 이미지 경로를 상대 경로로 변환하려면 여러 수준의 구성 세부 정보에 주의해야 합니다. 올바른 파일 경로, gatsby-node.js에서 이미지 경로 변환 및 GraphQL 스키마 사용자 정의를 확인함으로써 이러한 문제를 해결하고 Gatsby에서 GraphQL을 사용하여 이미지를 성공적으로 쿼리할 수 있습니다.
이 문제 해결 안내서가 도움이 되기를 바랍니다. 코딩을 즐기세요!