自动更新package.json版本

在我做一个小的发布和标记之前,我想更新package.json以反映该程序的新版本。

有没有办法自动编辑文件package.json

会使用git pre-release hook吗?

npm version可能是正确的答案。 只是为了给一个替代品,我build议咕噜咕噜 。 它由angular.js中的一个人维护。

用法:

 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 

如果你正在使用咕噜声,这可能是最简单的解决scheme。

正确答案

要做到这一点,只是npm version patch =)

我的旧回答

git没有pre-release钩子。 至less, man githooks不显示它。

例如,如果您使用的是git-extrahttps://github.com/visionmedia/git-extras ),则可以使用由其实现的pre-release挂钩,如您在https://所示github.com/visionmedia/git-extras/blob/master/bin/git-release 。 只需要一个.git/hook/pre-release.sh你的package.json文件的.git/hook/pre-release.sh可执行文件。 提交,推送和标记将由git release命令完成。

如果你没有使用任何扩展名为git ,你可以编写一个shell脚本(我将它命名为git-release.sh ),并且可以将它别名为git release

git config --global alias.release '!sh path/to/pre-release.sh $1'

你可以,比使用git release 0.4将执行path/to/pre-release.sh 0.4 。 您的脚本可以编辑package.json ,创build标签并将其推送到服务器。

这是我通常对我的项目做的事情:

 npm version patch git add *; git commit -m "Commit message" git push npm publish 

第一行npm version patch将在package.json中将补丁版本增加1(xx1到xx2)。 然后你添加所有的文件 – 包括在那个点上已经被修改的package.json 。 然后,通常的git commitgit push ,最后npm publish来发布模块。

我希望这是有道理的…

芝加哥商业交易所。

给一个更新的方法。

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" } 

然后你运行它:

 npm version minor --force -m "Some message to commit" 

这将会:

  1. 运行testing…

  2. 改变你的package.json到下一个小版本(例如:1.8.1到1.9.0)

  3. 推送您的更改

  4. 创build一个新的git标签发布和

  5. 发布你的npm包。

--force是显示谁是老板! 笑话一边看https://github.com/npm/npm/issues/8620

作为npm version的补充,你可以使用--no-git-tag-version标志,如果你想要一个版本caching但是没有标签或者一个新的提交:

 npm --no-git-tag-version version patch 

https://docs.npmjs.com/cli/version