我试图根据git信息找到一种发布npm人工制品的解决方案。
我查看了npm version和release-it,但是这些工具自动执行git操作(commit / push)以在npm artefact版本和git之间建立链接,但它无法从git获取信息。
我想发布带有源代码git标识的npm人工制品,类似git describe --tags --always
的结果。
这样,可以很容易地在git / npm之间建立链接,并且唯一的git操作是标记,连续集成管道可以通过npm publish
发布工件。
git-tag-version似乎是工作的一部分,但没有与人工制品版本建立链接。
我可能会尝试以这种方式进行操作,但是npm中可能有一些功能可以更轻松地执行此操作?
答案 0 :(得分:0)
可能的解决方案是使用git-repo-info和npm 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信息。