Se você não estiver usando nenhuma extensão git, poderá escrever um shell script (eu o nomeio git-release.sh) e, em seguida, aliasá-lo git releasecom algo como:
Você pode, então, usar o git release 0.4que será executado path/to/pre-release.sh 0.4. Seu script pode editar package.json, criar a tag e enviá-la ao servidor.
A primeira linha npm version patch,, aumentará a versão do patch em 1 (xx1 a xx2) em package.json. Em seguida, você adiciona todos os arquivos - incluindo os package.jsonque foram modificados naquele momento. Em seguida, o habitual git commite git push, e, finalmente, npm publishpublicar o módulo.
Tanto quanto posso dizer, npm version patcho próprio commit; no entanto, para enviar a tag para o github, acho que você também precisa git push --tags.
ChrisV
@ChrisV está correto - npm version patchbate o número da versão e imediatamente confirma a alteração
Dan Esparza
2
@DanEsparza Isso pode ser uma coisa de configuração. npm version patchnão comete nada para mim.
Mordred #
@Mordred Hmmm ... possivelmente. Não vejo nada nos documentos de configuração do npm sobre isso, mas será que você não tem o git no caminho ou algo assim?
21815 Dan Esparza
O @DanEsparza git está definitivamente no caminho, pois eu confirmo exatamente da mesma pasta que corro npm version.
Mordred
29
Para fornecer uma abordagem mais atualizada.
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"}
Então você o executa:
npm version minor --force -m "Some message to commit"
Qual irá:
... executar testes ...
mude package.jsonpara uma próxima versão secundária (por exemplo: 1.8.1 a 1.9.0)
Você também pode adicionar um script como "deploy-minor": "npm version minor --force -m \"version %s\""isso tudo que você precisa lembrar é npm run deploy-minor:)
Kristofor Carle
23
Como complemento, npm versionvocê pode usar o --no-git-tag-versionsinalizador se desejar um aumento de versão, mas nenhuma tag ou uma nova confirmação:
// 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 da V1 rouca:
"scripts":{..."postmerge":"(git-branch-is master && npm version minor ||(git-branch-is dev && npm --no-git-tag-version version patch)",...},
Eu gosto mais dessa opção rouca, embora eu não ache que funcione mais. Eu não acho que exista "pós-fusão", "pré-envio" é provavelmente a melhor opção. e os resultados 'git-branch-is' realmente não funcionam, pois eles apresentam erros e basicamente interrompem toda a postagem (uma vez que está verificando o mestre e o desenvolvedor, ocorrerá um erro)
Phil
@ Phil Você ainda pode usar postmerge, mas agora está post-mergedentro da husky: {hooks:{}}configuração. Que problema você tem git-branch-is?
Anima-t3d 8/09/19
seria apenas um erro para mim em vez de executar. Não se preocupe, porém, acabei optando por esta opção: marketplace.visualstudio.com/…
Phil #
1
@ Phil obrigado pelo acompanhamento. Eu apenas tentei com a versão atualizada e não tenho erros, talvez algo esteja errado com o seu próprio comando pós-mesclagem.
Anima-t3d 9/09/19
5
Quero acrescentar um pouco de clareza às respostas que esta pergunta obteve.
Mesmo pensando que existem algumas respostas aqui que abordam adequadamente o problema e fornecem uma solução, elas não são as corretas. A resposta correta para esta pergunta é usarnpm version
Existe uma maneira de editar o arquivo package.json automaticamente?
Sim, o que você pode fazer para que isso aconteça é executar o npm versioncomando quando necessário, você pode ler mais sobre ele aqui na versão npm , mas o uso básico seria npm version patche incluiria a ordem do terceiro dígito em sua package.jsonversão (1.0. X )
Usar um gancho de pré-lançamento do git ajudaria?
Você pode configurar para executar o npm versioncomando no gancho de pré-lançamento, conforme necessário, mas isso depende se é disso que você precisa ou não no seu canal de CD / CI, mas sem o npm versioncomando, um git pre-releasegancho não pode fazer nada "facilmente" com opackage.json
A razão pela qual npm versioné a resposta correta é a seguinte:
Se o usuário estiver usando uma estrutura de pastas na qual package.jsonele está usando, npmse estiver usando, npmele terá acesso ao npm scripts.
Se ele tem acesso, npm scriptsele tem acesso ao npm versioncomando.
Usando esse comando, ele não precisa instalar mais nada em seu computador ou canal de CD / CI, o que a longo prazo reduzirá o esforço de manutenção do projeto e ajudará na instalação.
As outras respostas nas quais outras ferramentas são propostas estão incorretas.
gulp-bump funciona, mas requer outro pacote extra que pode criar problemas a longo prazo (ponto 3 da minha resposta)
grunt-bump funciona, mas requer outro pacote extra que pode criar problemas a longo prazo (ponto 3 da minha resposta)
Primeiro, você precisa entender as regras para atualizar o número da versão. Você pode ler mais sobre a versão semântica aqui.
Cada versão terá a versão xyz, onde será definida para finalidades diferentes, como mostrado abaixo.
x - major, faça isso quando houver grandes alterações e ocorrer uma grande discrepância de alterações.
y - menor, faça isso quando ocorrer uma nova funcionalidade ou aprimoramento.
z - patch, faça isso quando você tiver erros corrigidos ou reverter alterações na versão anterior.
Para executar os scripts, você pode defini-lo em seu package.json.
"script":{"buildmajor":"npm version major && ng build --prod","buildminor":"npm version minor && ng build --prod","buildpatch":"npm version patch && ng build --prod"}
No seu terminal, você só precisa executar o npm de acordo com suas necessidades, como
npm run buildpatch
Se executá-lo no git repo, a versão padrão do git-tag é verdadeira e, se você não quiser, pode adicionar o comando abaixo nos seus scripts:
--no-git-tag-version
por exemplo: "npm --no-git-tag-version version major && ng build --prod"
Eu criei uma ferramenta que pode realizar o controle de versão semântico automático com base nas tags nas mensagens de confirmação, conhecidas como tipos de alteração. Isso segue de perto a Convenção de Mensagem de Compromisso Angular, juntamente com a Especificação de Versão Semântica.
Você pode usar esta ferramenta para alterar automaticamente a versão no package.json usando a CLI do npm (isso é descrito aqui ).
Além disso, ele pode criar um log de alterações a partir dessas confirmações e também possui um menu (com um verificador ortográfico para mensagens de confirmação) para criar confirmações com base no tipo de alteração. Eu recomendo conferir e ler os documentos para ver tudo o que pode ser realizado com ele.
Eu escrevi a ferramenta porque não consegui encontrar nada que atendesse às minhas necessidades para o meu CICD Pipeline para automatizar o controle de versão semântico. Prefiro me concentrar no que são as mudanças reais do que na versão e é aí que minha ferramenta salva o dia.
Para mais informações sobre a justificativa da ferramenta, consulte isso .
Respostas:
npm version
provavelmente é a resposta correta. Só para dar uma alternativa, eu recomendo o grunhido . É mantido por um dos caras do angular.js.Uso:
Se você estiver usando o grunhido de qualquer maneira, pode ser a solução mais simples.
fonte
npm version
?npm --no-git-tag-version version patch
.Resposta correta
Para fazer isso, apenas
npm version patch
=)Minha antiga resposta
Não há
pre-release
gancho originalmente emgit
. Pelo menos,man githooks
não mostra isso.Se você estiver usando
git-extra
( https://github.com/visionmedia/git-extras ), por exemplo, poderá usar umpre-release
gancho implementado por ele, como você pode ver em https://github.com/visionmedia/ git-extras / blob / master / bin / git-release . É necessário apenas um.git/hook/pre-release.sh
arquivo executável que edite seupackage.json
arquivo. A confirmação, envio e marcação serão feitos pelogit release
comando.Se você não estiver usando nenhuma extensão
git
, poderá escrever um shell script (eu o nomeiogit-release.sh
) e, em seguida, aliasá-logit release
com algo como:git config --global alias.release '!sh path/to/pre-release.sh $1'
Você pode, então, usar o
git release 0.4
que será executadopath/to/pre-release.sh 0.4
. Seu script pode editarpackage.json
, criar a tag e enviá-la ao servidor.fonte
git release
não atualiza o package.json de acordo ... github.com/visionmedia/git-extras/issues/150 : D.git/hooks/pre-release.sh
contendo:echo -e "{\n\"version\": "$1"\n}" > package.json
e tente usargit release $version
npm version patch
ounpm version 0.3.1
vai resolvê-lo! Você poderia atualizar sua resposta de acordo? ty !!Isto é o que eu normalmente faço com meus projetos:
A primeira linha
npm version patch
,, aumentará a versão do patch em 1 (xx1 a xx2) empackage.json
. Em seguida, você adiciona todos os arquivos - incluindo ospackage.json
que foram modificados naquele momento. Em seguida, o habitualgit commit
egit push
, e, finalmente,npm publish
publicar o módulo.Espero que isto faça sentido...
Merc.
fonte
npm version patch
o próprio commit; no entanto, para enviar a tag para o github, acho que você também precisagit push --tags
.npm version patch
bate o número da versão e imediatamente confirma a alteraçãonpm version patch
não comete nada para mim.npm version
.Para fornecer uma abordagem mais atualizada.
package.json
Então você o executa:
Qual irá:
... executar testes ...
mude
package.json
para uma próxima versão secundária (por exemplo: 1.8.1 a 1.9.0)empurre suas mudanças
crie uma nova versão da tag git e
publique seu pacote npm.
--force
é mostrar quem é o chefe! Piadas à parte, consulte https://github.com/npm/npm/issues/8620fonte
"deploy-minor": "npm version minor --force -m \"version %s\""
isso tudo que você precisa lembrar énpm run deploy-minor
:)Como complemento,
npm version
você pode usar o--no-git-tag-version
sinalizador se desejar um aumento de versão, mas nenhuma tag ou uma nova confirmação:https://docs.npmjs.com/cli/version
fonte
Se você estiver usando fio, você pode usar
Isso incrementará a
package.json
versão por correção(0.0.x)
, confirmação e marcação com o formatov0.0.0
Da mesma forma, você pode encontrar a versão secundária ou secundária usando
--minor
ou--major
Ao pressionar para o git, certifique-se de também enviar as tags com
--follow-tags
Você também pode criar um script para ele
Basta executá-lo digitando
yarn release-it
fonte
Estou usando husky e git-branch-is :
A partir do husky v1 +:
Antes da V1 rouca:
Leia mais sobre a versão npm
Webpack ou Vue.js
Se você estiver usando o webpack ou o Vue.js, poderá exibi-lo na interface do usuário usando a versão Injetar automaticamente - plugin Webpack
NUXT
Em
nuxt.config.js
:Dentro do seu
template
por exemplo no rodapé:fonte
postmerge
, mas agora estápost-merge
dentro dahusky: {hooks:{}}
configuração. Que problema você temgit-branch-is
?Quero acrescentar um pouco de clareza às respostas que esta pergunta obteve.
Mesmo pensando que existem algumas respostas aqui que abordam adequadamente o problema e fornecem uma solução, elas não são as corretas. A resposta correta para esta pergunta é usar
npm version
Sim, o que você pode fazer para que isso aconteça é executar o
npm version
comando quando necessário, você pode ler mais sobre ele aqui na versão npm , mas o uso básico serianpm version patch
e incluiria a ordem do terceiro dígito em suapackage.json
versão (1.0. X )Você pode configurar para executar o
npm version
comando no gancho de pré-lançamento, conforme necessário, mas isso depende se é disso que você precisa ou não no seu canal de CD / CI, mas sem onpm version
comando, umgit pre-release
gancho não pode fazer nada "facilmente" com opackage.json
A razão pela qual
npm version
é a resposta correta é a seguinte:package.json
ele está usando,npm
se estiver usando,npm
ele terá acesso aonpm scripts
.npm scripts
ele tem acesso aonpm version
comando.As outras respostas nas quais outras ferramentas são propostas estão incorretas.
gulp-bump
funciona, mas requer outro pacote extra que pode criar problemas a longo prazo (ponto 3 da minha resposta)grunt-bump
funciona, mas requer outro pacote extra que pode criar problemas a longo prazo (ponto 3 da minha resposta)fonte
Primeiro, você precisa entender as regras para atualizar o número da versão. Você pode ler mais sobre a versão semântica aqui.
Cada versão terá a versão xyz, onde será definida para finalidades diferentes, como mostrado abaixo.
Para executar os scripts, você pode defini-lo em seu package.json.
No seu terminal, você só precisa executar o npm de acordo com suas necessidades, como
Se executá-lo no git repo, a versão padrão do git-tag é verdadeira e, se você não quiser, pode adicionar o comando abaixo nos seus scripts:
por exemplo:
"npm --no-git-tag-version version major && ng build --prod"
fonte
Eu criei uma ferramenta que pode realizar o controle de versão semântico automático com base nas tags nas mensagens de confirmação, conhecidas como tipos de alteração. Isso segue de perto a Convenção de Mensagem de Compromisso Angular, juntamente com a Especificação de Versão Semântica.
Você pode usar esta ferramenta para alterar automaticamente a versão no package.json usando a CLI do npm (isso é descrito aqui ).
Além disso, ele pode criar um log de alterações a partir dessas confirmações e também possui um menu (com um verificador ortográfico para mensagens de confirmação) para criar confirmações com base no tipo de alteração. Eu recomendo conferir e ler os documentos para ver tudo o que pode ser realizado com ele.
Eu escrevi a ferramenta porque não consegui encontrar nada que atendesse às minhas necessidades para o meu CICD Pipeline para automatizar o controle de versão semântico. Prefiro me concentrar no que são as mudanças reais do que na versão e é aí que minha ferramenta salva o dia.
Para mais informações sobre a justificativa da ferramenta, consulte isso .
fonte