From 3fdc41ccb5242793a0a025a00ef6dbd3424d3362 Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Fri, 29 Apr 2022 20:48:55 +0800 Subject: [PATCH] ci: add autoInstall MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加更新vuepress相关依赖脚本 --- docs/package.json | 10 ++-- package.json | 2 +- packages/plugin-caniuse/package.json | 8 +-- packages/theme/package.json | 42 +++++++-------- pnpm-lock.yaml | 60 ++++++++++----------- scripts/{dependencies.js => autoInstall.js} | 33 ++++++------ 6 files changed, 79 insertions(+), 76 deletions(-) rename scripts/{dependencies.js => autoInstall.js} (62%) diff --git a/docs/package.json b/docs/package.json index 5909bf6a..37403ba4 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,11 +9,11 @@ }, "dependencies": { "@vuepress-plume/vuepress-theme-plume": "workspace:*", - "@vuepress/bundler-vite": "^2.0.0-beta.41", - "@vuepress/bundler-webpack": "^2.0.0-beta.41", - "@vuepress/cli": "^2.0.0-beta.41", - "@vuepress/client": "^2.0.0-beta.41", - "@vuepress/utils": "^2.0.0-beta.41", + "@vuepress/bundler-vite": "2.0.0-beta.41", + "@vuepress/bundler-webpack": "2.0.0-beta.41", + "@vuepress/cli": "2.0.0-beta.41", + "@vuepress/client": "2.0.0-beta.41", + "@vuepress/utils": "2.0.0-beta.41", "anywhere": "^1.5.0", "sass-loader": "^12.6.0", "vue": "^3.2.33" diff --git a/package.json b/package.json index bcfb120b..36b6384a 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "license": "MIT", "author": "pengzhanbo", "scripts": { + "autoUpdate": "node scripts/autoInstall.js", "build": "pnpm run build:package", "build:package": "pnpm --filter=!vuepress-theme-plume run -r --stream build", "commit": "cz", @@ -15,7 +16,6 @@ "docs:clean": "pnpm --filter=docs docs:clean", "docs:serve": "pnpm --filter=docs docs:serve", "lint": "eslint --ext .js,.ts,.vue .", - "package:update": "node scripts/dependencies.js", "prepare": "husky install", "release": "pnpm release:check && pnpm release:version && pnpm release:publish", "release:changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", diff --git a/packages/plugin-caniuse/package.json b/packages/plugin-caniuse/package.json index a5a5cb78..bf385666 100644 --- a/packages/plugin-caniuse/package.json +++ b/packages/plugin-caniuse/package.json @@ -24,10 +24,10 @@ "ts:watch": "tsc -b tsconfig.build.json --watch" }, "dependencies": { - "@vuepress/cli": "^2.0.0-beta.41", - "@vuepress/client": "^2.0.0-beta.41", - "@vuepress/core": "^2.0.0-beta.41", - "@vuepress/utils": "^2.0.0-beta.41", + "@vuepress/cli": "2.0.0-beta.41", + "@vuepress/client": "2.0.0-beta.41", + "@vuepress/core": "2.0.0-beta.41", + "@vuepress/utils": "2.0.0-beta.41", "markdown-it-container": "^3.0.0" }, "publishConfig": { diff --git a/packages/theme/package.json b/packages/theme/package.json index 47093dc7..3429ce81 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -29,21 +29,21 @@ "dependencies": { "@types/lodash.merge": "^4.6.6", "@vuepress-plume/vuepress-plugin-caniuse": "1.0.0-beta.8", - "@vuepress/client": "^2.0.0-beta.41", - "@vuepress/core": "^2.0.0-beta.41", - "@vuepress/plugin-active-header-links": "^2.0.0-beta.41", - "@vuepress/plugin-container": "^2.0.0-beta.41", - "@vuepress/plugin-docsearch": "^2.0.0-beta.41", - "@vuepress/plugin-external-link-icon": "^2.0.0-beta.41", - "@vuepress/plugin-medium-zoom": "^2.0.0-beta.41", - "@vuepress/plugin-nprogress": "^2.0.0-beta.41", - "@vuepress/plugin-palette": "^2.0.0-beta.41", - "@vuepress/plugin-prismjs": "^2.0.0-beta.41", - "@vuepress/plugin-search": "^2.0.0-beta.41", - "@vuepress/plugin-theme-data": "^2.0.0-beta.41", - "@vuepress/plugin-toc": "^2.0.0-beta.41", - "@vuepress/shared": "^2.0.0-beta.41", - "@vuepress/utils": "^2.0.0-beta.41", + "@vuepress/client": "2.0.0-beta.41", + "@vuepress/core": "2.0.0-beta.41", + "@vuepress/plugin-active-header-links": "2.0.0-beta.41", + "@vuepress/plugin-container": "2.0.0-beta.41", + "@vuepress/plugin-docsearch": "2.0.0-beta.41", + "@vuepress/plugin-external-link-icon": "2.0.0-beta.41", + "@vuepress/plugin-medium-zoom": "2.0.0-beta.41", + "@vuepress/plugin-nprogress": "2.0.0-beta.41", + "@vuepress/plugin-palette": "2.0.0-beta.41", + "@vuepress/plugin-prismjs": "2.0.0-beta.41", + "@vuepress/plugin-search": "2.0.0-beta.41", + "@vuepress/plugin-theme-data": "2.0.0-beta.41", + "@vuepress/plugin-toc": "2.0.0-beta.41", + "@vuepress/shared": "2.0.0-beta.41", + "@vuepress/utils": "2.0.0-beta.41", "@vueuse/core": "^8.2.3", "chokidar": "^3.5.3", "date-fns": "^2.28.0", @@ -55,12 +55,12 @@ "sass-loader": "^12.6.0", "vue": "^3.2.33", "vue-router": "^4.0.14", - "vuepress-plugin-comment2": "^2.0.0-beta.47", - "vuepress-plugin-copy-code2": "^2.0.0-beta.47", - "vuepress-plugin-md-enhance": "^2.0.0-beta.47", - "vuepress-plugin-reading-time2": "^2.0.0-beta.47", - "vuepress-plugin-seo2": "^2.0.0-beta.47", - "vuepress-plugin-sitemap2": "^2.0.0-beta.47" + "vuepress-plugin-comment2": "2.0.0-beta.47", + "vuepress-plugin-copy-code2": "2.0.0-beta.47", + "vuepress-plugin-md-enhance": "2.0.0-beta.47", + "vuepress-plugin-reading-time2": "2.0.0-beta.47", + "vuepress-plugin-seo2": "2.0.0-beta.47", + "vuepress-plugin-sitemap2": "2.0.0-beta.47" }, "peerDependencies": { "sass-loader": "^12.6.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df081782..415dc3bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,11 +59,11 @@ importers: docs: specifiers: '@vuepress-plume/vuepress-theme-plume': workspace:* - '@vuepress/bundler-vite': ^2.0.0-beta.41 - '@vuepress/bundler-webpack': ^2.0.0-beta.41 - '@vuepress/cli': ^2.0.0-beta.41 - '@vuepress/client': ^2.0.0-beta.41 - '@vuepress/utils': ^2.0.0-beta.41 + '@vuepress/bundler-vite': 2.0.0-beta.41 + '@vuepress/bundler-webpack': 2.0.0-beta.41 + '@vuepress/cli': 2.0.0-beta.41 + '@vuepress/client': 2.0.0-beta.41 + '@vuepress/utils': 2.0.0-beta.41 anywhere: ^1.5.0 sass-loader: ^12.6.0 vue: ^3.2.33 @@ -80,10 +80,10 @@ importers: packages/plugin-caniuse: specifiers: - '@vuepress/cli': ^2.0.0-beta.41 - '@vuepress/client': ^2.0.0-beta.41 - '@vuepress/core': ^2.0.0-beta.41 - '@vuepress/utils': ^2.0.0-beta.41 + '@vuepress/cli': 2.0.0-beta.41 + '@vuepress/client': 2.0.0-beta.41 + '@vuepress/core': 2.0.0-beta.41 + '@vuepress/utils': 2.0.0-beta.41 markdown-it-container: ^3.0.0 dependencies: '@vuepress/cli': 2.0.0-beta.41 @@ -96,21 +96,21 @@ importers: specifiers: '@types/lodash.merge': ^4.6.6 '@vuepress-plume/vuepress-plugin-caniuse': 1.0.0-beta.8 - '@vuepress/client': ^2.0.0-beta.41 - '@vuepress/core': ^2.0.0-beta.41 - '@vuepress/plugin-active-header-links': ^2.0.0-beta.41 - '@vuepress/plugin-container': ^2.0.0-beta.41 - '@vuepress/plugin-docsearch': ^2.0.0-beta.41 - '@vuepress/plugin-external-link-icon': ^2.0.0-beta.41 - '@vuepress/plugin-medium-zoom': ^2.0.0-beta.41 - '@vuepress/plugin-nprogress': ^2.0.0-beta.41 - '@vuepress/plugin-palette': ^2.0.0-beta.41 - '@vuepress/plugin-prismjs': ^2.0.0-beta.41 - '@vuepress/plugin-search': ^2.0.0-beta.41 - '@vuepress/plugin-theme-data': ^2.0.0-beta.41 - '@vuepress/plugin-toc': ^2.0.0-beta.41 - '@vuepress/shared': ^2.0.0-beta.41 - '@vuepress/utils': ^2.0.0-beta.41 + '@vuepress/client': 2.0.0-beta.41 + '@vuepress/core': 2.0.0-beta.41 + '@vuepress/plugin-active-header-links': 2.0.0-beta.41 + '@vuepress/plugin-container': 2.0.0-beta.41 + '@vuepress/plugin-docsearch': 2.0.0-beta.41 + '@vuepress/plugin-external-link-icon': 2.0.0-beta.41 + '@vuepress/plugin-medium-zoom': 2.0.0-beta.41 + '@vuepress/plugin-nprogress': 2.0.0-beta.41 + '@vuepress/plugin-palette': 2.0.0-beta.41 + '@vuepress/plugin-prismjs': 2.0.0-beta.41 + '@vuepress/plugin-search': 2.0.0-beta.41 + '@vuepress/plugin-theme-data': 2.0.0-beta.41 + '@vuepress/plugin-toc': 2.0.0-beta.41 + '@vuepress/shared': 2.0.0-beta.41 + '@vuepress/utils': 2.0.0-beta.41 '@vueuse/core': ^8.2.3 chokidar: ^3.5.3 date-fns: ^2.28.0 @@ -122,12 +122,12 @@ importers: sass-loader: ^12.6.0 vue: ^3.2.33 vue-router: ^4.0.14 - vuepress-plugin-comment2: ^2.0.0-beta.47 - vuepress-plugin-copy-code2: ^2.0.0-beta.47 - vuepress-plugin-md-enhance: ^2.0.0-beta.47 - vuepress-plugin-reading-time2: ^2.0.0-beta.47 - vuepress-plugin-seo2: ^2.0.0-beta.47 - vuepress-plugin-sitemap2: ^2.0.0-beta.47 + vuepress-plugin-comment2: 2.0.0-beta.47 + vuepress-plugin-copy-code2: 2.0.0-beta.47 + vuepress-plugin-md-enhance: 2.0.0-beta.47 + vuepress-plugin-reading-time2: 2.0.0-beta.47 + vuepress-plugin-seo2: 2.0.0-beta.47 + vuepress-plugin-sitemap2: 2.0.0-beta.47 dependencies: '@types/lodash.merge': 4.6.7 '@vuepress-plume/vuepress-plugin-caniuse': link:../plugin-caniuse diff --git a/scripts/dependencies.js b/scripts/autoInstall.js similarity index 62% rename from scripts/dependencies.js rename to scripts/autoInstall.js index 69501fde..2b7d52f4 100644 --- a/scripts/dependencies.js +++ b/scripts/autoInstall.js @@ -1,17 +1,19 @@ -import fs from 'fs' -import path from 'path' -import { execa } from 'execa' -import ora from 'ora' -import chalk from 'chalk' +const fs = require('fs') +const path = require('path') +const execa = require('execa') +const ora = require('ora') +const chalk = require('chalk') -const packages = fs.readdirSync(new URL('../packages', import.meta.url)) +const packages = [ + ...fs.readdirSync(path.join(__dirname, '../packages')).map(dir => path.join('../packages', dir)), + '../docs' +] const dependencies = packages.map(dir => { - const dirname = new URL(path.join('../packages', dir), import.meta.url) - const pkg = fs.readFileSync(path.join(dirname.pathname, 'package.json')) + const pkg = fs.readFileSync(path.join(__dirname, dir, 'package.json')) const { dependencies, devDependencies } = JSON.parse(pkg) return { - dirname: dirname.pathname, + dirname: path.join(__dirname, dir), dependencies: filterVuePress(Object.keys(dependencies || {})), devDependencies: filterVuePress(Object.keys(devDependencies || {})) } @@ -31,28 +33,29 @@ function filterVuePress(dependencies) { const options = [] dependencies.forEach(({ dirname, dependencies, devDependencies }) => { if (dependencies.length) { - options.push(['yarn', ['add', ...dependencies], { cwd: dirname }]) + options.push(['pnpm', ['add', ...dependencies], { cwd: dirname }]) } if (devDependencies.length) { - options.push(['yarn', ['add', '-D', ...devDependencies], { cwd: dirname }]) + options.push(['pnpm', ['add', '-D', ...devDependencies], { cwd: dirname }]) } }) async function install(index = 0) { if (index >= options.length) return + const spinner = ora() const opt = options[index] - console.log(chalk.cyan(opt[2].cwd.split('/').slice(-2).join('/'))); + const dir = opt[2].cwd.split('/').slice(-2).join('/') + console.log('Installing ', chalk.cyan(dir)); console.log(chalk.gray(opt[0], opt[1].join(' '))); console.log('\n'); - const spinner = ora('installing').start() const current = execa(opt[0], opt[1], opt[2]) current.stdout.pipe(process.stdout) try { await current; - spinner.succeed() + spinner.succeed('Installed.') await install(index + 1) } catch(e) { - spinner.fail() + spinner.fail('Install Fail.') console.log(e) } }