391 字
2 分钟
Gatsby迁移指南:v4 To v5
NOTE
NOTE
提升 Node 版本上限
image: node:16.19.1-rsyncimage: node:18.17.0-rsync{ "name": "root", "version": "0.1.0", "engines": { "node": ">= 16" "node": ">= 18" } // ...}升级 React v18
yarn add -W react@^18.2.0 react-dom@^18.2.0可选的类型安装:
yarn add -W -D @types/react@^18.2.18 @types/react-dom@^18.2.7若使用了render与unmountComponentAtNode创建与销毁组件,可迁移至createRoot API:
import { render, unmountComponentAtNode } from 'react-dom' import { createRoot } from 'react-dom/client'
const ele = document.getElementById('xxx')
render(<XxxComp />, ele) unmountComponentAtNode(ele)
const root = createRoot(ele) root.render(<XxxComp />) root.unmount()升级 Gatsby 及其相关插件
yarn add -W \gatsby@^5.11.0 \gatsby-plugin-image@^3.11.0 \gatsby-plugin-sharp@^5.11.0 \gatsby-plugin-sitemap@^6.11.0 \gatsby-plugin-page-creator@^5.11.0 \gatsby-plugin-styled-components@^6.11.0 \gatsby-source-filesystem@^5.11.0 \gatsby-source-contentful@^8.11.0 \gatsby-transformer-sharp@^5.11.0问题处置
迁移 GraphQL 字段语法
排序(sort)与聚合(distinct)字段的参数已由枚举传递变更为嵌套对象输入。
在 Gatsby v5 版本中会对其进行自动转换并输出警告信息,如图所示:

根据警告信息对相应的代码进行调整即可:
graphql` query { data: allContentfulNews(sort: { fields: createdAt, order: DESC }) { data: allContentfulNews(sort: { createdAt: DESC }) { # ... } }`graphql` query { data: allContentfulNews(sort: { fields: [rank, date] }) { data: allContentfulNews(sort: { rank: ASC, date: ASC }) { # ... } }`迁移 StaticQuery 组件调用
组件<StaticQuery />在 Gatsby v5 版本中已标记为弃用,将于 v6 版本正式移除,可提前将其迁移至useStaticQuery,由于只是书面形式上的变更,参考迁移指南即可。
迁移组件风格: 由于在 class component 中不能使用 Hooks,因此也需要将 class component 改写为 function component。
Gatsby迁移指南:v4 To v5
https://www.hzhi.top/posts/gatsby-v4-to-v5/