FeaturesCMS SDKv2への移行手順

CMS SDK v2 への移行

このドキュメントでは、CMS SDK v1 から v2 への移行手順と注意点について説明します。

変更点の概要

  • CLI の廃止
  • NextAuth 連携 API のモジュール分離とリネーム
  • @orizm/common 依存を peerDependency から削除

移行手順

CLI の変更

@orizm/cms-sdk に含まれていた CLI コマンド (orizm-cms) は廃止され、@orizm/cli パッケージに統合されました。コマンドを呼び出すプロジェクトで専用の CLI パッケージをインストールし、コマンドを修正してください。

npm install --save-dev @orizm/cli
# 旧
orizm-cms update
# 新
orizm push

@orizm/cms-sdk v2 を利用する場合、CLI も v2 を利用する必要があります。 CLI の利用方法の詳細は ドキュメント を参照してください。

NextAuth 連携の変更

NextAuth 連携用の API を import するパスが変更され、リネームされました。また、一部のクラスは廃止されました。

次の変更を行ってください。

OrizmNextAuth.generategenerateOrizmNextAuth に置き換える

// 旧コード
import { OrizmNextAuth } from "@orizm/cms-sdk";
 
const orizmAuth = OrizmNextAuth.generate({
  id: "Orizm",
  name: "Orizm",
  clientId: env.ORIZM_CLIENT_ID,
  clientSecret: env.ORIZM_CLIENT_SECRET,
  projectName: env.NEXT_PUBLIC_ORIZM_PROJECT,
});
 
// 新コード
import { generateOrizmNextAuth } from "@orizm/cms-sdk/next-auth";
 
const orizmAuth = generateOrizmNextAuth({
  id: "Orizm",
  name: "Orizm",
  clientId: env.ORIZM_CLIENT_ID,
  clientSecret: env.ORIZM_CLIENT_SECRET,
  projectName: env.NEXT_PUBLIC_ORIZM_PROJECT,
});

OrizmCMSClient_NextAuthSessionOrizmNextAuthCMSClient に置き換える

// 旧コード
import { OrizmCMSClient_NextAuthSession } from "@orizm/cms-sdk";
import { CMSClient } from "@repo/orizm/cms";
import { getServerSession } from "next-auth";
import { authOptions } from "../auth/auth-options";
import { env } from "@/env";
 
export function getServerSideOrizmClient(): CMSClient {
  return new CMSClient(
    new OrizmCMSClient_NextAuthSession(
      {
        projectName: env.NEXT_PUBLIC_ORIZM_PROJECT,
        baseURL: env.NEXT_PUBLIC_ORIZM_BASE_URL,
      },
      async () => (await getServerSession(authOptions)) ?? undefined,
    ),
  );
}
 
// 新コード
import { OrizmNextAuthCMSClient } from "@orizm/cms-sdk/next-auth";
import { CMSClient } from "@repo/orizm/cms";
import { getServerSession } from "next-auth";
import { authOptions } from "../auth/auth-options";
import { env } from "@/env";
 
export function getServerSideOrizmClient(): CMSClient {
  return new CMSClient(
    new OrizmNextAuthCMSClient(
      {
        projectName: env.NEXT_PUBLIC_ORIZM_PROJECT,
        baseURL: env.NEXT_PUBLIC_ORIZM_BASE_URL,
      },
      async () => await getServerSession(authOptions),
    ),
  );
}

OrizmCMSClient_NextAuthFront の廃止

OrizmCMSClient_NextAuthFront クラスは廃止されました。代わりに OrizmNextAuthCMSClient クラスを使用してください。

// 旧コード
import { OrizmCMSClient_NextAuthFront } from "@orizm/cms-sdk";
import { CMSClient } from "@repo/orizm/cms";
import { env } from "@/env";
 
const client = new CMSClient(
  new OrizmCMSClient_NextAuthFront({
    projectName: env.NEXT_PUBLIC_ORIZM_PROJECT,
    baseURL: env.NEXT_PUBLIC_ORIZM_BASE_URL,
  }),
);
 
// 新コード
import { OrizmNextAuthCMSClient } from "@orizm/cms-sdk/next-auth";
import { CMSClient } from "@repo/orizm/cms";
import { getSession } from "next-auth/react";
import { env } from "@/env";
 
const client = new CMSClient(
  new OrizmNextAuthCMSClient(
    {
      projectName: env.NEXT_PUBLIC_ORIZM_PROJECT,
      baseURL: env.NEXT_PUBLIC_ORIZM_BASE_URL,
    },
    async () => getSession(),
  ),
);

@orizm/common のアンインストール

@orizm/common@orizm/cms-sdk の peer dependencies から dependencies に変更しました。@orizm/common をコードで利用していない場合は、アンインストールできます。

npm uninstall @orizm/common

ただし、@orizm/common をコードで利用している場合は、最新バージョンがリリースされているためアップデートしてください。

npm install @orizm/common@latest