mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-05-02 01:40:31 -05:00
workflow: use lerna-changelog (#3650)
This commit is contained in:
@@ -8,3 +8,4 @@ temp
|
||||
.vuerc
|
||||
.version
|
||||
.versions
|
||||
.changelog
|
||||
|
||||
+14
-1
@@ -5,5 +5,18 @@
|
||||
"packages": [
|
||||
"packages/@vue/babel-preset-app",
|
||||
"packages/@vue/cli*"
|
||||
]
|
||||
],
|
||||
"changelog": {
|
||||
"repo": "vuejs/vue-cli",
|
||||
"labels": {
|
||||
"PR: New Feature": ":rocket: New Feature",
|
||||
"PR: Breaking Change": ":boom: Breaking Change",
|
||||
"PR: Bug Fix": ":bug: Bug Fix",
|
||||
"PR: Documentation": ":memo: Documentation",
|
||||
"PR: Internal": ":house: Internal",
|
||||
"PR: Underlying Tools": ":hammer: Underlying Tools"
|
||||
},
|
||||
"cacheDir": ".changelog",
|
||||
"nextVersionFromMetadata": true
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -14,7 +14,7 @@
|
||||
"sync": "node scripts/syncDeps.js",
|
||||
"boot": "node scripts/bootstrap.js",
|
||||
"release": "yarn --pure-lockfile && yarn clean && node scripts/release.js",
|
||||
"changelog": "node scripts/genChangelog.js run",
|
||||
"version": "node scripts/markVersions.js && node scripts/genChangelog.js && git add packages/vue-cli-version-marker CHANGELOG.md",
|
||||
"docs": "vuepress dev docs",
|
||||
"docs:build": "vuepress build docs",
|
||||
"patch-chromedriver": "node scripts/patchChromedriver.js"
|
||||
@@ -43,12 +43,10 @@
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/conventional-changelog": "^0.1.1",
|
||||
"@vuepress/plugin-pwa": "^1.0.0-alpha.44",
|
||||
"@vuepress/theme-vue": "1.0.0-alpha.44",
|
||||
"babel-core": "7.0.0-bridge.0",
|
||||
"babel-eslint": "^10.0.1",
|
||||
"conventional-changelog": "^3.0.6",
|
||||
"debug": "^4.1.0",
|
||||
"eslint": "^5.14.1",
|
||||
"eslint-plugin-graphql": "^3.0.3",
|
||||
@@ -62,6 +60,7 @@
|
||||
"inquirer": "^6.0.0",
|
||||
"jest": "^23.1.0",
|
||||
"lerna": "^3.13.0",
|
||||
"lerna-changelog": "^0.8.2",
|
||||
"lint-staged": "^8.1.4",
|
||||
"memfs": "^2.15.2",
|
||||
"minimist": "^1.2.0",
|
||||
|
||||
+11
-29
@@ -1,43 +1,25 @@
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const execa = require('execa')
|
||||
const cc = require('conventional-changelog')
|
||||
const config = require('@vue/conventional-changelog')
|
||||
|
||||
function genNewRelease (version) {
|
||||
return new Promise(resolve => {
|
||||
const newReleaseStream = cc({
|
||||
config,
|
||||
releaseCount: 2,
|
||||
pkg: {
|
||||
transform (pkg) {
|
||||
pkg.version = `v${version}`
|
||||
return pkg
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
let output = ''
|
||||
newReleaseStream.on('data', buf => {
|
||||
output += buf
|
||||
})
|
||||
newReleaseStream.on('end', () => resolve(output))
|
||||
})
|
||||
async function genNewRelease () {
|
||||
const { stdout } = await execa(require.resolve('lerna-changelog/bin/cli'))
|
||||
return stdout
|
||||
}
|
||||
|
||||
const gen = (module.exports = async version => {
|
||||
const newRelease = await genNewRelease(version)
|
||||
const gen = (module.exports = async () => {
|
||||
const newRelease = await genNewRelease()
|
||||
const changelogPath = path.resolve(__dirname, '../CHANGELOG.md')
|
||||
|
||||
const newChangelog = newRelease + fs.readFileSync(changelogPath, { encoding: 'utf8' })
|
||||
const newChangelog = newRelease + '\n\n\n' + fs.readFileSync(changelogPath, { encoding: 'utf8' })
|
||||
fs.writeFileSync(changelogPath, newChangelog)
|
||||
|
||||
delete process.env.PREFIX
|
||||
await execa('git', ['add', '-A'], { stdio: 'inherit' })
|
||||
await execa('git', ['commit', '-m', `chore: ${version} changelog [ci skip]`], { stdio: 'inherit' })
|
||||
})
|
||||
|
||||
if (process.argv[2] === 'run') {
|
||||
const version = require('../lerna.json').version
|
||||
gen(version)
|
||||
if (require.main === module) {
|
||||
gen().catch(err => {
|
||||
console.error(err)
|
||||
process.exit(1)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const execa = require('execa')
|
||||
const semver = require('semver')
|
||||
|
||||
// TODO:
|
||||
// in v4 we don't need version marker's package.json to store all the versions
|
||||
// so this logic can be removed
|
||||
async function markVersions () {
|
||||
const packages = JSON.parse(
|
||||
(await execa(require.resolve('lerna/cli'), ['list', '--json'])).stdout
|
||||
).filter(p => !p.private)
|
||||
const markerPath = path.resolve(__dirname, '../packages/vue-cli-version-marker/package.json')
|
||||
const marker = JSON.parse(fs.readFileSync(markerPath))
|
||||
|
||||
const curVersion = marker.version
|
||||
const mainVersion = require('../lerna.json').version
|
||||
|
||||
const releaseType = semver.diff(curVersion, mainVersion) || 'patch'
|
||||
|
||||
marker.version = semver.inc(marker.version, releaseType)
|
||||
marker.devDependencies = packages.reduce((prev, pkg) => {
|
||||
prev[pkg.name] = pkg.version
|
||||
return prev
|
||||
}, {})
|
||||
fs.writeFileSync(markerPath, JSON.stringify(marker, null, 2))
|
||||
|
||||
// publish separately
|
||||
// must specify registry url: https://github.com/lerna/lerna/issues/896#issuecomment-311894609
|
||||
await execa(
|
||||
'npm',
|
||||
['publish', '--registry', 'https://registry.npmjs.org/'],
|
||||
{ stdio: 'inherit', cwd: path.dirname(markerPath) }
|
||||
)
|
||||
}
|
||||
|
||||
markVersions().catch(err => {
|
||||
console.error(err)
|
||||
process.exit(1)
|
||||
})
|
||||
@@ -33,8 +33,6 @@ Note: eslint-config-* packages should be released separately & manually.
|
||||
|
||||
process.env.VUE_CLI_RELEASE = true
|
||||
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const execa = require('execa')
|
||||
const semver = require('semver')
|
||||
const inquirer = require('inquirer')
|
||||
@@ -106,35 +104,6 @@ const release = async () => {
|
||||
lernaArgs.push('--force-publish')
|
||||
}
|
||||
await execa(require.resolve('lerna/cli'), lernaArgs, { stdio: 'inherit' })
|
||||
|
||||
await require('./genChangelog')(version)
|
||||
|
||||
const packages = JSON.parse(
|
||||
(await execa(require.resolve('lerna/cli'), ['list', '--json'])).stdout
|
||||
).filter(p => !p.private)
|
||||
const versionMarkerPath = path.resolve(__dirname, '../packages/vue-cli-version-marker/package.json')
|
||||
const versionMarkerPkg = JSON.parse(fs.readFileSync(versionMarkerPath))
|
||||
|
||||
versionMarkerPkg.version = semver.inc(versionMarkerPkg.version, releaseType)
|
||||
versionMarkerPkg.devDependencies = packages.reduce((prev, pkg) => {
|
||||
prev[pkg.name] = pkg.version
|
||||
return prev
|
||||
}, {})
|
||||
fs.writeFileSync(versionMarkerPath, JSON.stringify(versionMarkerPkg, null, 2))
|
||||
|
||||
const tagName = `vue-cli-version-marker@${versionMarkerPkg.version}`
|
||||
await execa('git', ['add', '-A'], { stdio: 'inherit' })
|
||||
await execa('git', ['commit', '-m', `chore: ${tagName}`], { stdio: 'inherit' })
|
||||
|
||||
// Must specify registry url: https://github.com/lerna/lerna/issues/896#issuecomment-311894609
|
||||
await execa(
|
||||
'npm',
|
||||
['publish', '--registry', 'https://registry.npmjs.org/'],
|
||||
{ stdio: 'inherit', cwd: path.dirname(versionMarkerPath) }
|
||||
)
|
||||
|
||||
await execa('git', ['tag', tagName], { stdio: 'inherit' })
|
||||
await execa('git', ['push', '--follow-tags'], { stdio: 'inherit' })
|
||||
}
|
||||
|
||||
release().catch(err => {
|
||||
|
||||
@@ -2575,6 +2575,11 @@ any-observable@^0.3.0:
|
||||
resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
|
||||
integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
|
||||
|
||||
any-promise@^1.0.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
|
||||
integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
|
||||
|
||||
anymatch@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
|
||||
@@ -4207,6 +4212,17 @@ cli-cursor@^2.0.0, cli-cursor@^2.1.0:
|
||||
dependencies:
|
||||
restore-cursor "^2.0.0"
|
||||
|
||||
cli-highlight@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-1.2.3.tgz#b200f97ed0e43d24633e89de0f489a48bb87d2bf"
|
||||
integrity sha512-cmc4Y2kJuEpT2KZd9pgWWskpDMMfJu2roIcY1Ya/aIItufF5FKsV/NtA6vvdhSUllR8KJfvQDNmIcskU+MKLDg==
|
||||
dependencies:
|
||||
chalk "^2.3.0"
|
||||
highlight.js "^9.6.0"
|
||||
mz "^2.4.0"
|
||||
parse5 "^3.0.3"
|
||||
yargs "^10.0.3"
|
||||
|
||||
cli-spinners@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
|
||||
@@ -8309,6 +8325,11 @@ hex-color-regex@^1.1.0:
|
||||
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
|
||||
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
|
||||
|
||||
highlight.js@^9.6.0:
|
||||
version "9.15.6"
|
||||
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.6.tgz#72d4d8d779ec066af9a17cb14360c3def0aa57c4"
|
||||
integrity sha512-zozTAWM1D6sozHo8kqhfYgsac+B+q0PmsjXeyDrYIHHcBN0zTVT66+s2GW1GZv7DbyaROdLXKdabwS/WqPyIdQ==
|
||||
|
||||
hmac-drbg@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
||||
@@ -10170,6 +10191,21 @@ left-pad@^1.3.0:
|
||||
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
|
||||
integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==
|
||||
|
||||
lerna-changelog@^0.8.2:
|
||||
version "0.8.2"
|
||||
resolved "https://registry.yarnpkg.com/lerna-changelog/-/lerna-changelog-0.8.2.tgz#05dc24add91741a4c198a79f82a1a4ac3fbb4754"
|
||||
integrity sha512-GrWs8K3DrPpO1sUrcloYp9ioj+PNAX27U6tM0+10fhbNzBB7h4HS+4N5DWKhEQRDoJjZh1QA+wWwTpDNJdJHyA==
|
||||
dependencies:
|
||||
chalk "^2.4.1"
|
||||
cli-highlight "^1.2.3"
|
||||
execa "^0.10.0"
|
||||
make-fetch-happen "^4.0.1"
|
||||
normalize-git-url "^3.0.2"
|
||||
p-map "^1.2.0"
|
||||
progress "^2.0.0"
|
||||
string.prototype.padend "^3.0.0"
|
||||
yargs "^11.0.0"
|
||||
|
||||
lerna@^3.13.0:
|
||||
version "3.13.0"
|
||||
resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.13.0.tgz#3a9fe155d763a9814939a631ff958957322f2f31"
|
||||
@@ -11493,6 +11529,15 @@ mute-stream@~0.0.4:
|
||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
||||
|
||||
mz@^2.4.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
|
||||
integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
object-assign "^4.0.1"
|
||||
thenify-all "^1.0.0"
|
||||
|
||||
nan@^2.9.2:
|
||||
version "2.12.1"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
|
||||
@@ -11783,6 +11828,11 @@ nopt@^4.0.1, nopt@~4.0.1:
|
||||
abbrev "1"
|
||||
osenv "^0.1.4"
|
||||
|
||||
normalize-git-url@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/normalize-git-url/-/normalize-git-url-3.0.2.tgz#8e5f14be0bdaedb73e07200310aa416c27350fc4"
|
||||
integrity sha1-jl8Uvgva7bc+ByADEKpBbCc1D8Q=
|
||||
|
||||
normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.2.tgz#6b2abd85774e51f7936f1395e45acb905dc849b2"
|
||||
@@ -12504,6 +12554,13 @@ parse5@5.1.0:
|
||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
|
||||
integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==
|
||||
|
||||
parse5@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
|
||||
integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
parseurl@~1.3.2:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
|
||||
@@ -15878,6 +15935,20 @@ text-table@^0.2.0, text-table@~0.2.0:
|
||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
|
||||
|
||||
thenify-all@^1.0.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
|
||||
integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=
|
||||
dependencies:
|
||||
thenify ">= 3.1.0 < 4"
|
||||
|
||||
"thenify@>= 3.1.0 < 4":
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839"
|
||||
integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
|
||||
thread-loader@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.2.tgz#f585dd38e852c7f9cded5d092992108148f5eb30"
|
||||
@@ -17653,6 +17724,13 @@ yargs-parser@^11.1.1:
|
||||
camelcase "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
|
||||
yargs-parser@^8.1.0:
|
||||
version "8.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950"
|
||||
integrity sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==
|
||||
dependencies:
|
||||
camelcase "^4.1.0"
|
||||
|
||||
yargs-parser@^9.0.2:
|
||||
version "9.0.2"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077"
|
||||
@@ -17678,6 +17756,24 @@ yargs@12.0.2:
|
||||
y18n "^3.2.1 || ^4.0.0"
|
||||
yargs-parser "^10.1.0"
|
||||
|
||||
yargs@^10.0.3:
|
||||
version "10.1.2"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5"
|
||||
integrity sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==
|
||||
dependencies:
|
||||
cliui "^4.0.0"
|
||||
decamelize "^1.1.1"
|
||||
find-up "^2.1.0"
|
||||
get-caller-file "^1.0.1"
|
||||
os-locale "^2.0.0"
|
||||
require-directory "^2.1.1"
|
||||
require-main-filename "^1.0.1"
|
||||
set-blocking "^2.0.0"
|
||||
string-width "^2.0.0"
|
||||
which-module "^2.0.0"
|
||||
y18n "^3.2.1"
|
||||
yargs-parser "^8.1.0"
|
||||
|
||||
yargs@^11.0.0:
|
||||
version "11.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77"
|
||||
|
||||
Reference in New Issue
Block a user