UNPKG

@wgoo/cli

Version:

Wgoo Cli 是一个 React 组件库构建工具,通过 Wgoo Cli 可以快速搭建一套功能完备的 React 组件库。

75 lines (63 loc) 1.89 kB
const { join } = require('path'); const { ROOT } = require('../common/constant'); const { ora, slimPath } = require('../common/logger'); const { createWriteStream, readFileSync } = require('fs-extra'); const conventionalChangelog = require('conventional-changelog'); const DIST_FILE = join(ROOT, './changelog.generated.md'); const MAIN_TEMPLATE = join(__dirname, '../../template/changelog-main.hbs'); const HEADER_TEMPALTE = join(__dirname, '../../template/changelog-header.hbs'); const COMMIT_TEMPALTE = join(__dirname, '../../template/changelog-commit.hbs'); const mainTemplate = readFileSync(MAIN_TEMPLATE, 'utf-8'); const headerPartial = readFileSync(HEADER_TEMPALTE, 'utf-8'); const commitPartial = readFileSync(COMMIT_TEMPALTE, 'utf-8'); function formatType(type) { const MAP = { fix: 'Bug Fixes', feat: 'Feature', docs: 'Document', types: 'Types', }; return MAP[type] || type; } function transform(item) { if (item.type === 'chore' || item.type === 'test') { return null; } item.type = formatType(item.type); if (item.hash) { item.shortHash = item.hash.slice(0, 6); } if (item.references.length) { item.references.forEach((ref) => { if (ref.issue && item.subject) { item.subject = item.subject.replace(` (#${ref.issue})`, ''); } }); } return item; } async function changelog() { const spinner = ora('Generating changelog...').start(); return new Promise(resolve => { conventionalChangelog( { preset: 'angular', }, null, null, null, { mainTemplate, headerPartial, commitPartial, transform, } ) .pipe(createWriteStream(DIST_FILE)) .on('close', () => { spinner.succeed(`Changelog generated at ${slimPath(DIST_FILE)}`); resolve(); }); }); } module.exports = { changelog }