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

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

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


当前回答

我创建了一个工具,可以根据提交消息中的标记(称为更改类型)完成自动语义版本控制。这紧跟Angular提交消息约定和语义版本规范。

您可以使用此工具自动更改包中的版本。json使用npm CLI(这里描述)。

此外,它可以从这些提交创建变更日志,还提供了一个菜单(带有提交消息的拼写检查器),用于根据更改类型创建提交。我强烈建议你检查一下,阅读一下文档,看看用它可以完成的所有事情。

我编写了这个工具,因为我找不到任何可以满足CICD Pipeline自动化语义版本控制需求的工具。我宁愿关注实际的更改是什么,而不是版本应该是什么,这就是我的工具解决问题的地方。

有关该工具基本原理的更多信息,请参见此。

其他回答

你可以使用版本选择包:

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

阅读更多

以防万一,如果你想用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运行版本大

去回购

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

尽管这里有一些答案可以正确地解决问题并提供解决方案,但它们并不是正确的答案。这个问题的正确答案是使用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点)

我用的是husky和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)",
    }
  }
}

在husky 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,你可以在UI中使用自动注入版本- webpack插件来显示它

NUXT

在nuxt.config.js:

var WebpackAutoInject = require('webpack-auto-inject-version');

module.exports = {
  build: {
    plugins: [
      new WebpackAutoInject({
        // options
        // example:
        components: {
          InjectAsComment: false
        },
      }),
    ]
  },
}

例如在模板的页脚中:

<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>

我创建了一个工具,可以根据提交消息中的标记(称为更改类型)完成自动语义版本控制。这紧跟Angular提交消息约定和语义版本规范。

您可以使用此工具自动更改包中的版本。json使用npm CLI(这里描述)。

此外,它可以从这些提交创建变更日志,还提供了一个菜单(带有提交消息的拼写检查器),用于根据更改类型创建提交。我强烈建议你检查一下,阅读一下文档,看看用它可以完成的所有事情。

我编写了这个工具,因为我找不到任何可以满足CICD Pipeline自动化语义版本控制需求的工具。我宁愿关注实际的更改是什么,而不是版本应该是什么,这就是我的工具解决问题的地方。

有关该工具基本原理的更多信息,请参见此。