在做一个小版本发布并标记它之前,我想更新package.json以反映该程序的新版本。
有没有一种方法可以package.json
自动编辑文件?
需要git pre-release hook
帮助吗?
在做一个小版本发布并标记它之前,我想更新package.json以反映该程序的新版本。
有没有一种方法可以package.json
自动编辑文件?
需要git pre-release hook
帮助吗?
我创建了一个工具,可以根据提交消息中的标记(称为更改类型)完成自动语义版本控制。这紧随Angular Commit消息约定以及语义版本控制规范。
您可以使用此工具来使用故宫CLI中的package.json自动更改版本(这被描述在这里)。
此外,它可以根据这些提交创建一个更改日志,并且还具有一个菜单(带有用于提交消息的拼写检查器),用于根据更改类型创建提交。我强烈建议您检查一下并阅读文档,以查看可以完成的所有操作。
我写这个工具是因为找不到适合我的CICD Pipeline自动进行语义版本控制的需求的东西。我宁愿将重点放在实际的更改上,而不是在版本上,这是我的工具节省时间的地方。
有关该工具原理的更多信息,请参见this。
我想为这个问题得到的答案增加一些清晰度。
即使认为这里有一些答案可以正确解决问题并提供解决方案,也不是正确的答案。这个问题的正确答案是使用npm version
有没有一种方法可以自动编辑文件package.json?
是的,你可以做什么来实现这一目标,即运行npm version
在需要时命令,你可以阅读更多关于它在这里NPM版本,但基本的用法是npm version patch
,它会在您添加的第三个数字顺序package.json
版本(1.0 X)
使用git pre-release hook有帮助吗?
您可以根据需要配置npm version
在预发行版本的挂钩上运行命令,但这取决于CD / CI管道中是否需要此npm version
命令,但是如果没有该命令,git pre-release
挂钩将无法“轻松”执行任何操作与package.json
npm version
正确答案的原因如下:
package.json
则npm
如果他正在使用npm
,则可以访问npm scripts
。npm scripts
他有权访问npm version
命令。建议使用其他工具的其他答案是错误的。
gulp-bump
可行,但需要另一个额外的程序包,这可能会长期产生问题(我的答案的第3点)
grunt-bump
可行,但需要另一个额外的程序包,这可能会长期产生问题(我的答案的第3点)
给出最新的方法。
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"
这将:
...运行测试...
将您的package.json
版本更改为下一个次要版本(例如:1.8.1至1.9.0)
推动你的改变
创建一个新的git tag版本,
发布您的npm软件包。
--force
是为了表明谁是老板!除了笑话,请参阅https://github.com/npm/npm/issues/8620
如果您使用纱线,则可以使用
yarn version --patch
这将package.json
通过patch更新版本(0.0.x)
,提交并用格式标记它v0.0.0
同样,您可以使用--minor
或更改次要或主要版本--major
推送到git时,请确保您也使用 --follow-tags
git push --follow-tags
您也可以为其创建脚本
"release-it": "yarn version --patch && git push --follow-tags"
只需输入以下内容即可运行 yarn release-it
另外,如果您想要版本变更但不添加标签或提交新内容,则npm version
可以使用该--no-git-tag-version
标志:
npm --no-git-tag-version version patch
这通常是我对项目所做的:
npm version patch
git add *;
git commit -m "Commit message"
git push
npm publish
The first line, npm version patch
, will increase the patch version by 1 (x.x.1 to x.x.2) in package.json
. Then you add all files -- including package.json
which at that point has been modified.
Then, the usual git commit
and git push
, and finally npm publish
to publish the module.
I hope this makes sense...
Merc.
npm version
可能是正确的答案。只给一个替代我建议咕噜凸点。它由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
如果仍然使用grunt,那可能是最简单的解决方案。
首先,您需要了解升级版本号的规则。您可以在此处阅读有关语义版本的更多信息。
每个版本都有xyz版本,其中定义了不同的用途,如下所示。
要运行脚本,可以在package.json中定义它。
在您的终端中,您只需要根据需要运行npm
如果在git repo中运行它,则默认的git-tag-version为true;如果您不想这样做,则可以在脚本中添加以下命令:
例如:
"npm --no-git-tag-version version major && ng build --prod"