1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29'use strict';
const fs = require('fs-extra');
const getDistTags = require('./fetch-dist-tags');
const calcDistTag = require('./calc-dist-tag');
module.exports = async function autoDistTag(cwd, options) {
const { pkgUp } = await import('pkg-up');
let pkgPath = await pkgUp(cwd);
let pkg = await fs.readJson(pkgPath);
let tags = await getDistTags(pkg.name);
let tag = await calcDistTag(pkg.version, tags);
if (
options && options.write &&
// skip writing to `package.json if an explicit publishConfig.tag is set
!('publishConfig' in pkg && 'tag' in pkg.publishConfig) &&
// skip writing to `package.json if the calculated tag is "latest" because it's the default anyway
tag !== 'latest'
) {
pkg.publishConfig = pkg.publishConfig || {};
pkg.publishConfig.tag = tag;
fs.writeJson(pkgPath, pkg, {spaces: 2});
}
return tag;
};