diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 5b4982b1adf..034bca7d18e 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -41,6 +41,43 @@ module.exports = { }, }, ], + ['@simonbrunel/vuepress-plugin-versions', { + filters: { + suffix: (v) => v ? ` (${v})` : '' + }, + menu: { + items: [ + { + text: 'Documentation', + items: [ + { + text: 'Development (master)', + link: '/docs/master/', + }, + { + type: 'versions', + text: '{{version}}{{tag|suffix}}', + link: '/docs/{{version}}/', + exclude: /^[01]\.|2\.[0-5]\./, + group: 'minor', + } + ] + }, + { + text: 'Release notes (5 latest)', + items: [ + { + type: 'versions', + limit: 5, + target: '_blank', + group: 'patch', + link: 'https://github.com/chartjs/Chart.js/releases/tag/v{{version}}' + } + ] + } + ] + }, + }], ], chainWebpack(config) { config.merge({ diff --git a/package-lock.json b/package-lock.json index e616c4ce617..bbbce44d58a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2944,6 +2944,17 @@ } } }, + "@simonbrunel/vuepress-plugin-versions": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@simonbrunel/vuepress-plugin-versions/-/vuepress-plugin-versions-0.1.0.tgz", + "integrity": "sha512-C1J3u9060+hNY/DTz4Ksos/ksDBt2wc83OoWJw3VmyFNiOPr6ot/pGLw92W9E4ylXzlSsvIvWdVM5s3N8yOASA==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1", + "semiver": "^1.1.0", + "stringify-object": "^3.3.0" + } + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -10869,6 +10880,12 @@ "lower-case": "^1.1.1" } }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, "node-forge": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", @@ -13215,6 +13232,12 @@ "node-forge": "^0.10.0" } }, + "semiver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", + "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", + "dev": true + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -14098,6 +14121,31 @@ "safe-buffer": "~5.1.0" } }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + } + } + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", diff --git a/package.json b/package.json index 1b7d97b2c2b..1b479d949a7 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "@rollup/plugin-inject": "^4.0.2", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^11.2.1", + "@simonbrunel/vuepress-plugin-versions": "^0.1.0", "@typescript-eslint/eslint-plugin": "^4.21.0", "@typescript-eslint/parser": "^4.21.0", "@vuepress/plugin-google-analytics": "1.8.2",