👻

PhpStorm Plugin 開発における config 設定(M1 Mac)

2022/05/28に公開

IntelliJ Plugin の開発者向けドキュメントは非常に整備されていますが、この通りに進めていてもハマってしまっていました。

https://plugins.jetbrains.com/docs/intellij/phpstorm.html

なんとか動くところまで出来たので、解決方法を書いていきます。

あと、ハマった原因は M1 Mac だからと断定することは出来ませんが、自分は M1 Mac でしか確認できていないので、 M1 Mac に限定した記事になっています。

目的

  • PhpStorm Plugin を runIde で実行
  • PhpStorm Plugin を build して PhpStorm で動かす

環境

  • M1 Mac (macOS Monterey)
  • PhpStorm 2022.1 (Build #PS-221.5080.224, built on April 14, 2022)
  • IntelliJ IDEA 2022.1.1 (Community Edition)

プロジェクトの作成

IntelliJ Platform 向け Plugin のプロジェクトを作成する場合

があります。

今回は Gradle を使う方法で PhpStorm Plugin を作成しました。

※ GitHub Template は Gradle プロジェクトのテンプレートです

gradle-intellij-plugin の設定

PhpStorm は gradle-intellij-plugin で intellij.type が定義されていないです。そのためbuild.gradle.ktsの設定をちゃんと書く必要があります。

https://plugins.jetbrains.com/docs/intellij/phpstorm.html#configuring-plugin-projects-targeting-phpstorm

公式ドキュメントによる設定の解説(Deepl翻訳)

Attribute Attribute Value
intellij.type IUはIntelliJ IDEA Ultimateのことです。必要なPHPプラグインは、IntelliJ IDEA Community Editionと互換性がありません。
intellij.version PhpStormのターゲットバージョンと同じIUBRANCH.BUILDに設定します(例:193.5233.102)。
intellij.plugins com.jetbrains.php:193.5233.102でPHPプラグインを使用します。PHPプラグインのバージョン情報については、以下をご参照ください。
runIde.ideDir ローカルにインストールされたPhpStormのターゲットバージョンへのパス。例えば、macOSの場合: /Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/PhpStorm/ch-0/193.5233.101/PhpStorm.app/Contents.PhpStorm のようになります。

公式ドキュメントに記載されているbuild.gradle.ktsのサンプルコード

intellij {
  // Define IntelliJ Platform against which to build the plugin project.
  type.set("IU")

  // Use the IntelliJ Platform BRANCH.BUILD version matching
  // "targetIDE" (PhpStorm):
  version.set("192.7142.36")   // baseIntelliJPlatformVersion

  // Require the targetIDE plugin or library. Use the stable version
  // compatible with intellij.version and intellij.type specified above:
  plugins.set(listOf("com.jetbrains.php:192.6603.42"))
}

runIde {
  // Absolute path to the installed targetIDE to use as IDE Development
  // Instance (the "Contents" directory is macOS specific):
  ideDir.set(file("/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/PhpStorm/ch-0/192.7142.41/PhpStorm.app/Contents"))
}

version には、そのまま version をセットする

この version は build number かと誤解していてかなりハマりましたが、正しくは普通の version を設定するようです。

上の画像の PhpStorm の version であれば

+  version.set("2019.2.4")   // baseIntelliJPlatformVersion
-  version.set("192.7142.36")   // baseIntelliJPlatformVersion

runIde.ideDir は/Applications/にある

ここはユーザーの環境によると書いてあったので、/Users/$USERNAME$/Library/Application Support/を探してみたところ、/Users/$USERNAME$/Library/Application Support/JetBrains/PhpStorm2022.1がありました。

このパスを設定して実行したところ

/Users/[username]/Library/Application Support/JetBrains/PhpStorm2022.1/build.txt (No such file or directory)

とエラーが出て実行出来ませんでした。

どうやら/Applications/PhpStorm.app/Contentsが正解みたいです。(まあ環境によるのですが、 M1 Mac ユーザーは同じかな?と思います。)

+   ideDir.set(file("/Applications/PhpStorm.app/Contents"))
-   ideDir.set(file("/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/PhpStorm/ch-0/192.7142.41/PhpStorm.app/Contents"))

plugin.xml の設定

この設定は PhpStorm で使う PHP plugin APIs を利用するための記述です。

/src/main/resources/META-INF/plugin.xml
<!-- Targeting PhpStorm, so is dependent on the PHP plugin -->
<depends>com.jetbrains.php</depends>
<depends>com.intellij.modules.platform</depends>

PhpStorm Plugin を runIde で実行

IntelliJ の右側に Gradle というタブがあるので、それを開いてrunideをダブルクリックします。

うまく実行できると、 PhpStorm の Welcome 画面が出てきます。

Plugins から作ってみた Plugin があれば完了です

PhpStorm Plugin を build して PhpStorm で動かす

build ボタンを押してビルドします

PhpStorm を起動してInstall Plugin from Desk...を押します。

project > build > libs > プラグイン名.jar を選択

Installed の項目に build したプラグインがあれば完了です。

終わりに

PhpStorm Plugin の開発に関する日本語記事少ないですね😭

今回はオープンソースで公開されている PhpStorm Plugin のリポジトリをみて解決しました。

まだ全然開発できていないので、ハマることは予測できますが、その時記事にしていこうと思います。

参考

https://github.com/Haehnchen/idea-php-symfony2-plugin
https://github.com/unserialize/kphpstorm

Discussion