npm用git标签发布

时间:2019-08-06 16:59:27

标签: git npm continuous-integration npm-publish

我试图根据git信息找到一种发布npm人工制品的解决方案。

我查看了npm versionrelease-it,但是这些工具自动执行git操作(commit / push)以在npm artefact版本和git之间建立链接,但它无法从git获取信息。

我想发布带有源代码git标识的npm人工制品,类似git describe --tags --always的结果。 这样,可以很容易地在git / npm之间建立链接,并且唯一的git操作是标记,连续集成管道可以通过npm publish发布工件。

git-tag-version似乎是工作的一部分,但没有与人工制品版本建立链接。

我可能会尝试以这种方式进行操作,但是npm中可能有一些功能可以更轻松地执行此操作?

1 个答案:

答案 0 :(得分:0)

可能的解决方案是使用git-repo-infonpm version

使用:安装开发包:

npm i --save-dev git-repo-info npm

添加prepare.js脚本:

// compute version
var getRepoInfo = require('git-repo-info');
var info = getRepoInfo();
var version="1.0.0-"+info.branch+"."+info.abbreviatedSha
if (info.tag) {
  version=info.tag;
} else if (info.lastTag) {
  version=info.lastTag;
  if (info.commitsSinceLastTag) version+="-"+info.commitsSinceLastTag;
}

// update version
var npm = require('npm');
npm.load({}, function (err) {
        npm.config.set('git-tag-version',false)
        npm.config.set('allow-same-version',true)
        npm.commands.version([version], (err) => {
                if (err) console.log(err)
        });
});

并将此脚本链接到package.json中的预发布阶段

  "scripts": {
    "prepare": "node prepare.js"
  },

然后可以忘记package.json的版本,构建包和发布可以通过以下方式完成:

npm publish

这将根据git信息计算版本,构建程序包并发布。

prepare.js脚本中,npm标识符的计算可以使用其他git信息。