build: generate changelog as part of staging script (#14250)

* Converts the changelog script into plain TypeScript. This makes it easier to integrate it into the _interactive_ staging script
* Fixes that the "Is this is a pre-release" prompt is not returning a boolean.
* No longer runs the staging script with Bazel because `ts-node` is more convenient and also we can be more context-aware (e.g. paths)
This commit is contained in:
Paul Gschwendtner
2018-11-27 02:17:02 +01:00
committed by Jeremy Elbourn
parent 42681ee254
commit 325b6400d0
9 changed files with 203 additions and 275 deletions
+3 -3
View File
@@ -23,7 +23,7 @@
"api": "gulp api-docs",
"breaking-changes": "gulp breaking-changes",
"gulp": "gulp",
"stage-release": "bash ./tools/release/stage-release-bin.sh",
"stage-release": "ts-node --project tools/release/ tools/release/stage-release.ts",
"preinstall": "node ./tools/npm/check-npm.js"
},
"version": "7.1.0",
@@ -78,20 +78,19 @@
"axe-webdriverjs": "^1.1.1",
"chalk": "^1.1.3",
"codelyzer": "^4.5.0",
"conventional-changelog": "^3.0.5",
"dgeni": "^0.4.10",
"dgeni-packages": "^0.26.12",
"firebase": "^5.5.2",
"firebase-admin": "^5.0.0",
"firebase-tools": "^4.1.0",
"fs-extra": "^3.0.1",
"git-semver-tags": "^2.0.0",
"glob": "^7.1.2",
"gulp": "^3.9.1",
"gulp-clean": "^0.3.2",
"gulp-clean-css": "^3.3.1",
"gulp-cli": "^2.0.1",
"gulp-connect": "^5.0.0",
"gulp-conventional-changelog": "^1.1.3",
"gulp-dom": "^0.9.17",
"gulp-flatten": "^0.3.1",
"gulp-highlight-files": "^0.0.5",
@@ -117,6 +116,7 @@
"karma-sourcemap-loader": "^0.3.7",
"magic-string": "^0.22.4",
"marked": "^0.5.1",
"merge2": "^1.2.3",
"minimatch": "^3.0.4",
"minimist": "^1.2.0",
"mock-fs": "^4.7.0",
-1
View File
@@ -17,7 +17,6 @@ createPackageBuildTasks(momentAdapterPackage);
import './tasks/aot';
import './tasks/breaking-changes';
import './tasks/changelog';
import './tasks/ci';
import './tasks/clean';
import './tasks/default';
-99
View File
@@ -1,99 +0,0 @@
import {grey, red, yellow} from 'chalk';
import {readFileSync} from 'fs';
import {dest, src, task} from 'gulp';
import {prompt} from 'inquirer';
import {buildConfig} from 'material2-build-tools';
import {join} from 'path';
// This imports lack of type definitions.
const gulpChangelog = require('gulp-conventional-changelog');
const gitSemverTags = require('git-semver-tags');
/** Path to the changelog markdown file of the project. */
const changelogFile = join(buildConfig.projectDir, 'CHANGELOG.md');
/** Default changelog options that are passed to gulp-conventional-changelog. */
const changelogOptions = { preset: 'angular' };
/** Task that generates a new changelog section from the latest tag to HEAD. */
task('changelog', async () => {
// Show the instructions for the changelog generation.
showChangelogInstructions();
// Cancel the generation when the latest tag is the same as the version from the "package.json".
if (await getLatestSemverTag() === buildConfig.projectVersion) {
console.error(red('Warning: Changelog won\'t change because the "package.json" version is ' +
'equal to the latest Git tag.\n'));
return;
}
const {releaseName} = await prompt<{releaseName: string}>({
type: 'text',
name: 'releaseName',
message: 'What should be the name of the release?'
});
return src(changelogFile)
.pipe(gulpChangelog(changelogOptions, {title: releaseName}, null, null,
createDedupeWriterOptions()))
.pipe(dest('./'));
});
/** Task that re-generates the full changelog. */
task('changelog:full', () => {
return src(changelogFile)
.pipe(gulpChangelog({ ...changelogOptions, releaseCount: 0 }))
.pipe(dest('./'));
});
/** Prints a message that gives instructions about generating a changelog section. */
function showChangelogInstructions() {
console.info(`
${yellow('Changelog Instructions')}
When running this command, the changelog from the latest tag to HEAD will be generated.
The name of the new changelog section will be taken from the "package.json" version.
The recommended steps when creating a new changelog section:
1. Bump the version in the "package.json"
2. Run the changelog gulp task
3. Tweak the changelog manually.
`);
}
/** Returns the latest Semver Tag from the project Git repository */
function getLatestSemverTag(): Promise<string> {
return new Promise((resolve, reject) => {
return gitSemverTags((err: Error, tags: string[]) => err ? reject(err) : resolve(tags[0]));
});
}
/**
* Creates changelog writer options which ensure that commits are not showing up multiple times.
*
* Commits can show up multiple times, if a changelog has been generated on a publish branch
* and has been copied over to "master". In that case, the changelog will already contain the
* commits that have been cherry-picked into the publish branch. These shouldn't be added twice.
*/
function createDedupeWriterOptions() {
const previousContent = readFileSync(changelogFile, 'utf8');
return {
// Change writer option that can be used to modify the content of a new changelog section.
// See: conventional-changelog/tree/master/packages/conventional-changelog-writer
finalizeContext: (context: any) => {
context.commitGroups.forEach((group: any) => {
group.commits = group.commits.filter((commit: any) => {
// Note that we cannot compare the SHA's because the commits will have a different SHA
// if they are being cherry-picked into a different branch.
if (previousContent.includes(commit.header)) {
console.log(grey(`Skipping: "${commit.header}" (${commit.hash})`));
return false;
}
return true;
});
});
return context;
}
};
}
-25
View File
@@ -1,25 +0,0 @@
package(default_visibility=["//visibility:public"])
load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary")
load("//tools:defaults.bzl", "ts_library")
ts_library(
name = "release-sources",
srcs = glob(["**/*.ts"]),
deps = [
"@matdeps//@types/node",
"@matdeps//@types/inquirer",
"@matdeps//chalk",
"@matdeps//inquirer"
],
tsconfig = ":tsconfig.json"
)
nodejs_binary(
name = "stage-release",
data = [
"@matdeps//source-map-support",
":release-sources",
],
entry_point = "angular_material/tools/release/stage-release.js",
)
+98
View File
@@ -0,0 +1,98 @@
import {green, grey} from 'chalk';
import {createReadStream, createWriteStream, readFileSync} from 'fs';
import {prompt} from 'inquirer';
import {join} from 'path';
import {Readable} from 'stream';
// These imports lack type definitions.
const conventionalChangelog = require('conventional-changelog');
const merge2 = require('merge2');
/** Prompts for a changelog release name and prepends the new changelog. */
export async function promptAndGenerateChangelog(changelogPath: string) {
const releaseName = await promptChangelogReleaseName();
await prependChangelogFromLatestTag(changelogPath, releaseName);
}
/**
* Writes the changelog from the latest Semver tag to the current HEAD.
* @param changelogPath Path to the changelog file.
* @param releaseName Name of the release that should show up in the changelog.
*/
export async function prependChangelogFromLatestTag(changelogPath: string, releaseName: string) {
const outputStream: Readable = conventionalChangelog(
/* core options */ {preset: 'angular'},
/* context options */ {title: releaseName},
/* raw-commits options */ null,
/* commit parser options */ null,
/* writer options */ createDedupeWriterOptions(changelogPath));
// Stream for reading the existing changelog. This is necessary because we want to
// actually prepend the new changelog to the existing one.
const previousChangelogStream = createReadStream(changelogPath);
return new Promise((resolve, reject) => {
// Sequentially merge the changelog output and the previous changelog stream, so that
// the new changelog section comes before the existing versions. Afterwards, pipe into the
// changelog file, so that the changes are reflected on file system.
const mergedCompleteChangelog = merge2(outputStream, previousChangelogStream);
// Wait for the previous changelog to be completely read because otherwise we would
// read and write from the same source which causes the content to be thrown off.
previousChangelogStream.on('end', () => {
mergedCompleteChangelog.pipe(createWriteStream(changelogPath))
.once('error', (error: any) => reject(error))
.once('finish', () => resolve());
});
});
}
/** Prompts the terminal for a changelog release name. */
export async function promptChangelogReleaseName(): Promise<string> {
return (await prompt<{releaseName: string}>({
type: 'text',
name: 'releaseName',
message: 'What should be the name of the release?'
})).releaseName;
}
/**
* Creates changelog writer options which ensure that commits are not showing up multiple times.
* Commits can show up multiple times if a changelog has been generated on a publish branch
* and has been cherry-picked into "master". In that case, the changelog will already contain
* commits from master which might be added to the changelog again. This is because usually
* patch and minor releases are tagged from the publish branches and therefore
* conventional-changelog tries to build the changelog from last major version to master's HEAD.
*/
function createDedupeWriterOptions(changelogPath: string) {
const existingChangelogContent = readFileSync(changelogPath, 'utf8');
return {
// Specify a writer option that can be used to modify the content of a new changelog section.
// See: conventional-changelog/tree/master/packages/conventional-changelog-writer
finalizeContext: (context: any) => {
context.commitGroups.forEach((group: any) => {
group.commits = group.commits.filter((commit: any) => {
// NOTE: We cannot compare the SHA's because the commits will have a different SHA
// if they are being cherry-picked into a different branch.
if (existingChangelogContent.includes(commit.header)) {
console.log(grey(`Excluding: "${commit.header}" (${commit.hash})`));
return false;
}
return true;
});
});
return context;
}
};
}
/** Entry-point for generating the changelog when called through the CLI. */
if (require.main === module) {
promptAndGenerateChangelog(join(__dirname, '../../CHANGELOG.md')).then(() => {
console.log(green(' ✓ Successfully updated the changelog.'));
});
}
+1 -1
View File
@@ -45,7 +45,7 @@ export async function promptForNewVersion(currentVersion: Version): Promise<Vers
message: `What's the type of the new release?`,
choices: versionChoices,
}, {
type: 'prompt',
type: 'confirm',
name: 'isPrerelease',
message: 'Should this be a pre-release?',
// Prompt whether this should a pre-release if the current release is not a pre-release
-10
View File
@@ -1,10 +0,0 @@
#!/bin/bash
# Script that builds and launches the stage release script through Bazel. An additional script is
# needed because environment variables (like $PWD) are not being interpolated within NPM scripts.
# Go to project directory.
cd $(dirname ${0})/../..
# Build and run the stage release script.
bazel run //tools/release:stage-release -- $PWD
+12 -18
View File
@@ -2,11 +2,15 @@ import {bold, cyan, green, italic, red, yellow} from 'chalk';
import {existsSync, readFileSync, writeFileSync} from 'fs';
import {prompt} from 'inquirer';
import {join} from 'path';
import {promptAndGenerateChangelog} from './changelog';
import {GitClient} from './git/git-client';
import {promptForNewVersion} from './prompt/new-version-prompt';
import {parseVersionName, Version} from './version-name/parse-version';
import {getExpectedPublishBranch} from './version-name/publish-branch';
/** Default filename for the changelog. */
const CHANGELOG_FILE_NAME = 'CHANGELOG.md';
/**
* Class that can be instantiated in order to stage a new release. The tasks requires user
* interaction/input through command line prompts.
@@ -92,13 +96,15 @@ class StageReleaseTask {
console.log(green(` ✓ Updated the version to "${bold(newVersionName)}" inside of the ` +
`${italic('package.json')}`));
console.log();
// TODO(devversion): run changelog script w/prompts in the future.
// For now, we just let users make modifications and stage the changes.
await promptAndGenerateChangelog(join(this.projectDir, CHANGELOG_FILE_NAME));
console.log(yellow(` ⚠ Please generate the ${bold('CHANGELOG')} for the new version. ` +
`You can also make other unrelated modifications. After the changes have been made, ` +
`just continue here.`));
console.log();
console.log(green(` ✓ Updated the changelog in ` +
`"${bold(CHANGELOG_FILE_NAME)}"`));
console.log(yellow(` ⚠ You can also make other unrelated modifications. After the ` +
`changes have been made, just continue here.`));
console.log();
const {shouldContinue} = await prompt<{shouldContinue: boolean}>({
@@ -166,19 +172,7 @@ class StageReleaseTask {
}
/** Entry-point for the release staging script. */
async function main() {
const projectDir = process.argv.slice(2)[0];
if (!projectDir) {
console.error(red(`You specified no project directory. Cannot run stage release script.`));
console.error(red(`Usage: bazel run //tools/release:stage-release <project-directory>`));
process.exit(1);
}
return new StageReleaseTask(projectDir).run();
}
if (require.main === module) {
main();
new StageReleaseTask(join(__dirname, '../../')).run();
}
+89 -118
View File
@@ -1061,11 +1061,6 @@ acorn@^5.0.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
add-stream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=
addressparser@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746"
@@ -2717,102 +2712,95 @@ continuable-cache@^0.3.1:
resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f"
integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=
conventional-changelog-angular@^1.6.6:
version "1.6.6"
resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f"
integrity sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==
conventional-changelog-angular@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.2.tgz#39d945635e03b6d0c9d4078b1df74e06163dc66a"
integrity sha512-yx7m7lVrXmt4nKWQgWZqxSALEiAKZhOAcbxdUaU9575mB0CzXVbgrgpfSnSP7OqWDUTYGD0YVJ0MSRdyOPgAwA==
dependencies:
compare-func "^1.3.1"
q "^1.5.1"
conventional-changelog-atom@^0.2.8:
version "0.2.8"
resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz#8037693455990e3256f297320a45fa47ee553a14"
integrity sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g==
conventional-changelog-atom@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.1.tgz#dc88ce650ffa9ceace805cbe70f88bfd0cb2c13a"
integrity sha512-9BniJa4gLwL20Sm7HWSNXd0gd9c5qo49gCi8nylLFpqAHhkFTj7NQfROq3f1VpffRtzfTQp4VKU5nxbe2v+eZQ==
dependencies:
q "^1.5.1"
conventional-changelog-codemirror@^0.3.8:
version "0.3.8"
resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz#a1982c8291f4ee4d6f2f62817c6b2ecd2c4b7b47"
integrity sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ==
conventional-changelog-codemirror@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.1.tgz#acc046bc0971460939a0cc2d390e5eafc5eb30da"
integrity sha512-23kT5IZWa+oNoUaDUzVXMYn60MCdOygTA2I+UjnOMiYVhZgmVwNd6ri/yDlmQGXHqbKhNR5NoXdBzSOSGxsgIQ==
dependencies:
q "^1.5.1"
conventional-changelog-core@^2.0.11:
version "2.0.11"
resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz#19b5fbd55a9697773ed6661f4e32030ed7e30287"
integrity sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg==
conventional-changelog-core@^3.1.5:
version "3.1.5"
resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.1.5.tgz#c2edf928539308b54fe1b90a2fc731abc021852c"
integrity sha512-iwqAotS4zk0wA4S84YY1JCUG7X3LxaRjJxuUo6GI4dZuIy243j5nOg/Ora35ExT4DOiw5dQbMMQvw2SUjh6moQ==
dependencies:
conventional-changelog-writer "^3.0.9"
conventional-commits-parser "^2.1.7"
conventional-changelog-writer "^4.0.2"
conventional-commits-parser "^3.0.1"
dateformat "^3.0.0"
get-pkg-repo "^1.0.0"
git-raw-commits "^1.3.6"
git-raw-commits "2.0.0"
git-remote-origin-url "^2.0.0"
git-semver-tags "^1.3.6"
git-semver-tags "^2.0.2"
lodash "^4.2.1"
normalize-package-data "^2.3.5"
q "^1.5.1"
read-pkg "^1.1.0"
read-pkg-up "^1.0.1"
read-pkg "^3.0.0"
read-pkg-up "^3.0.0"
through2 "^2.0.0"
conventional-changelog-ember@^0.3.12:
version "0.3.12"
resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz#b7d31851756d0fcb49b031dffeb6afa93b202400"
integrity sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ==
conventional-changelog-ember@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.2.tgz#284ffdea8c83ea8c210b65c5b4eb3e5cc0f4f51a"
integrity sha512-qtZbA3XefO/n6DDmkYywDYi6wDKNNc98MMl2F9PKSaheJ25Trpi3336W8fDlBhq0X+EJRuseceAdKLEMmuX2tg==
dependencies:
q "^1.5.1"
conventional-changelog-eslint@^1.0.9:
version "1.0.9"
resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz#b13cc7e4b472c819450ede031ff1a75c0e3d07d3"
integrity sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q==
conventional-changelog-eslint@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.1.tgz#f65e0e7f63dc09c044244b8785313a602e628002"
integrity sha512-yH3+bYrtvgKxSFChUBQnKNh9/U9kN2JElYBm253VpYs5wXhPHVc9ENcuVGWijh24nnOkei7wEJmnmUzgZ4ok+A==
dependencies:
q "^1.5.1"
conventional-changelog-express@^0.3.6:
version "0.3.6"
resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz#4a6295cb11785059fb09202180d0e59c358b9c2c"
integrity sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q==
conventional-changelog-express@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-2.0.1.tgz#fea2231d99a5381b4e6badb0c1c40a41fcacb755"
integrity sha512-G6uCuCaQhLxdb4eEfAIHpcfcJ2+ao3hJkbLrw/jSK/eROeNfnxCJasaWdDAfFkxsbpzvQT4W01iSynU3OoPLIw==
dependencies:
q "^1.5.1"
conventional-changelog-jquery@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510"
integrity sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=
conventional-changelog-jquery@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.4.tgz#7eb598467b83db96742178e1e8d68598bffcd7ae"
integrity sha512-IVJGI3MseYoY6eybknnTf9WzeQIKZv7aNTm2KQsiFVJH21bfP2q7XVjfoMibdCg95GmgeFlaygMdeoDDa+ZbEQ==
dependencies:
q "^1.4.1"
q "^1.5.1"
conventional-changelog-jscs@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c"
integrity sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=
dependencies:
q "^1.4.1"
conventional-changelog-jshint@^0.3.8:
version "0.3.8"
resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz#9051c1ac0767abaf62a31f74d2fe8790e8acc6c8"
integrity sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig==
conventional-changelog-jshint@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.1.tgz#11c0e8283abf156a4ff78e89be6fdedf9bd72202"
integrity sha512-kRFJsCOZzPFm2tzRHULWP4tauGMvccOlXYf3zGeuSW4U0mZhk5NsjnRZ7xFWrTFPlCLV+PNmHMuXp5atdoZmEg==
dependencies:
compare-func "^1.3.1"
q "^1.5.1"
conventional-changelog-preset-loader@^1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz#40bb0f142cd27d16839ec6c74ee8db418099b373"
integrity sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw==
conventional-changelog-preset-loader@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.2.tgz#81d1a07523913f3d17da3a49f0091f967ad345b0"
integrity sha512-pBY+qnUoJPXAXXqVGwQaVmcye05xi6z231QM98wHWamGAmu/ghkBprQAwmF5bdmyobdVxiLhPY3PrCfSeUNzRQ==
conventional-changelog-writer@^3.0.9:
version "3.0.9"
resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz#4aecdfef33ff2a53bb0cf3b8071ce21f0e994634"
integrity sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q==
conventional-changelog-writer@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.2.tgz#eb493ed84269e7a663da36e49af51c54639c9a67"
integrity sha512-d8/FQY/fix2xXEBUhOo8u3DCbyEw3UOQgYHxLsPDw+wHUDma/GQGAGsGtoH876WyNs32fViHmTOUrgRKVLvBug==
dependencies:
compare-func "^1.3.1"
conventional-commits-filter "^1.1.6"
conventional-commits-filter "^2.0.1"
dateformat "^3.0.0"
handlebars "^4.0.2"
json-stringify-safe "^5.0.1"
@@ -2822,35 +2810,34 @@ conventional-changelog-writer@^3.0.9:
split "^1.0.0"
through2 "^2.0.0"
conventional-changelog@^1.1.24:
version "1.1.24"
resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.24.tgz#3d94c29c960f5261c002678315b756cdd3d7d1f0"
integrity sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q==
conventional-changelog@^3.0.5:
version "3.0.5"
resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.0.5.tgz#660a61c1c5c9c9ba967ff3d2f5e7e9d7e0680be6"
integrity sha512-JYSVGJbnOl9S2gkZwmoJ+wX2gxNVHodUmEiv+eIykeJBNX0zN5vJ3oa2xCvk2HiF7TZ+Les0eq/aX49dcymONA==
dependencies:
conventional-changelog-angular "^1.6.6"
conventional-changelog-atom "^0.2.8"
conventional-changelog-codemirror "^0.3.8"
conventional-changelog-core "^2.0.11"
conventional-changelog-ember "^0.3.12"
conventional-changelog-eslint "^1.0.9"
conventional-changelog-express "^0.3.6"
conventional-changelog-jquery "^0.1.0"
conventional-changelog-jscs "^0.1.0"
conventional-changelog-jshint "^0.3.8"
conventional-changelog-preset-loader "^1.1.8"
conventional-changelog-angular "^5.0.2"
conventional-changelog-atom "^2.0.1"
conventional-changelog-codemirror "^2.0.1"
conventional-changelog-core "^3.1.5"
conventional-changelog-ember "^2.0.2"
conventional-changelog-eslint "^3.0.1"
conventional-changelog-express "^2.0.1"
conventional-changelog-jquery "^3.0.4"
conventional-changelog-jshint "^2.0.1"
conventional-changelog-preset-loader "^2.0.2"
conventional-commits-filter@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz#4389cd8e58fe89750c0b5fb58f1d7f0cc8ad3831"
integrity sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==
conventional-commits-filter@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz#55a135de1802f6510b6758e0a6aa9e0b28618db3"
integrity sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==
dependencies:
is-subset "^0.1.1"
modify-values "^1.0.0"
conventional-commits-parser@^2.1.7:
version "2.1.7"
resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e"
integrity sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==
conventional-commits-parser@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz#fe1c49753df3f98edb2285a5e485e11ffa7f2e4c"
integrity sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==
dependencies:
JSONStream "^1.0.4"
is-text-path "^1.0.0"
@@ -4651,10 +4638,10 @@ getpass@^0.1.1:
dependencies:
assert-plus "^1.0.0"
git-raw-commits@^1.3.6:
version "1.3.6"
resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff"
integrity sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==
git-raw-commits@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5"
integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==
dependencies:
dargs "^4.0.1"
lodash.template "^4.0.2"
@@ -4670,18 +4657,10 @@ git-remote-origin-url@^2.0.0:
gitconfiglocal "^1.0.0"
pify "^2.3.0"
git-semver-tags@^1.3.6:
version "1.3.6"
resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.3.6.tgz#357ea01f7280794fe0927f2806bee6414d2caba5"
integrity sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==
dependencies:
meow "^4.0.0"
semver "^5.5.0"
git-semver-tags@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.0.tgz#c218fd895bdf8e8e02f6bde555b2c3893ac73cd7"
integrity sha512-lSgFc3zQTul31nFje2Q8XdNcTOI6B4I3mJRPCgFzHQQLfxfqdWTYzdtCaynkK5Xmb2wQlSJoKolhXJ1VhKROnQ==
git-semver-tags@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.2.tgz#f506ec07caade191ac0c8d5a21bdb8131b4934e3"
integrity sha512-34lMF7Yo1xEmsK2EkbArdoU79umpvm0MfzaDkSNYSJqtM5QLAVTPWgpiXSVI5o/O9EvZPSrP4Zvnec/CqhSd5w==
dependencies:
meow "^4.0.0"
semver "^5.5.0"
@@ -5180,19 +5159,6 @@ gulp-connect@^5.0.0:
serve-static "^1.13.2"
tiny-lr "^1.1.1"
gulp-conventional-changelog@^1.1.3:
version "1.1.24"
resolved "https://registry.yarnpkg.com/gulp-conventional-changelog/-/gulp-conventional-changelog-1.1.24.tgz#53955cf5260434615cd081ccae4357645e06844e"
integrity sha512-8nw2Vh7HSvNkmYLRrpt77zGjSjz+GoG9uMWCIJWHEoCR4iAHJ1w6PaPJ39C8xdkAfvPdowyKrAhUi3WepELiTA==
dependencies:
add-stream "^1.0.0"
concat-stream "^1.6.0"
conventional-changelog "^1.1.24"
fancy-log "^1.3.2"
object-assign "^4.0.1"
plugin-error "^1.0.1"
through2 "^2.0.0"
gulp-dom@^0.9.17:
version "0.9.17"
resolved "https://registry.yarnpkg.com/gulp-dom/-/gulp-dom-0.9.17.tgz#4a23c625b5da820bb73d4405459319c9922383ca"
@@ -7670,6 +7636,11 @@ merge2@^1.2.1:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34"
integrity sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==
merge2@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5"
integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==
methmeth@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/methmeth/-/methmeth-1.1.0.tgz#e80a26618e52f5c4222861bb748510bd10e29089"
@@ -8836,7 +8807,7 @@ pkginfo@0.x.x:
resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff"
integrity sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=
plugin-error@1.0.1, plugin-error@^1.0.1:
plugin-error@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==
@@ -9409,7 +9380,7 @@ read-pkg-up@^3.0.0:
find-up "^2.0.0"
read-pkg "^3.0.0"
read-pkg@^1.0.0, read-pkg@^1.1.0:
read-pkg@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=