自动更新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-extra
( https://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 commit
和git 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"
这将会:
-
运行testing…
-
改变你的
package.json
到下一个小版本(例如:1.8.1到1.9.0) -
推送您的更改
-
创build一个新的git标签发布和
-
发布你的npm包。
--force
是显示谁是老板! 笑话一边看https://github.com/npm/npm/issues/8620
作为npm version
的补充,你可以使用--no-git-tag-version
标志,如果你想要一个版本caching但是没有标签或者一个新的提交:
npm --no-git-tag-version version patch