diff --git a/.gitignore b/.gitignore index e31dfe570c..d6a758dc30 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ node_modules TODOs.md packages/@vuepress/shared-utils/lib/ types +**/.vuepress/dist diff --git a/packages/@vuepress/core/lib/node/App.js b/packages/@vuepress/core/lib/node/App.js index 99df7fc280..499a4ead2b 100755 --- a/packages/@vuepress/core/lib/node/App.js +++ b/packages/@vuepress/core/lib/node/App.js @@ -163,6 +163,7 @@ module.exports = class App { after: '' }) .use('@vuepress/last-updated', !!shouldUseLastUpdated) + .use('@vuepress/public-files', ['.vuepress/public']) .use('@vuepress/register-components', { componentsDir: [ path.resolve(this.sourceDir, '.vuepress/components'), diff --git a/packages/@vuepress/core/lib/node/webpack/createServerConfig.js b/packages/@vuepress/core/lib/node/webpack/createServerConfig.js index c8b3db6367..315fe91322 100644 --- a/packages/@vuepress/core/lib/node/webpack/createServerConfig.js +++ b/packages/@vuepress/core/lib/node/webpack/createServerConfig.js @@ -5,14 +5,11 @@ */ module.exports = function createServerConfig (ctx) { - const fs = require('fs') - const { path, env } = require('@vuepress/shared-utils') + const { env } = require('@vuepress/shared-utils') const createBaseConfig = require('./createBaseConfig') const VueSSRServerPlugin = require('vue-server-renderer/server-plugin') - const CopyPlugin = require('copy-webpack-plugin') const config = createBaseConfig(ctx, true /* isServer */) - const { sourceDir, outDir } = ctx config .target('node') @@ -36,15 +33,6 @@ module.exports = function createServerConfig (ctx) { filename: 'manifest/server.json' }]) - const publicDir = path.resolve(sourceDir, '.vuepress/public') - if (fs.existsSync(publicDir)) { - config - .plugin('copy') - .use(CopyPlugin, [[ - { from: publicDir, to: outDir } - ]]) - } - if (!env.isDebug) { const WebpackBar = require('webpackbar') config diff --git a/packages/@vuepress/core/package.json b/packages/@vuepress/core/package.json index e4d8798924..3b048e8e4c 100644 --- a/packages/@vuepress/core/package.json +++ b/packages/@vuepress/core/package.json @@ -41,7 +41,6 @@ "cache-loader": "^3.0.0", "chokidar": "^2.0.3", "connect-history-api-fallback": "^1.5.0", - "copy-webpack-plugin": "^5.0.2", "cross-spawn": "^6.0.5", "css-loader": "^2.1.1", "file-loader": "^3.0.1", diff --git a/packages/@vuepress/plugin-public-files/README.md b/packages/@vuepress/plugin-public-files/README.md new file mode 100644 index 0000000000..cf3e264ae8 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/README.md @@ -0,0 +1,5 @@ +# @vuepress/plugin-public-files + +> plugin for register public files + +See [documentation](https://v1.vuepress.vuejs.org/plugin/official/plugin-public-files.html). diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/.dotfile b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.dotfile new file mode 100644 index 0000000000..a21a8f5987 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.dotfile @@ -0,0 +1 @@ +dotfile \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/.dotfolder/foo.txt b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.dotfolder/foo.txt new file mode 100644 index 0000000000..0478b08eaa --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.dotfolder/foo.txt @@ -0,0 +1 @@ +.dotfolder/foo.txt \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/config.js b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/config.js new file mode 100644 index 0000000000..ac9d5eb5d2 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: [ + [require('../../..')] + ] +} diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/.dotfile b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/.dotfile new file mode 100644 index 0000000000..a21a8f5987 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/.dotfile @@ -0,0 +1 @@ +dotfile \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/.dotfolder/foo.txt b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/.dotfolder/foo.txt new file mode 100644 index 0000000000..0478b08eaa --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/.dotfolder/foo.txt @@ -0,0 +1 @@ +.dotfolder/foo.txt \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/bar/foo.txt b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/bar/foo.txt new file mode 100644 index 0000000000..a07be60f2d --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/bar/foo.txt @@ -0,0 +1 @@ +bar/foo.txt \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/foo.txt b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/foo.txt new file mode 100644 index 0000000000..996f1789ff --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/public/foo.txt @@ -0,0 +1 @@ +foo.txt \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/theme/layouts/Layout.vue b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/theme/layouts/Layout.vue new file mode 100644 index 0000000000..9bca3a6a4a --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/.vuepress/theme/layouts/Layout.vue @@ -0,0 +1,3 @@ + diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/bar/baz.txt b/packages/@vuepress/plugin-public-files/__tests__/docs-1/bar/baz.txt new file mode 100644 index 0000000000..17eb55a45c --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/bar/baz.txt @@ -0,0 +1 @@ +bar/baz.txt \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/bar/readme.md b/packages/@vuepress/plugin-public-files/__tests__/docs-1/bar/readme.md new file mode 100644 index 0000000000..7743c88434 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/bar/readme.md @@ -0,0 +1 @@ +bar/readme \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/baz.txt b/packages/@vuepress/plugin-public-files/__tests__/docs-1/baz.txt new file mode 100644 index 0000000000..50186d7ad6 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/baz.txt @@ -0,0 +1 @@ +baz.txt \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-1/readme.md b/packages/@vuepress/plugin-public-files/__tests__/docs-1/readme.md new file mode 100644 index 0000000000..ea786ff2cf --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-1/readme.md @@ -0,0 +1 @@ +readme \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-2/.vuepress/config.js b/packages/@vuepress/plugin-public-files/__tests__/docs-2/.vuepress/config.js new file mode 100644 index 0000000000..93d1c47206 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-2/.vuepress/config.js @@ -0,0 +1,9 @@ +module.exports = { + plugins: [ + [require('../../..'), { + from: '_assets', + to: 'assets', + ignore: ['*.ignore'], + }] + ] +} diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-2/.vuepress/public/foo.txt b/packages/@vuepress/plugin-public-files/__tests__/docs-2/.vuepress/public/foo.txt new file mode 100644 index 0000000000..996f1789ff --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-2/.vuepress/public/foo.txt @@ -0,0 +1 @@ +foo.txt \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-2/.vuepress/theme/layouts/Layout.vue b/packages/@vuepress/plugin-public-files/__tests__/docs-2/.vuepress/theme/layouts/Layout.vue new file mode 100644 index 0000000000..9bca3a6a4a --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-2/.vuepress/theme/layouts/Layout.vue @@ -0,0 +1,3 @@ + diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/.dotfile b/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/.dotfile new file mode 100644 index 0000000000..a21a8f5987 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/.dotfile @@ -0,0 +1 @@ +dotfile \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/.dotfolder/foo.txt b/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/.dotfolder/foo.txt new file mode 100644 index 0000000000..0478b08eaa --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/.dotfolder/foo.txt @@ -0,0 +1 @@ +.dotfolder/foo.txt \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/bar.png b/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/bar.png new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/baz.ignore b/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/baz.ignore new file mode 100644 index 0000000000..3f95386662 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-2/_assets/baz.ignore @@ -0,0 +1 @@ +baz \ No newline at end of file diff --git a/packages/@vuepress/plugin-public-files/__tests__/docs-2/readme.md b/packages/@vuepress/plugin-public-files/__tests__/docs-2/readme.md new file mode 100644 index 0000000000..cb28655f2e --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/docs-2/readme.md @@ -0,0 +1,3 @@ +readme + +![bar](/bar.png) diff --git a/packages/@vuepress/plugin-public-files/__tests__/index.spec.js b/packages/@vuepress/plugin-public-files/__tests__/index.spec.js new file mode 100644 index 0000000000..6e009ff927 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/__tests__/index.spec.js @@ -0,0 +1,54 @@ +/** + * @jest-environment node + */ + +const { createApp } = require('@vuepress/core') +const { path: { resolve }, fs } = require('@vuepress/shared-utils') + +function testForExistence (app, name, existence = true) { + test(`${existence ? '' : 'in'}existence: ${name}`, () => { + expect(fs.existsSync(resolve(app.outDir, name))).toBe(existence) + }) +} + +describe('plugin-public-files: source folder', () => { + const app = createApp({ + sourceDir: resolve(__dirname, 'docs-1') + }) + + beforeAll(async () => { + await app.process() + await app.build() + }, 60000) + + testForExistence(app, 'foo.txt') + testForExistence(app, 'baz.txt') + testForExistence(app, 'bar/foo.txt') + testForExistence(app, 'bar/baz.txt') + testForExistence(app, 'index.html') + testForExistence(app, 'readme.md', false) + testForExistence(app, '.dotfile', false) + testForExistence(app, '.dotfolder', false) + testForExistence(app, 'bar/readme.md', false) +}) + +describe('plugin-public-files: assets folder', () => { + const app = createApp({ + sourceDir: resolve(__dirname, 'docs-2') + }) + + beforeAll(async () => { + await app.process() + await app.build() + }, 60000) + + testForExistence(app, 'foo.txt') + testForExistence(app, 'assets/bar.png') + testForExistence(app, 'assets/.dotfile') + testForExistence(app, 'assets/.dotfolder/foo.txt') + testForExistence(app, 'bar.png', false) + testForExistence(app, 'baz.ignore', false) + testForExistence(app, '.dotfile', false) + testForExistence(app, '.dotfolder', false) + testForExistence(app, 'assets/baz.ignore', false) +}) diff --git a/packages/@vuepress/plugin-public-files/index.js b/packages/@vuepress/plugin-public-files/index.js new file mode 100644 index 0000000000..4402365651 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/index.js @@ -0,0 +1,34 @@ +const { + fs: { existsSync }, + path: { resolve } +} = require('@vuepress/shared-utils') +const CopyPlugin = require('copy-webpack-plugin') +const mergeable = require('vuepress-mergeable') + +module.exports = mergeable((patterns, context) => ({ + name: `@vuepress/plugin-public-files`, + + chainWebpack (config) { + if (!Array.isArray(patterns)) patterns = [patterns] + + config + .plugin('copy') + .use(CopyPlugin, [patterns.map((pattern) => { + pattern = typeof pattern === 'string' + ? { from: pattern } + : { ...pattern } + + // `from` will be resolved based on `sourceDir` + pattern.from = resolve(context.sourceDir, pattern.from || '') + if (!existsSync(pattern.from)) return + + // `to` will be resolved based on `outDir` + pattern.to = resolve(context.outDir, pattern.to || '') + + // ignore dotfiles and markdown by default + pattern.ignore = pattern.ignore || ['.*', '.*/**', '*.md'] + + return pattern + }).filter(p => p)]) + } +}), 'flat') diff --git a/packages/@vuepress/plugin-public-files/package.json b/packages/@vuepress/plugin-public-files/package.json new file mode 100644 index 0000000000..dda4859972 --- /dev/null +++ b/packages/@vuepress/plugin-public-files/package.json @@ -0,0 +1,36 @@ +{ + "name": "@vuepress/plugin-public-files", + "version": "1.0.4", + "description": "register-public-files plugin for vuepress", + "main": "index.js", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vuepress.git", + "directory": "packages/@vuepress/plugin-public-files" + }, + "scripts": { + "build": "vuepress build __tests__/docs-1", + "jest": "jest .*\\.spec\\.js$" + }, + "keywords": [ + "documentation", + "vue", + "vuepress", + "generator" + ], + "author": "Shigma <1700011071@pku.edu.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vuepress/issues" + }, + "homepage": "https://github.com/vuejs/vuepress/packages/@vuepress/plugin-public-files#readme", + "dependencies": { + "@vuepress/core": "^1.0.4", + "@vuepress/shared-utils": "^1.0.4", + "copy-webpack-plugin": "^5.0.3", + "vuepress-mergeable": "^1.0.1" + } +} diff --git a/packages/docs/docs/plugin/official/plugin-public-files.md b/packages/docs/docs/plugin/official/plugin-public-files.md new file mode 100644 index 0000000000..e6135e5d92 --- /dev/null +++ b/packages/docs/docs/plugin/official/plugin-public-files.md @@ -0,0 +1,94 @@ +--- +title: public-files +metaTitle: public files plugin | VuePress +--- + +# [@vuepress/plugin-public-files](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-public-files) + +> public files plugin + +## Installation + +```bash +yarn add -D @vuepress/plugin-public-files +# OR npm install -D @vuepress/plugin-public-files +``` + +## Usage + +### Default Usage + +```js +module.exports = { + plugins: [ + // includes all files in `sourceDir` + // ignore dotfiles and markdown + "@vuepress/public-files" + ] +}; +``` + +### An Array of Patterns + +```js +module.exports = { + plugins: [ + [ + "@vuepress/public-files", + [ + ".vuepress/another-public", + ".vuepress/one-more-public", + ".vuepress/public-file.txt" + ] + ] + ] +}; +``` + +### object style of pattern + +See: [https://github.com/webpack-contrib/copy-webpack-plugin#patterns](https://github.com/webpack-contrib/copy-webpack-plugin#patterns) + +```js +module.exports = { + plugins: [ + [ + "@vuepress/public-files", + { + from: "_assets", // resolved based on sourceDir + to: "assets", // resolved based on outDir + ignore: [ + /* glob patterns to be ignored */ + ] + } + ] + ] +}; +``` + +::: tip +In fact we support specifying a list of strings or objects. +::: + +### Use Multiple Times + +```js +module.exports = { + plugins: [ + [ + "@vuepress/public-files", + [".vuepress/another-public", ".vuepress/one-more-public"] + ], + [ + "@vuepress/public-files", + { + from: "_assets", + to: "assets", + ignore: [ + /* globs */ + ] + } + ] + ] +}; +``` diff --git a/packages/docs/docs/zh/plugin/official/plugin-public-files.md b/packages/docs/docs/zh/plugin/official/plugin-public-files.md new file mode 100644 index 0000000000..b386993816 --- /dev/null +++ b/packages/docs/docs/zh/plugin/official/plugin-public-files.md @@ -0,0 +1,94 @@ +--- +title: public-files +metaTitle: public files 插件 | VuePress +--- + +# [@vuepress/plugin-public-files](https://github.com/vuejs/vuepress/tree/master/packages/@vuepress/plugin-public-files) + +> public files 插件 + +## 安装 + +```bash +yarn add -D @vuepress/plugin-public-files +# OR npm install -D @vuepress/plugin-public-files +``` + +## 使用 + +### 默认形式 + +```js +module.exports = { + plugins: [ + // 会将所有 sourceDir 下的文件拷贝 + // 除了 .md 文件和 dotfiles + "@vuepress/public-files" + ] +}; +``` + +### 文件或目录列表 + +```js +module.exports = { + plugins: [ + [ + "@vuepress/public-files", + [ + ".vuepress/another-public", + ".vuepress/one-more-public", + ".vuepress/public-file.txt" + ] + ] + ] +}; +``` + +### 对象形式的配置 + +参见:[https://github.com/webpack-contrib/copy-webpack-plugin#patterns](https://github.com/webpack-contrib/copy-webpack-plugin#patterns) + +```js +module.exports = { + plugins: [ + [ + "@vuepress/public-files", + { + from: "_assets", // 根据 sourceDir 解析 + to: "assets", // 根据 outDir 解析 + ignore: [ + /* 要忽略文件的 glob 模式 */ + ] + } + ] + ] +}; +``` + +::: tip +事实上我们支持设置一个字符串或对象组成的列表。 +::: + +### 多次使用 + +```js +module.exports = { + plugins: [ + [ + "@vuepress/public-files", + [".vuepress/another-public", ".vuepress/one-more-public"] + ], + [ + "@vuepress/public-files", + { + from: "_assets", + to: "assets", + ignore: [ + /* globs */ + ] + } + ] + ] +}; +``` diff --git a/yarn.lock b/yarn.lock index e9b7a9c7da..05a3f80bdb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2293,7 +2293,7 @@ array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" -array-flatten@^2.1.0: +array-flatten@^2.1.0, array-flatten@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" @@ -2824,7 +2824,7 @@ cac@^6.3.9: version "6.4.2" resolved "https://registry.yarnpkg.com/cac/-/cac-6.4.2.tgz#6b2a2ab12619b778b3acc19f97e5298761d9c3de" -cacache@^11.0.1, cacache@^11.0.2, cacache@^11.3.1, cacache@^11.3.2: +cacache@^11.0.1, cacache@^11.0.2, cacache@^11.3.2: version "11.3.2" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" dependencies: @@ -3639,20 +3639,22 @@ copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" -copy-webpack-plugin@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.0.2.tgz#56186dfddbf9aa1b29c97fa4c796c1be98870da4" +copy-webpack-plugin@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.0.3.tgz#2179e3c8fd69f13afe74da338896f1f01a875b5c" + integrity sha512-PlZRs9CUMnAVylZq+vg2Juew662jWtwOXOqH4lbQD9ZFhRG9R7tVStOgHt21CBGVq7k5yIJaz8TXDLSjV+Lj8Q== dependencies: - cacache "^11.3.1" - find-cache-dir "^2.0.0" + cacache "^11.3.2" + find-cache-dir "^2.1.0" glob-parent "^3.1.0" globby "^7.1.1" - is-glob "^4.0.0" - loader-utils "^1.1.0" + is-glob "^4.0.1" + loader-utils "^1.2.3" minimatch "^3.0.4" normalize-path "^3.0.0" - p-limit "^2.1.0" - serialize-javascript "^1.4.0" + p-limit "^2.2.0" + schema-utils "^1.0.0" + serialize-javascript "^1.7.0" webpack-log "^2.0.0" core-js@^2.4.0, core-js@^2.5.7, core-js@^2.6.5: @@ -4033,6 +4035,13 @@ decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" +deconstruct-merge@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/deconstruct-merge/-/deconstruct-merge-1.1.0.tgz#ed9986ce729d9e67bdbc5780a771a021947ab3d3" + integrity sha512-o0RFi4YhLf+FJKQ2ly7iDePl9WtdY+RJIPd0wEDlMlK0wTxfywS9DxYQeei8N4qqHKoy8Idp4UXPtXFIVn0PrA== + dependencies: + array-flatten "^2.1.2" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -8412,7 +8421,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.1.0, p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" dependencies: @@ -11982,6 +11991,13 @@ vuepress-html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" +vuepress-mergeable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vuepress-mergeable/-/vuepress-mergeable-1.0.1.tgz#0ed8c1953b88bc1943e7a84a2696860245f0b5b4" + integrity sha512-2rXnrs39o3W+AJi/9GTOcKvmSPcf6zny2Ru2xmB6f7W3hSPpXLI1AMSgOjRsbEGrimvxn/aviuCsQcj7U/wfmA== + dependencies: + deconstruct-merge "^1.1.0" + vuepress-plugin-container@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/vuepress-plugin-container/-/vuepress-plugin-container-2.0.1.tgz#b20ef97dd91f137c8be119460927c5ffd64e0f77"