๐Ÿ“ฆ Turbo87 / auto-dist-tag

๐Ÿ“„ auto-dist-tag.js ยท 29 lines
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;
};