¿Hay una herramienta PHP / Composer que funcione como la versión npm?

¿Existe alguna manera automática de actualizar el número de versión en composer.json y agregar las tags necesarias antes de publicar, como lo npm version ?

Quiero decir, si tuvieras un compositor.json con la línea "version": "2.1.3" , y ejecutado:

 composer version minor 

Haría lo siguiente:

  • Actualizando el número de versión en composer.json a 2.2.0
  • Desencadenando la composer update para actualizar composer.lock
  • Hacer un nuevo git commit
  • Hacer una nueva label git v2.2.0

Sé que el command de composer version del composer version no existe, pero ¿hay una herramienta equivalente?

npm version hace cosas que muy probablemente no necesites para Composer:

  • El número de versión no está registrado en composer.json si hay otros medios disponibles, y porque se está refiriendo a Git más adelante, están disponibles.
  • La actualización de dependencies en el file de locking es innecesaria. El file de locking se ignorará cuando el proyecto con el que se trate esté incluido en otro lugar.
  • Como nada ha cambiado en el proyecto, un git commit no haría nada.
  • Todo esto te deja con la creación de una nueva label en el repository de Git. Poner esto en Composer significaría que intercambiarías un command con otro, sin grandes beneficios además de que no tendrás que search el número de versión actual con el que estás tratando si usas algunos de los parameters de version relativos.

En general, diría que simplemente labelr su nueva versión es suficiente para Composer. Probablemente necesites tener alguna infraestructura implementada y configurada para que el mundo conozca la nueva versión:

  • Si su package es de código abierto y en packagist.org, debe tener un enlace posterior a la confirmación para notificarlos tan pronto como haya una nueva versión disponible. Esta es una opción estándar en Github, no sé acerca de otros hosts de código fuente.
  • De lo contrario, si tiene que alimentar el código fuente cerrado, probablemente inicie un nuevo ciclo de actualización del sistema utilizado para crear una fuente alternativa de información del package (ya sea Satis, alojado localmente, Packagist, Toran Proxy o Private Packagist).

Sin embargo, esto depende de cómo configures las cosas.