Los plugins son una excelente manera de extender la funcionalidad de PhpStorm y adaptarlo a tus necesidades específicas. En este post, te guiaré a través del proceso de creación de un plugin para PhpStorm utilizando el SDK de Plugin Development (PluginDev) y Gradle.
Requisitos previos
Antes de comenzar, necesitarás tener instalado:
- IntelliJ IDEA (Community o Ultimate)
- JDK 11 o superior
- Git
- Conocimientos básicos de Java y Kotlin
Configuración del entorno de desarrollo
1. Instalar Plugin Development Kit
El primer paso es instalar el Plugin Development Kit (PluginDev) en IntelliJ IDEA:
- Abre IntelliJ IDEA
- Ve a File > Settings > Plugins (o Preferences > Plugins en macOS)
- Busca “Plugin DevKit” en el marketplace
- Haz clic en “Install” y reinicia el IDE cuando se te solicite
2. Crear un nuevo proyecto de plugin
Ahora crearemos la estructura básica del proyecto:
- Ve a File > New > Project
- Selecciona “IntelliJ Platform Plugin” en el panel izquierdo
- Configura el nombre del proyecto y la ubicación
- Selecciona Kotlin como lenguaje de programación (recomendado, aunque también puedes usar Java)
- Haz clic en “Create”
Estructura del proyecto
Una vez creado el proyecto, verás una estructura similar a esta:
mi-plugin/
├── .gradle/
├── .idea/
├── build/
├── src/
│ ├── main/
│ │ ├── kotlin/
│ │ └── resources/
│ │ └── META-INF/
│ │ └── plugin.xml
│ └── test/
├── build.gradle.kts
├── gradle.properties
└── settings.gradle.kts
El archivo plugin.xml
es el más importante, ya que define la configuración y puntos de extensión de tu plugin.
Configuración de build.gradle.kts
El archivo build.gradle.kts
contiene la configuración de Gradle para construir tu plugin. Asegúrate de que tenga el siguiente contenido básico:
plugins {
id("java")
id("org.jetbrains.kotlin.jvm") version "1.8.0"
id("org.jetbrains.intellij") version "1.13.3"
}
group = "com.tudominio"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
// Configura la versión de IntelliJ IDEA para el desarrollo
intellij {
version.set("2023.1.4")
type.set("PS") // PS para PhpStorm
plugins.set(listOf("com.jetbrains.php:231.9011.38"))
}
tasks {
// Configura Java compatibility
withType<JavaCompile> {
sourceCompatibility = "17"
targetCompatibility = "17"
}
withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions.jvmTarget = "17"
}
patchPluginXml {
sinceBuild.set("231")
untilBuild.set("241.*")
}
signPlugin {
certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
privateKey.set(System.getenv("PRIVATE_KEY"))
password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
}
publishPlugin {
token.set(System.getenv("PUBLISH_TOKEN"))
}
}
Implementación básica
Ahora vamos a implementar una acción básica para nuestro plugin. Crea una nueva clase Kotlin en src/main/kotlin/com/tudominio/miplugin/
:
package com.tudominio.miplugin
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.ui.Messages
class MiAccionPlugin : AnAction() {
override fun actionPerformed(e: AnActionEvent) {
Messages.showInfoMessage("¡Hola desde mi plugin de PhpStorm!", "Mi Plugin")
}
}
Registro de la acción en plugin.xml
Abre el archivo src/main/resources/META-INF/plugin.xml
y modifícalo para registrar tu acción:
<idea-plugin>
<id>com.tudominio.miplugin</id>
<name>Mi Plugin PhpStorm</name>
<vendor email="tu@email.com" url="https://www.tudominio.com">Tu Nombre</vendor>
<description><![CDATA[
Descripción de tu plugin: qué hace y cómo ayuda a los desarrolladores.
]]></description>
<!-- Asegúrate de que sea compatible con PhpStorm -->
<depends>com.intellij.modules.platform</depends>
<depends>com.jetbrains.php</depends>
<extensions defaultExtensionNs="com.intellij">
<!-- Define extensiones aquí si las necesitas -->
</extensions>
<actions>
<action id="com.tudominio.miplugin.MiAccionPlugin"
class="com.tudominio.miplugin.MiAccionPlugin"
text="Ejecutar Mi Plugin"
description="Ejecuta la acción de mi plugin">
<add-to-group group-id="ToolsMenu" anchor="last"/>
</action>
</actions>
</idea-plugin>
Compilar y ejecutar el plugin
Para compilar y probar tu plugin, puedes usar los siguientes comandos de Gradle:
# Para compilar el plugin
./gradlew build
# Para ejecutar una instancia de PhpStorm con tu plugin instalado
./gradlew runIde
# Para crear el archivo de distribución (.zip o .jar)
./gradlew buildPlugin
El archivo del plugin se generará en la carpeta build/distributions/
.
Depuración del plugin
Para depurar tu plugin:
- Ve a Run > Edit Configurations
- Selecciona la configuración “runIde”
- Configura los puntos de interrupción en tu código
- Ejecuta el plugin en modo de depuración (Run > Debug)
Publicación del plugin
Una vez que estés satisfecho con tu plugin, puedes publicarlo en el JetBrains Plugin Repository:
- Asegúrate de que todos los metadatos en
plugin.xml
sean correctos - Genera el archivo de distribución con
./gradlew buildPlugin
- Sube el archivo a JetBrains Plugin Repository