npm versionEs probablemente la respuesta correcta. Solo para dar una alternativa, recomiendo grunt-bump . Es mantenido por uno de los chicos de angular.js.
Uso:
grunt bump
>>Version bumped to 0.0.2
grunt bump:patch
>>Version bumped to 0.0.3
grunt bump:minor
>>Version bumped to 0.1.0
grunt bump
>>Version bumped to 0.1.1
grunt bump:major
>>Version bumped to 1.0.0
Si de todos modos está usando gruñido, podría ser la solución más simple.
Si no está usando ninguna extensión para git, puede escribir un script de shell (lo nombraré git-release.sh) y luego puede usar un alias git releasecon algo como:
Puede, que, usar git release 0.4cual ejecutará path/to/pre-release.sh 0.4. Su secuencia de comandos puede editar package.json, crear la etiqueta y enviarla al servidor.
La primera línea, npm version patchaumentará la versión del parche en 1 (xx1 a xx2) en package.json. Luego agrega todos los archivos, incluido el package.jsonque en ese momento se ha modificado. Luego, lo habitual git commity git push, y finalmente npm publishpublicar el módulo.
Por lo que puedo decir, npm version patchel compromiso en sí mismo; sin embargo, para empujar la etiqueta a github, creo que también debes hacerlo git push --tags.
ChrisV
@ChrisV es correcto: npm version patchtopa el número de versión e inmediatamente confirma el cambio
Dan Esparza
2
@DanEsparza Esto podría ser algo de configuración. npm version patchNo comete nada por mí.
Mordred
@Mordred Hmmm ... posiblemente. No veo nada en los documentos de configuración de npm sobre eso, pero ¿podría ser que no tienes git en tu camino o algo así?
Dan Esparza
@DanEsparza git definitivamente está en el camino ya que me comprometo desde la misma carpeta que ejecuto npm version.
Mordred
29
Para dar un enfoque más actualizado.
package.json
"scripts":{"eslint":"eslint index.js","pretest":"npm install","test":"npm run eslint","preversion":"npm run test","version":"","postversion":"git push && git push --tags && npm publish"}
Entonces lo ejecutas:
npm version minor --force -m "Some message to commit"
Que lo hará:
... ejecuta pruebas ...
cambie su package.jsona una próxima versión menor (por ejemplo: 1.8.1 a 1.9.0)
También puede agregar un script como "deploy-minor": "npm version minor --force -m \"version %s\""para que todo lo que necesite recordar sea npm run deploy-minor:)
Kristofor Carle
23
Como complemento npm version, puede usar el --no-git-tag-versionindicador si desea un aumento de versión pero sin etiqueta o una nueva confirmación:
// package.json{"husky":{"hooks":{"post-merge":"(git-branch-is master && npm version minor ||(git-branch-is dev && npm --no-git-tag-version version patch)",}}}
Antes de Husky V1:
"scripts":{..."postmerge":"(git-branch-is master && npm version minor ||(git-branch-is dev && npm --no-git-tag-version version patch)",...},
Me gusta más esta opción ronca, aunque ya no creo que funcione como es. No creo que exista 'postmerge', "pre-push" es probablemente la mejor opción. y los resultados de 'git-branch-is' realmente no funcionan ya que se equivocan y básicamente bloquean toda la publicación (ya que está comprobando tanto master como dev, se equivocará en uno de ellos)
Phil
@ Phil Todavía puede usar postmerge, pero ahora está post-mergedentro de la husky: {hooks:{}}configuración. ¿Qué problema tienes con git-branch-is?
Anima-t3d
simplemente me daría un error en lugar de ejecutarlo. Sin embargo, no se preocupe, terminé con esta opción: marketplace.visualstudio.com/…
Phil
1
@ Phil gracias por seguirnos. Acabo de probar con la versión actualizada y no tengo errores, tal vez algo está mal con su propio comando post-fusión.
Anima-t3d
5
Quiero agregar algo de claridad a las respuestas que recibió esta pregunta.
Aunque aquí hay algunas respuestas que abordan adecuadamente el problema y brindan una solución, no son las correctas. La respuesta correcta a esta pregunta es usarnpm version
¿Hay alguna manera de editar el archivo package.json automáticamente?
Sí, lo que puede hacer para que esto suceda es ejecutar el npm versioncomando cuando sea necesario, puede leer más sobre esto aquí versión npm , pero el uso base sería npm version patchy agregaría el orden de 3 dígitos en su package.jsonversión (1.0. X )
¿Usaría un gancho de prelanzamiento git?
Puede configurar para ejecutar el npm versioncomando en el gancho de prelanzamiento, según lo necesite, pero eso depende de si eso es lo que necesita o no en su tubería de CD / CI, pero sin el npm versioncomando un git pre-releasegancho no puede hacer nada "fácilmente" con elpackage.json
La razón por npm versionla cual es la respuesta correcta es la siguiente:
Si el usuario está usando una estructura de carpetas en la que tiene un archivo package.jsonque está usando, npmsi está usando npm, tiene acceso al npm scripts.
Si tiene acceso a npm scriptsél tiene acceso a lanpm version comando.
Al usar este comando, no necesita instalar nada más en su computadora o tubería de CD / CI que a largo plazo reducirá el esfuerzo de mantenimiento para el proyecto y ayudará con la configuración
Las otras respuestas en las que se proponen otras herramientas son incorrectas.
gulp-bump funciona pero requiere otro paquete adicional que podría crear problemas a largo plazo (punto 3 de mi respuesta)
grunt-bump funciona pero requiere otro paquete adicional que podría crear problemas a largo plazo (punto 3 de mi respuesta)
Primero, debe comprender las reglas para actualizar el número de versión. Puedes leer más sobre la versión semántica aquí.
Cada versión tendrá una versión xyz donde se define para diferentes propósitos como se muestra a continuación.
x - mayor, sube esto cuando tienes cambios importantes y es una gran discrepancia de cambios ocurridos.
y - menor, sube esto cuando tiene una nueva funcionalidad o mejora.
z - parche, suba esto cuando tenga errores corregidos o revierta los cambios en la versión anterior.
Para ejecutar los scripts, puede definirlo en su package.json.
"script":{"buildmajor":"npm version major && ng build --prod","buildminor":"npm version minor && ng build --prod","buildpatch":"npm version patch && ng build --prod"}
En su terminal, solo necesita ejecutar npm según sus necesidades como
npm run buildpatch
Si lo ejecuta en git repo, la versión predeterminada de git-tag-true es verdadera y si no desea hacerlo, puede agregar el siguiente comando en sus scripts:
--no-git-tag-version
por ejemplo: "npm --no-git-tag-version version major && ng build --prod"
He creado una herramienta que puede realizar versiones semánticas automáticas basadas en las etiquetas en los mensajes de confirmación, conocidos como tipos de cambio. Esto sigue de cerca la Convención de mensajes de confirmación angular junto con la Especificación de versiones semánticas.
Puede usar esta herramienta para cambiar automáticamente la versión en el package.json usando la CLI de npm (esto se describe aquí ).
Además, puede crear un registro de cambios a partir de estas confirmaciones y también tiene un menú (con un corrector ortográfico para mensajes de confirmación) para crear confirmaciones basadas en el tipo de cambio. Recomiendo consultarlo y leer documentos para ver todo lo que se puede lograr con él.
Escribí la herramienta porque no pude encontrar nada que se adaptara a mis necesidades para que mi CICD Pipeline automatizara las versiones semánticas. Prefiero centrarme en cuáles son los cambios reales en lugar de cuál debería ser la versión y ahí es donde mi herramienta salva el día.
Para obtener más información sobre la justificación de la herramienta, consulte esto .
Respuestas:
npm version
Es probablemente la respuesta correcta. Solo para dar una alternativa, recomiendo grunt-bump . Es mantenido por uno de los chicos de angular.js.Uso:
Si de todos modos está usando gruñido, podría ser la solución más simple.
fuente
npm version
?npm --no-git-tag-version version patch
.Respuesta correcta
Para hacerlo, solo
npm version patch
=)Mi vieja respuesta
No hay
pre-release
gancho originalmente engit
. Al menos,man githooks
no lo muestra.Si está usando
git-extra
( https://github.com/visionmedia/git-extras ), por ejemplo, puede usar unpre-release
gancho implementado por él, como puede ver en https://github.com/visionmedia/ git-extras / blob / master / bin / git-release . Solo se necesita un.git/hook/pre-release.sh
archivo ejecutable que edite supackage.json
archivo. Elgit release
comando confirmará, empujará y etiquetará .Si no está usando ninguna extensión para
git
, puede escribir un script de shell (lo nombrarégit-release.sh
) y luego puede usar un aliasgit release
con algo como:git config --global alias.release '!sh path/to/pre-release.sh $1'
Puede, que, usar
git release 0.4
cual ejecutarápath/to/pre-release.sh 0.4
. Su secuencia de comandos puede editarpackage.json
, crear la etiqueta y enviarla al servidor.fuente
git release
no actualiza el package.json en consecuencia ... github.com/visionmedia/git-extras/issues/150 : D.git/hooks/pre-release.sh
contenga:echo -e "{\n\"version\": "$1"\n}" > package.json
e intenta usargit release $version
npm version patch
onpm version 0.3.1
lo resolverá! ¿Podría actualizar su respuesta en consecuencia? ty !!Esto es lo que normalmente hago con mis proyectos:
La primera línea,
npm version patch
aumentará la versión del parche en 1 (xx1 a xx2) enpackage.json
. Luego agrega todos los archivos, incluido elpackage.json
que en ese momento se ha modificado. Luego, lo habitualgit commit
ygit push
, y finalmentenpm publish
publicar el módulo.Espero que esto tenga sentido...
Merc.
fuente
npm version patch
el compromiso en sí mismo; sin embargo, para empujar la etiqueta a github, creo que también debes hacerlogit push --tags
.npm version patch
topa el número de versión e inmediatamente confirma el cambionpm version patch
No comete nada por mí.npm version
.Para dar un enfoque más actualizado.
package.json
Entonces lo ejecutas:
Que lo hará:
... ejecuta pruebas ...
cambie su
package.json
a una próxima versión menor (por ejemplo: 1.8.1 a 1.9.0)empuja tus cambios
crear una nueva versión de etiqueta git y
publica tu paquete npm.
--force
es mostrar quién es el jefe! Bromas a un lado ver https://github.com/npm/npm/issues/8620fuente
"deploy-minor": "npm version minor --force -m \"version %s\""
para que todo lo que necesite recordar seanpm run deploy-minor
:)Como complemento
npm version
, puede usar el--no-git-tag-version
indicador si desea un aumento de versión pero sin etiqueta o una nueva confirmación:https://docs.npmjs.com/cli/version
fuente
Si usa hilo, puede usar
Esto incrementará la
package.json
versión por parche(0.0.x)
, confirmación y la etiquetará con formatov0.0.0
Del mismo modo, puede topar versiones menores o mayores utilizando
--minor
o--major
Al presionar para git, asegúrese de presionar también las etiquetas con
--follow-tags
También puedes crear un script para ello
Simplemente ejecútalo escribiendo
yarn release-it
fuente
Estoy usando husky y git-branch-is :
A partir de Husky v1 +:
Antes de Husky V1:
Leer más sobre la versión npm
Webpack o Vue.js
Si está utilizando webpack o Vue.js, puede mostrar esto en la interfaz de usuario utilizando la versión de inyección automática: complemento de Webpack
NUXT
En
nuxt.config.js
:Dentro de su
template
por ejemplo en el pie de página:fuente
postmerge
, pero ahora estápost-merge
dentro de lahusky: {hooks:{}}
configuración. ¿Qué problema tienes congit-branch-is
?Quiero agregar algo de claridad a las respuestas que recibió esta pregunta.
Aunque aquí hay algunas respuestas que abordan adecuadamente el problema y brindan una solución, no son las correctas. La respuesta correcta a esta pregunta es usar
npm version
Sí, lo que puede hacer para que esto suceda es ejecutar el
npm version
comando cuando sea necesario, puede leer más sobre esto aquí versión npm , pero el uso base seríanpm version patch
y agregaría el orden de 3 dígitos en supackage.json
versión (1.0. X )Puede configurar para ejecutar el
npm version
comando en el gancho de prelanzamiento, según lo necesite, pero eso depende de si eso es lo que necesita o no en su tubería de CD / CI, pero sin elnpm version
comando ungit pre-release
gancho no puede hacer nada "fácilmente" con elpackage.json
La razón por
npm version
la cual es la respuesta correcta es la siguiente:package.json
que está usando,npm
si está usandonpm
, tiene acceso alnpm scripts
.npm scripts
él tiene acceso a lanpm version
comando.Las otras respuestas en las que se proponen otras herramientas son incorrectas.
gulp-bump
funciona pero requiere otro paquete adicional que podría crear problemas a largo plazo (punto 3 de mi respuesta)grunt-bump
funciona pero requiere otro paquete adicional que podría crear problemas a largo plazo (punto 3 de mi respuesta)fuente
Primero, debe comprender las reglas para actualizar el número de versión. Puedes leer más sobre la versión semántica aquí.
Cada versión tendrá una versión xyz donde se define para diferentes propósitos como se muestra a continuación.
Para ejecutar los scripts, puede definirlo en su package.json.
En su terminal, solo necesita ejecutar npm según sus necesidades como
Si lo ejecuta en git repo, la versión predeterminada de git-tag-true es verdadera y si no desea hacerlo, puede agregar el siguiente comando en sus scripts:
por ejemplo:
"npm --no-git-tag-version version major && ng build --prod"
fuente
He creado una herramienta que puede realizar versiones semánticas automáticas basadas en las etiquetas en los mensajes de confirmación, conocidos como tipos de cambio. Esto sigue de cerca la Convención de mensajes de confirmación angular junto con la Especificación de versiones semánticas.
Puede usar esta herramienta para cambiar automáticamente la versión en el package.json usando la CLI de npm (esto se describe aquí ).
Además, puede crear un registro de cambios a partir de estas confirmaciones y también tiene un menú (con un corrector ortográfico para mensajes de confirmación) para crear confirmaciones basadas en el tipo de cambio. Recomiendo consultarlo y leer documentos para ver todo lo que se puede lograr con él.
Escribí la herramienta porque no pude encontrar nada que se adaptara a mis necesidades para que mi CICD Pipeline automatizara las versiones semánticas. Prefiero centrarme en cuáles son los cambios reales en lugar de cuál debería ser la versión y ahí es donde mi herramienta salva el día.
Para obtener más información sobre la justificación de la herramienta, consulte esto .
fuente