在我做一个小的发布和标记它之前,我想更新这个包。Json来反映程序的新版本。

是否有编辑文件包的方法。json自动吗?

使用git预发布钩子会有帮助吗?


当前回答

我想澄清一下这个问题的答案。

尽管这里有一些答案可以正确地解决问题并提供解决方案,但它们并不是正确的答案。这个问题的正确答案是使用npm版本

是否有编辑文件包的方法。json自动吗?

是的,你能做的就是在需要的时候运行npm version命令,你可以在这里阅读更多关于它的信息,但基本用法是npm version patch,它会在你的包上添加第三位数字。json版本(1.0.X)

使用git预发布钩子会有帮助吗?

你可以根据需要配置在预发布钩子上运行npm version命令,但这取决于你在CD/CI管道中是否需要它,但如果没有npm version命令,git预发布钩子无法“轻松”地使用package.json

npm版本是正确答案的原因如下:

如果用户正在使用包含包的文件夹结构。如果他在使用NPM,他就可以访问NPM脚本。 如果他能访问npm脚本,他就能访问npm版本命令。 使用这个命令,他不需要在他的计算机或CD/CI管道中安装更多的东西,从长远来看,这将减少项目的可维护性工作,并将有助于设置

提出其他工具的其他答案是不正确的。

Gulp-bump有效,但需要另一个额外的包,从长期来看可能会产生问题(我的答案的第3点)

Grunt-bump有效,但需要另一个额外的包,这可能会在长期产生问题(我的回答的第3点)

其他回答

以防万一,如果你想用npm package 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);
}

包中。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"
  }
}

只需要将major, minor, patch参数传递给NPM运行版本。默认为补丁。

例子: NPM运行版本或NPM运行版本补丁或NPM运行版本小或NPM运行版本大

去回购

我的构建和发布脚本运行在一个无法访问git的docker映像中,所以我想要一些不修改我的存储库,但能够发布自动递增版本的方法。所以我在预发布脚本中添加了这个:

npm view `sed -nr 's/"name": "([^"]+).*/\1/p' package.json` version | awk -F'.' '{ cmd = "npm version v" $1 "." $2 "." $3+1 " --force --no-git-tag-version"; system(cmd)}'

它的作用:

用sed读取包名 要求最新发布的版本与NPM查看版本 调用NPM version——force——no-git-tag-version,其中version取自(2)并加1

有很多方法可以改进它,但至少它是有效的,而且是普遍的。

正确的答案

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

我的老答案

git中没有预先发布钩子。至少,man githooks没有表现出来。

例如,如果您正在使用git-extra (https://github.com/visionmedia/git-extras),您可以使用它实现的预发布钩子,如您可以在https://github.com/visionmedia/git-extras/blob/master/bin/git-release中看到的那样。它只需要一个.git/hook/pre-release.sh可执行文件来编辑你的包。json文件。提交、推送和标记将由git release命令完成。

如果你没有为git使用任何扩展,你可以写一个shell脚本(我将它命名为git-release.sh),然后你可以用这样的东西来别名git release:

Git配置——全局别名。释放”!Sh path/to/pre-release.sh $1'

你可以使用git release 0.4,它将执行路径/到/pre-release.sh 0.4。你的脚本可以编辑包。Json,创建标签并将其推送到服务器。

你可以使用版本选择包:

npm i -D version-select
{
    "name": "test",
    "version": "1.0.0",
    "scripts": {
        "version-select": "version-select"
    },
    "devDependencies": {
        "version-select": "^1.0.13"
    }
}

阅读更多

这是我通常对我的项目所做的:

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

第一行,npm version patch,会将package.json中的补丁版本增加1 (x.x.1到x.x.2)。然后添加所有文件——包括package。Json,此时已被修改。 然后,通常的git commit和git push,最后是npm publish来发布模块。

我希望这是有意义的…

芝加哥商业交易所。