升级指南

将您的站点升级到使用 DrupalClient 的指南。


next-drupal 1.6.0

  1. 升级到最新版本
yarn add next-drupal@latest

next-drupal 1.6.0 添加了对 Next.js 13 和 React 18 的支持。要将您的站点更新到 Next.js 13,请参阅 Next.js 网站上的 从 12 升级到 13 指南。

next 1.6.0

  1. 将您的 Drupal 站点升级到使用 next 1.6.0
composer require drupal/next
  1. 运行更新
drush updb

运行更新将把旧版 next_extras 的按需重新验证配置迁移到实体类型配置。


next 1.3.0

  1. 将您的 Drupal 站点升级到使用 next 1.3.0
composer require drupal/next
  1. 运行更新
drush updb
  1. 编辑 Next.js 用户并**分配所有将用于作用域的角色,包括管理员角色和 Next.js 角色**。授予的角色将根据分配给当前用户的角色进行过滤。

  2. next-drupal 包升级到 1.5.0。请参阅下面的升级指南。


next-drupal 1.5.0

  1. 升级到最新版本
yarn add next-drupal@latest

next-drupal 1.4.0

⚠️

DrupalClient 是一个可选功能。如果您正在运行使用 next-drupal 1.2 或更低版本的站点,则可以安全地升级您的站点,而不会有任何重大更改。

  1. 升级到最新版本
yarn add next-drupal@latest
  1. lib/drupal.ts 中创建一个新的 DrupalClient

lib/drupal.ts

import { DrupalClient } from "next-drupal"
export const drupal = new DrupalClient(
process.env.NEXT_PUBLIC_DRUPAL_BASE_URL,
{
frontPage: "/home",
previewSecret: process.env.DRUPAL_PREVIEW_SECRET,
auth: {
clientId: process.env.DRUPAL_CLIENT_ID,
clientSecret: process.env.DRUPAL_CLIENT_SECRET,
},
}
)

默认情况下,DrupalClient 对 Drupal 发出的所有请求都是未经身份验证的。请参阅下面的步骤 5,了解如何为未经身份验证的调用配置权限。

要进行身份验证请求,您需要在 方法基础上选择加入。

如果您希望所有请求都经过身份验证,则可以在 DrupalClient 上使用 withAuth 选项。

import { DrupalClient } from "next-drupal"
export const drupal = new DrupalClient(
process.env.NEXT_PUBLIC_DRUPAL_BASE_URL,
{
frontPage: "/home",
previewSecret: process.env.DRUPAL_PREVIEW_SECRET,
auth: {
clientId: process.env.DRUPAL_CLIENT_ID,
clientSecret: process.env.DRUPAL_CLIENT_SECRET,
},
withAuth: true,
}
)
  1. 更新助手以使用 drupal 客户端。
+ import { drupal } from "lib/drupal"
- await getPathsFromContext()
+ await drupal.getStaticPathsFromContext()
- await translatePathFromContext()
+ await drupal.translatePathFromContext()
- await getResourceFromContext()
+ await drupal.getResourceFromContext()
  1. pages/api/preview.ts 替换为以下内容
- import { DrupalPreview } from "next-drupal"
-
- export default DrupalPreview()
+ import { drupal } from "lib/drupal"
+
+ export default async function (request, response) {
+ return await drupal.preview(request, response)
+ }
  1. 在 Drupal 站点上,访问 /admin/people/permissions/anonymous 并将发出子请求权限分配给匿名用户角色。

    我们这样做是因为在构建阶段,大多数页面请求都是匿名请求。通过分配此权限,您可以显着减少站点的构建时间。

    如果您希望保留身份验证请求,则可以使用 withAuth 选项。

  2. 完成。您现在可以使用新的 DrupalClient 运行您的站点了。

如果您在升级过程中遇到任何错误,请随时在 GitHub 上创建问题。