yasudacloudの日記

札幌に住むソフトウェアエンジニア

Strapi v5リリースに伴うプラグインの改修

先日、Strapiのメジャーバージョンv5がリリースされました。

Strapi v5ではv4向けのプラグインがほぼ動かないため、各プラグインでそれぞれ対応する必要があります。

自分もプラグインを幾つか公開していて、先ほどstrapi-plugin-ssoのv5対応を公開したので手順や気になった点を書いていきます。

一連の対応

といってもv5移行の大部分を自分はやっておらず、素晴らしいコントリビューターがベースとなるPRを送ってくださいました。感謝!

marc0777 (Marco Fincato) · GitHub

v4→v5への変更は下記に記載されていますが、beta版やrc版の頃はもっと情報が少なく、マイナーバージョン毎に異なるエラーが出ていて混沌としていました。公式通りの手順で進めてもプラグインのビルド通らなかったり・・。

docs.strapi.io

strapi-plugin-ssoで行った具体的な対応を箇条書きでまとめます。

・プラグインのuid指定変更(リンク

・ES Modules化(リンク

・adminのaxiosInstance(プラグイン生成時のボイラープレート)から@strapi/strapi/adminのuseFetchClientに変更

・各dependenciesのバージョンアップ

・webhookの呼び出し方法変更(リンク

dependenciesはStrapi v5上でプラグインを生成してpackage.jsonを見れば必要なものが分かるので、意外と大変ではないです。

webhookの呼び出し方法が変わっていたようですが、特に資料もなかったのでコアのコードを追っかけたりstrapiオブジェクトをデバッグして正しい関数呼び出し方法を探し出しました。Strapiで少しニッチな実装をするとこういうケースがよくありますが、頑張れば答えに辿り着くことも多いので調べ甲斐があります 笑

ブランチ管理は?🤔

v4とv5で依存バージョンが違うものが多々あるので、mainブランチと別にv5用のブランチを作りました。

ただ、v4の中でもマイナーバージョンを高めにすればv5と共存できるのか?と途中で疑問を抱きましたが、検証する時間がなく二重管理にしました。将来的にv4を非サポートとなった段階でv5ブランチをmainにマージすれば、main = v5ブランチになって正しいコミットの順に戻るので良いかなと判断しました。

この辺りOSS特有のセオリーがありそうですがよく分からず。

 他のプラグインの状況は?🤔

ふと気になったので、知名度の高いプラグインをいくつか調べてみました。

strapi-plugin-preview-button

github.com

preview-buttonはv5専用のPRがありました。差分がやたら多いなと思ったらTypeScript化対応も入っていて、加えてほぼ一人で開発してるっぽいので大変頭が下がります。

数年前に日本語化のPR出した時に親切に対応頂いた覚えがありまして、きっと良い人です。

strapi-plugin-ckeditor

github.com

ckeditorは既に対応済みのようです。なんと対応がStrapi v5リリースの翌日です。RCやBeta版から追っかけてたに違いありませんね。

strapi-plugin-publisher

github.com

publisherはなんとメンテナンス終了のお知らせが。

プロジェクトを引き継いでくれる人を募っています。OSSの引き継ぎは経験がないので興味深いですが、、時間の確保が厳しいので立候補は見送り。

これ結構便利なので何とかメンテ続いてほしいところです。

strapi-plugin-comments

github.com

commentsは10月中旬リリース目標とのことなのでもう少しですね。パッと見た感じ機能が多いので、対応するボリュームも多いはずです。そう考えると10月中旬リリースは結構早い。

まとめ

今から新規でプラグインを作るならv5上で作る方が良いですが、サードパーティ製のプラグインを多数使用してStrapiを新規で使うならv5はまだ微妙なタイミングかもしれません。

他にもプラグインを幾つか出してるので対応せねば・・と思いつつ。今年になってPRやIssuesを投げてもらうことが増えたのでモチベーション高めて頑張ります。