gus*_*tkg 141
正确答案
为此,只需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
哪个将执行path/to/pre-release.sh 0.4
.您的脚本可以编辑package.json
,创建标记并将其推送到服务器.
zem*_*rco 84
npm version
可能是正确的答案.只是为了给出一个替代方案我推荐grunt-bump.它由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
Run Code Online (Sandbox Code Playgroud)
无论如何,如果你正在使用grunt,它可能是最简单的解决方案.
Mer*_*erc 62
这就是我通常对我的项目所做的事情:
npm version patch
git add *;
git commit -m "Commit message"
git push
npm publish
Run Code Online (Sandbox Code Playgroud)
第一行,npm version patch
将补丁版本增加1(xx1到xx2)in package.json
.然后添加所有文件 - 包括package.json
此时已修改的文件.然后,通常git commit
和git push
,最后npm publish
发布模块.
我希望这是有道理的...
芝加哥商业交易所.
Jon*_*ker 25
提供更新的方法.
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"
}
Run Code Online (Sandbox Code Playgroud)
然后你运行它:
npm version minor --force -m "Some message to commit"
Run Code Online (Sandbox Code Playgroud)
哪个会:
...运行测试......
将您更改package.json
为下一个次要版本(例如:1.8.1至1.9.0)
推动你的改变
创建一个新的git标签发布和
发布您的npm包.
--force
是为了表明谁是老板!除了笑话,请访问https://github.com/npm/npm/issues/8620
Tie*_*eme 18
作为除了npm version
可以使用--no-git-tag-version
,如果你想有一个版本的凸起,但没有标签或新提交标志:
npm --no-git-tag-version version patch
Run Code Online (Sandbox Code Playgroud)
https://docs.npmjs.com/cli/version
Dmi*_*nko 12
您可以使用该version-select
包:
npm i -D version-select
Run Code Online (Sandbox Code Playgroud)
{
"name": "test",
"version": "1.0.0",
"scripts": {
"version-select": "version-select"
},
"devDependencies": {
"version-select": "^1.0.13"
}
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*Kim 11
如果您使用纱线,您可以使用
yarn version --patch
Run Code Online (Sandbox Code Playgroud)
这将package.json
通过补丁(0.0.x)
,提交和标记格式来增加版本v0.0.0
同样,您可以使用--minor
或删除次要版本或主要版本--major
当推送到git时,确保你也推动标签 --follow-tags
git push --follow-tags
Run Code Online (Sandbox Code Playgroud)
您也可以为它创建脚本
"release-it": "yarn version --patch && git push --follow-tags"
Run Code Online (Sandbox Code Playgroud)
只需输入即可运行 yarn release-it
Ale*_*les 10
我想为这个问题得到的答案增加一些清晰度。
即使认为这里有一些答案可以正确解决问题并提供解决方案,但它们并不是正确的。这个问题的正确答案是使用npm version
有没有办法自动编辑文件 package.json ?
是的,您可以做的是npm version
在需要时运行该命令,您可以在此处阅读有关它的更多信息npm version,但基本用法是npm version patch
它会在您的package.json
版本 (1.0. X )上添加第 3 位数字顺序
使用 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"
}
Run Code Online (Sandbox Code Playgroud)
在您的终端中,您只需要根据您的需要运行 npm,例如
npm run buildpatch
Run Code Online (Sandbox Code Playgroud)
如果在 git repo 中运行它,默认的 git-tag-version 为 true,如果您不想这样做,您可以将以下命令添加到您的脚本中:
--no-git-tag-version
Run Code Online (Sandbox Code Playgroud)
例如: "npm --no-git-tag-version version major && ng build --prod"
以防万一您想使用 npm 包semver
链接来执行此操作
let fs = require('fs');
let semver = require('semver');
if (fs.existsSync('./package.json')) {
var package = require('./package.json');
let currentVersion = package.version;
let type = process.argv[2];
if (!['major', 'minor', 'patch'].includes(type)) {
type = 'patch';
}
let newVersion = semver.inc(package.version, type);
package.version = newVersion;
fs.writeFileSync('./package.json', JSON.stringify(package, null, 2));
console.log('Version updated', currentVersion, '=>', newVersion);
}
Run Code Online (Sandbox Code Playgroud)
package.json
应该看起来像,
{
"name": "versioning",
"version": "0.0.0",
"description": "Update version in package.json using npm script",
"main": "version.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"version": "node version.js"
},
"author": "Bhadresh Arya",
"license": "ISC",
"dependencies": {
"semver": "^7.3.2"
}
}
Run Code Online (Sandbox Code Playgroud)
只需通过major
, minor
,patch
与 进行争论npm run version
。默认值为patch
.
示例:
npm run version
或npm run verison patch
或npm run verison minor
或npm run version major
我正在使用沙哑和git-branch-is:
从赫斯基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)",
}
}
}
Run Code Online (Sandbox Code Playgroud)
在赫斯基V1之前:
"scripts": {
...
"postmerge": "(git-branch-is master && npm version minor ||
(git-branch-is dev && npm --no-git-tag-version version patch)",
...
},
Run Code Online (Sandbox Code Playgroud)
阅读更多有关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
},
}),
]
},
}
Run Code Online (Sandbox Code Playgroud)
在您template
的页脚中,例如:
<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
93569 次 |
最近记录: |