Antes de hacer un pequeño lanzamiento y etiquetarlo, me gustaría actualizar el package.json para reflejar la nueva versión del programa.
¿Hay alguna manera de editar el archivo package.json
automáticamente?
¿Usaría una git pre-release hook
ayuda?
Antes de hacer un pequeño lanzamiento y etiquetarlo, me gustaría actualizar el package.json para reflejar la nueva versión del programa.
¿Hay alguna manera de editar el archivo package.json
automáticamente?
¿Usaría una git pre-release hook
ayuda?
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:
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.
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 en git
. Al menos, man githooks
no lo muestra.
Si está usando git-extra
( https://github.com/visionmedia/git-extras ), por ejemplo, puede usar un pre-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 su package.json
archivo. El git 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 alias git 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 editar package.json
, crear la etiqueta y enviarla al servidor.
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
Esto es lo que normalmente hago con mis proyectos:
npm version patch
git add *;
git commit -m "Commit message"
git push
npm publish
La primera línea, npm version patch
aumentará la versión del parche en 1 (xx1 a xx2) en package.json
. Luego agrega todos los archivos, incluido el package.json
que en ese momento se ha modificado. Luego, lo habitual git commit
y git push
, y finalmente npm publish
publicar el módulo.
Espero que esto tenga sentido...
Merc.
npm version patch
el compromiso en sí mismo; sin embargo, para empujar la etiqueta a github, creo que también debes hacerlo git push --tags
.
npm version patch
topa el número de versión e inmediatamente confirma el cambio
npm version patch
No comete nada por mí.
npm version
.
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.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/8620
"deploy-minor": "npm version minor --force -m \"version %s\""
para que todo lo que necesite recordar sea npm 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:
npm --no-git-tag-version version patch
Si usa hilo, puede usar
yarn version --patch
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
git push --follow-tags
También puedes crear un script para ello
"release-it": "yarn version --patch && git push --follow-tags"
Simplemente ejecútalo escribiendo yarn release-it
Estoy usando husky y git-branch-is :
A partir de Husky v1 +:
// 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)",
...
},
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
:
var WebpackAutoInject = require('webpack-auto-inject-version');
module.exports = {
build: {
plugins: [
new WebpackAutoInject({
// options
// example:
components: {
InjectAsComment: false
},
}),
]
},
}
Dentro de su template
por ejemplo en el pie de página:
<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>
postmerge
, pero ahora está post-merge
dentro de la husky: {hooks:{}}
configuración. ¿Qué problema tienes con git-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 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 version
comando cuando sea necesario, puede leer más sobre esto aquí versión npm , pero el uso base sería npm version patch
y agregaría el orden de 3 dígitos en su package.json
versión (1.0. X )
¿Usaría un gancho de prelanzamiento git?
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 el npm version
comando un git 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á usando npm
, tiene acceso al npm 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)
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.
"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 .