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

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

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


当前回答

我最终编写了这个解决方案(将其添加到package.json)脚本。Yarn具有非常相似的功能。

"postversion": "git add package.json && git commit -m $npm_package_version && git tag $npm_package_version HEAD && git push --tags"

它更新版本字段,创建一个新的提交包。Json,提交版本名,标记它并推送到分支。

然后,你可以运行npm version patch | npm version minor | npm version major来创建一个带有标签的版本化提交。

其他回答

首先,您需要了解升级版本号的规则。你可以在这里阅读更多关于语义版本的信息。

每个版本都有x.y.z版本,它为不同的目的定义,如下所示。

X大调,当你有很大的变化时 发生了不一致的变化。 Y小调,当你有 出现了新的功能或增强。 Z - patch, up this when 您修复了错误或恢复了早期版本上的更改。

要运行脚本,可以在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"

我用的是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自动化语义版本控制需求的工具。我宁愿关注实际的更改是什么,而不是版本应该是什么,这就是我的工具解决问题的地方。

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

作为npm版本的一个补充,如果你想要一个版本碰撞但没有标记或一个新的提交,你可以使用——no-git-tag-version标记:

npm --no-git-tag-version version patch

https://docs.npmjs.com/cli/version

我知道这是一个老问题,但我希望这种方法可以帮助某人,以防你想自动更新两个包。Json放在不同的位置,以便使用相同的版本。

首先,把这些线添加到你的主包中。Json脚本部分:

"new-version": "npm version --git-tag-version=false",
"version": "echo 'starting postversion script'",
"postversion": "LAST_VERSION=$(npm pkg get version | sed 's/\"//g') && echo $LAST_VERSION && cd projects/ngx-timeline && sed -i.bak \"s/\\\"version\\\": \\\"[0-9]\\.[0-9]\\.[0-9]\\\"/\\\"version\\\": \\\"$LAST_VERSION\\\"/g\" package.json && rm package.json.bak && git commit -am \"Release $LAST_VERSION\" && git tag v$LAST_VERSION"

然后运行npm run new-version minor,

第一个脚本将运行带有minor和避免标记的选项的NPM版本 版本脚本将在默认命令(在我的例子中只是一个echo)之后运行您需要的命令。 在带有sed的后版本脚本中,我可以覆盖子包中的版本。Json,修改提交(默认情况下版本脚本已经创建了一个提交),然后创建一个标签。