From e16e5f139efbf344c54e1073fa18fe7841a4da34 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Sun, 2 Dec 2018 16:25:24 +0800 Subject: [PATCH] workflow: fix vue-cli-version-marker publish and eslint-config version sync --- scripts/release.js | 15 +++++++--- scripts/syncDeps.js | 72 ++++++++++++++++++++++++--------------------- 2 files changed, 50 insertions(+), 37 deletions(-) diff --git a/scripts/release.js b/scripts/release.js index de155579b..289a8a6df 100644 --- a/scripts/release.js +++ b/scripts/release.js @@ -103,7 +103,7 @@ const release = async () => { } await execa(require.resolve('lerna/cli'), lernaArgs, { stdio: 'inherit' }) - // require('./genChangelog')(version) + require('./genChangelog')(version) const packages = JSON.parse( (await execa(require.resolve('lerna/cli'), ['list', '--json'])).stdout @@ -121,9 +121,16 @@ const release = async () => { const tagName = `vue-cli-version-marker@${versionMarkerPkg.version}` await execa('git', ['add', '-A'], { stdio: 'inherit' }) await execa('git', ['commit', '-m', `chore: ${tagName}`], { stdio: 'inherit' }) - // await execa('npm', ['publish'], { stdio: 'inherit', cwd: path.dirname(versionMarkerPath) }) - // await execa('git', ['tag', tagName], { stdio: 'inherit' }) - // await execa('git', ['push', '--tags'], { 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', '--tags'], { stdio: 'inherit' }) } release().catch(err => { diff --git a/scripts/syncDeps.js b/scripts/syncDeps.js index 84c184060..0594f2225 100644 --- a/scripts/syncDeps.js +++ b/scripts/syncDeps.js @@ -148,43 +148,49 @@ async function syncDeps ({ local, version, skipPrompt }) { } } - // console.log('Syncing local deps...') - // const updatedRE = new RegExp(`'(${Array.from(updatedDeps).join('|')})': '\\^(\\d+\\.\\d+\\.\\d+[^']*)'`) - // const paths = await globby(['packages/@vue/**/*.js']) - // paths - // .filter(p => !/\/files\//.test(p) && !/\/node_modules/.test(p)) - // .forEach(filePath => { - // let isUpdated = false - // const makeReplacer = versionGetter => (_, pkg, curVersion) => { - // const targetVersion = versionGetter(pkg) - // if (!targetVersion) return _ - // if (checkUpdate(pkg, filePath, curVersion, targetVersion)) { - // isUpdated = true - // } - // return `'${pkg}': '^${targetVersion}'` - // } + console.log('Syncing local deps...') + const updatedRE = new RegExp(`'(${Array.from(updatedDeps).join('|')})': '\\^(\\d+\\.\\d+\\.\\d+[^']*)'`) + const paths = await globby(['packages/@vue/**/*.js']) + paths + .filter(p => !/\/files\//.test(p) && !/\/node_modules/.test(p)) + .forEach(filePath => { + let isUpdated = false + const makeReplacer = versionGetter => (_, pkg, curVersion) => { + const targetVersion = versionGetter(pkg) + if (!targetVersion) return _ + if (checkUpdate(pkg, filePath, curVersion, targetVersion)) { + isUpdated = true + } + return `'${pkg}': '^${targetVersion}'` + } - // const localReplacer = makeReplacer( - // pkg => { - // try { - // // inline version takes priority - // return version || require(`../packages/${pkg}/package.json`).version - // } catch (e) {} - // } - // ) + const localReplacer = makeReplacer( + pkg => { + try { + // for eslint-config-* packages, only use version field from package.json + // as they're published separately + if (pkg.includes('eslint-config')) { + return require(`../packages/${pkg}/package.json`).version + } - // const remoteReplacer = makeReplacer(getRemoteVersionSync) + // otherwise, inline version takes priority + return version || require(`../packages/${pkg}/package.json`).version + } catch (e) {} + } + ) - // const updated = fs.readFileSync(filePath, 'utf-8') - // // update @vue packages in this repo - // .replace(localPackageRE, localReplacer) - // // also update vue, vue-template-compiler, vuex, vue-router - // .replace(updatedRE, remoteReplacer) + const remoteReplacer = makeReplacer(getRemoteVersionSync) - // if (isUpdated) { - // bufferWrite(filePath, updated) - // } - // }) + const updated = fs.readFileSync(filePath, 'utf-8') + // update @vue packages in this repo + .replace(localPackageRE, localReplacer) + // also update vue, vue-template-compiler, vuex, vue-router + .replace(updatedRE, remoteReplacer) + + if (isUpdated) { + bufferWrite(filePath, updated) + } + }) if (!Object.keys(writeCache).length) { return console.log(`All packages up-to-date.`)