在做一个小发布并将其标记之前,我想更新package.json以反映该程序的新版本。
有没有一种方法可以package.json
自动编辑文件?
需要git pre-release hook
帮助吗?
在做一个小发布并将其标记之前,我想更新package.json以反映该程序的新版本。
有没有一种方法可以package.json
自动编辑文件?
需要git pre-release hook
帮助吗?
Answers:
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,那可能是最简单的解决方案。
npm version
什么好处?
npm --no-git-tag-version version patch
。
正确答案
为此,只需npm version patch
=)
我的老答案
pre-release
最初没有挂钩git
。至少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 release
命令完成。
如果您没有使用的扩展名git
,则可以编写一个shell脚本(我将其命名为git-release.sh
),然后可以git release
使用类似以下内容的别名:
git config --global alias.release '!sh path/to/pre-release.sh $1'
然后,您可以使用git release 0.4
which将执行path/to/pre-release.sh 0.4
。您的脚本可以编辑package.json
,创建标签并将其推送到服务器。
git release
不相应地更新的package.json ... github.com/visionmedia/git-extras/issues/150 d:
.git/hooks/pre-release.sh
包含:echo -e "{\n\"version\": "$1"\n}" > package.json
并尝试使用git release $version
这通常是我对项目所做的:
npm version patch
git add *;
git commit -m "Commit message"
git push
npm publish
第一行将npm version patch
在中将修补程序版本增加1(从xx1到xx2)package.json
。然后添加所有文件-包括package.json
当时已修改的文件。然后,通常使用git commit
和git push
,最后npm publish
发布该模块。
我希望这是有道理的...
Merc。
npm version patch
提交本身是否完成?但是,要将标签推送到github,我认为您也需要这样做git push --tags
。
npm version patch
版本号并立即提交更改
npm version patch
不会为我做任何事情。
npm version
。
给出最新的方法。
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
"deploy-minor": "npm version minor --force -m \"version %s\""
这样您需要记住的就是npm run deploy-minor
:)
另外,如果您想要版本变更但不需要标签或新提交,则npm version
可以使用该--no-git-tag-version
标志:
npm --no-git-tag-version version patch
我正在使用沙哑和git-branch-is:
从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)",
}
}
}
在赫斯基V1之前:
"scripts": {
...
"postmerge": "(git-branch-is master && npm version minor ||
(git-branch-is dev && npm --no-git-tag-version version patch)",
...
},
进一步了解npm版本
Webpack或Vue.js
如果您使用的是webpack或Vue.js,则可以使用自动插入版本-Webpack插件在用户界面中显示此内容
NUXT
在nuxt.config.js
:
var WebpackAutoInject = require('webpack-auto-inject-version');
module.exports = {
build: {
plugins: [
new WebpackAutoInject({
// options
// example:
components: {
InjectAsComment: false
},
}),
]
},
}
在您template
的页脚内,例如:
<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>
postmerge
,但是它现在post-merge
位于husky: {hooks:{}}
配置文件中。您有什么问题git-branch-is
?
我想为这个问题得到的答案增加一些清晰度。
即使认为这里有一些答案可以正确解决问题并提供解决方案,也不是正确的答案。这个问题的正确答案是使用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点)
首先,您需要了解升级版本号的规则。您可以在此处阅读有关语义版本的更多信息。
每个版本都有xyz版本,其中定义了不同的用途,如下所示。
要运行脚本,可以在package.json中定义它。
"script": {
"buildmajor": "npm version major && ng build --prod",
"buildminor": "npm version minor && ng build --prod",
"buildpatch": "npm version patch && ng build --prod"
}
在您的终端中,您只需要根据需要运行npm
npm run buildpatch
如果在git repo中运行它,则默认的git-tag-version为true;如果您不想这样做,则可以在脚本中添加以下命令:
--no-git-tag-version
例如: "npm --no-git-tag-version version major && ng build --prod"
我创建了一个工具,该工具可以基于提交消息中的标记(称为更改类型)来完成自动语义版本控制。这紧随Angular Commit消息约定以及语义版本控制规范。
您可以使用此工具来使用故宫CLI中的package.json自动更改版本(这被描述在这里)。
此外,它可以根据这些提交创建一个更改日志,并且还具有一个菜单(带有用于提交消息的拼写检查器),用于根据更改类型创建提交。我强烈建议您检查一下并阅读文档,以查看可以完成的所有操作。
我写这个工具是因为找不到适合我的CICD管道自动化语义版本控制需求的东西。我宁愿把重点放在实际的更改上,而不是版本上,这是我的工具节省时间的地方。
有关该工具原理的更多信息,请参见this。