From 796bd0ce8aa9e816524ccf74d8697b85321c0f15 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Thu, 23 Apr 2020 10:14:06 +0300 Subject: [PATCH 001/106] fix(v2): hide sidebar after click on child item (#2649) --- packages/docusaurus-theme-classic/src/theme/Navbar/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/index.js b/packages/docusaurus-theme-classic/src/theme/Navbar/index.js index 1705decaea84..d7c5d066ece2 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/index.js +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/index.js @@ -91,7 +91,11 @@ function MobileNavItem({items, ...props}) { From 0a2a037dbb43d3c01dd68977bbb871fe9f12be82 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Thu, 23 Apr 2020 10:42:16 +0300 Subject: [PATCH 002/106] fix(v2): adjust proper padding top of doc page on mobiles --- .../src/theme/DocPage/styles.module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docusaurus-theme-classic/src/theme/DocPage/styles.module.css b/packages/docusaurus-theme-classic/src/theme/DocPage/styles.module.css index ad8b95f075c4..b981cb73e683 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocPage/styles.module.css +++ b/packages/docusaurus-theme-classic/src/theme/DocPage/styles.module.css @@ -27,6 +27,6 @@ } .docSidebarContainer { - display: none; + margin-top: 0; } } From 3c27e23f38ae63feda9caa4c0aaffc7784afb52c Mon Sep 17 00:00:00 2001 From: Anayo Oleru Date: Fri, 24 Apr 2020 03:28:13 +0100 Subject: [PATCH 003/106] docs(v1): showcase user Quicksi (#2650) - quicksi - add logo - add info link --- website-1.x/data/users.js | 7 +++++++ website-1.x/static/img/users/quicksi.png | Bin 0 -> 193792 bytes 2 files changed, 7 insertions(+) create mode 100644 website-1.x/static/img/users/quicksi.png diff --git a/website-1.x/data/users.js b/website-1.x/data/users.js index 575f77a82f1e..1c2b15d8c55e 100644 --- a/website-1.x/data/users.js +++ b/website-1.x/data/users.js @@ -553,6 +553,13 @@ module.exports = [ fbOpenSource: false, pinned: false, }, + { + caption: 'Quicksi', + image: '/img/users/quicksi.png', + infoLink: 'https://quicksi-bot.now.sh/', + fbOpenSource: false, + pinned: false, + }, { caption: 'Rawsec Inventory', image: '/img/users/rawsec.png', diff --git a/website-1.x/static/img/users/quicksi.png b/website-1.x/static/img/users/quicksi.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4a049675f4ebc401ac3663e0bc6b0441e574c5 GIT binary patch literal 193792 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 literal 0 HcmV?d00001 From 9e1f816fcdbff504fd4790603e7bfa7c95400792 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Fri, 24 Apr 2020 07:18:54 +0300 Subject: [PATCH 004/106] fix(v2): use remark-admonitions separately in each plugin instead of in preset only (#2642) * fix(v2): use remark-admonitions separately in each plugin instead of in preset only * Update types.d.ts * Update types.d.ts * Address fixes from review Co-authored-by: Yangshun Tay --- .../package.json | 3 +- .../src/index.ts | 19 +++++++++++ .../src/types.ts | 3 +- .../docusaurus-plugin-content-blog/types.d.ts | 13 +++++++ .../package.json | 1 + .../src/index.ts | 19 +++++++++++ .../src/types.ts | 3 +- .../docusaurus-plugin-content-docs/types.d.ts | 13 +++++++ .../docusaurus-preset-classic/package.json | 3 +- .../docusaurus-preset-classic/src/index.js | 34 ++----------------- .../docusaurus-theme-classic/src/index.js | 1 - 11 files changed, 75 insertions(+), 37 deletions(-) create mode 100644 packages/docusaurus-plugin-content-blog/types.d.ts create mode 100644 packages/docusaurus-plugin-content-docs/types.d.ts diff --git a/packages/docusaurus-plugin-content-blog/package.json b/packages/docusaurus-plugin-content-blog/package.json index e6f886cbca48..269d3a7bdc60 100644 --- a/packages/docusaurus-plugin-content-blog/package.json +++ b/packages/docusaurus-plugin-content-blog/package.json @@ -21,7 +21,8 @@ "globby": "^10.0.1", "loader-utils": "^1.2.3", "lodash.kebabcase": "^4.1.1", - "reading-time": "^1.2.0" + "reading-time": "^1.2.0", + "remark-admonitions": "^1.2.1" }, "peerDependencies": { "@docusaurus/core": "^2.0.0", diff --git a/packages/docusaurus-plugin-content-blog/src/index.ts b/packages/docusaurus-plugin-content-blog/src/index.ts index 1868e9698a36..40a8cf75adab 100644 --- a/packages/docusaurus-plugin-content-blog/src/index.ts +++ b/packages/docusaurus-plugin-content-blog/src/index.ts @@ -8,6 +8,7 @@ import fs from 'fs-extra'; import kebabCase from 'lodash.kebabcase'; import path from 'path'; +import admonitions from 'remark-admonitions'; import {normalizeUrl, docuHash, aliasedSitePath} from '@docusaurus/utils'; import { @@ -45,6 +46,7 @@ const DEFAULT_OPTIONS: PluginOptions = { rehypePlugins: [], editUrl: undefined, truncateMarker: //, // Regex. + admonitions: {}, }; function assertFeedTypes(val: any): asserts val is FeedType { @@ -72,6 +74,13 @@ export default function pluginContentBlog( opts: Partial, ): Plugin { const options: PluginOptions = {...DEFAULT_OPTIONS, ...opts}; + + if (options.admonitions) { + options.remarkPlugins = options.remarkPlugins.concat([ + [admonitions, opts.admonitions || {}], + ]); + } + const {siteDir, generatedFilesDir} = context; const contentPath = path.resolve(siteDir, options.path); const dataDir = path.join( @@ -89,6 +98,16 @@ export default function pluginContentBlog( return [...globPattern]; }, + getClientModules() { + const modules = []; + + if (options.admonitions) { + modules.push('remark-admonitions/styles/infima.css'); + } + + return modules; + }, + // Fetches blog contents and returns metadata for the necessary routes. async loadContent() { const {postsPerPage, routeBasePath} = options; diff --git a/packages/docusaurus-plugin-content-blog/src/types.ts b/packages/docusaurus-plugin-content-blog/src/types.ts index 80c9ddd6b451..a556b9838589 100644 --- a/packages/docusaurus-plugin-content-blog/src/types.ts +++ b/packages/docusaurus-plugin-content-blog/src/types.ts @@ -28,7 +28,7 @@ export interface PluginOptions { blogPostComponent: string; blogTagsListComponent: string; blogTagsPostsComponent: string; - remarkPlugins: string[]; + remarkPlugins: ([Function, object] | Function)[]; rehypePlugins: string[]; truncateMarker: RegExp; showReadingTime: boolean; @@ -40,6 +40,7 @@ export interface PluginOptions { language?: string; }; editUrl?: string; + admonitions: any; } export interface BlogTags { diff --git a/packages/docusaurus-plugin-content-blog/types.d.ts b/packages/docusaurus-plugin-content-blog/types.d.ts new file mode 100644 index 000000000000..c0c9f3a8ec03 --- /dev/null +++ b/packages/docusaurus-plugin-content-blog/types.d.ts @@ -0,0 +1,13 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +declare module 'remark-admonitions' { + type Options = any; + + const plugin: (options?: Options) => void; + export = plugin; +} diff --git a/packages/docusaurus-plugin-content-docs/package.json b/packages/docusaurus-plugin-content-docs/package.json index 1e77023c7b20..a1bb17523edc 100644 --- a/packages/docusaurus-plugin-content-docs/package.json +++ b/packages/docusaurus-plugin-content-docs/package.json @@ -27,6 +27,7 @@ "lodash.groupby": "^4.6.0", "lodash.pick": "^4.4.0", "lodash.pickby": "^4.6.0", + "remark-admonitions": "^1.2.1", "shelljs": "^0.8.3" }, "peerDependencies": { diff --git a/packages/docusaurus-plugin-content-docs/src/index.ts b/packages/docusaurus-plugin-content-docs/src/index.ts index 9ce59a939ccb..a362cb866dca 100644 --- a/packages/docusaurus-plugin-content-docs/src/index.ts +++ b/packages/docusaurus-plugin-content-docs/src/index.ts @@ -11,6 +11,7 @@ import pickBy from 'lodash.pickby'; import globby from 'globby'; import fs from 'fs-extra'; import path from 'path'; +import admonitions from 'remark-admonitions'; import { normalizeUrl, docuHash, @@ -57,6 +58,7 @@ const DEFAULT_OPTIONS: PluginOptions = { rehypePlugins: [], showLastUpdateTime: false, showLastUpdateAuthor: false, + admonitions: {}, }; export default function pluginContentDocs( @@ -64,6 +66,13 @@ export default function pluginContentDocs( opts: Partial, ): Plugin { const options = {...DEFAULT_OPTIONS, ...opts}; + + if (options.admonitions) { + options.remarkPlugins = options.remarkPlugins.concat([ + [admonitions, options.admonitions], + ]); + } + const {siteDir, generatedFilesDir, baseUrl} = context; const docsDir = path.resolve(siteDir, options.path); const sourceToPermalink: SourceToPermalink = {}; @@ -119,6 +128,16 @@ export default function pluginContentDocs( return [...globPattern, options.sidebarPath]; }, + getClientModules() { + const modules = []; + + if (options.admonitions) { + modules.push('remark-admonitions/styles/infima.css'); + } + + return modules; + }, + // Fetches blog contents and returns metadata for the contents. async loadContent() { const {include, sidebarPath} = options; diff --git a/packages/docusaurus-plugin-content-docs/src/types.ts b/packages/docusaurus-plugin-content-docs/src/types.ts index 4929797c598b..ee5ecce11425 100644 --- a/packages/docusaurus-plugin-content-docs/src/types.ts +++ b/packages/docusaurus-plugin-content-docs/src/types.ts @@ -21,8 +21,9 @@ export interface PluginOptions extends MetadataOptions, PathOptions { include: string[]; docLayoutComponent: string; docItemComponent: string; - remarkPlugins: string[]; + remarkPlugins: ([Function, object] | Function)[]; rehypePlugins: string[]; + admonitions: any; } export type SidebarItemDoc = { diff --git a/packages/docusaurus-plugin-content-docs/types.d.ts b/packages/docusaurus-plugin-content-docs/types.d.ts new file mode 100644 index 000000000000..c0c9f3a8ec03 --- /dev/null +++ b/packages/docusaurus-plugin-content-docs/types.d.ts @@ -0,0 +1,13 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +declare module 'remark-admonitions' { + type Options = any; + + const plugin: (options?: Options) => void; + export = plugin; +} diff --git a/packages/docusaurus-preset-classic/package.json b/packages/docusaurus-preset-classic/package.json index 495c66a82855..4395551b8846 100644 --- a/packages/docusaurus-preset-classic/package.json +++ b/packages/docusaurus-preset-classic/package.json @@ -15,8 +15,7 @@ "@docusaurus/plugin-google-gtag": "^2.0.0-alpha.50", "@docusaurus/plugin-sitemap": "^2.0.0-alpha.50", "@docusaurus/theme-classic": "^2.0.0-alpha.50", - "@docusaurus/theme-search-algolia": "^2.0.0-alpha.50", - "remark-admonitions": "^1.2.1" + "@docusaurus/theme-search-algolia": "^2.0.0-alpha.50" }, "peerDependencies": { "@docusaurus/core": "^2.0.0" diff --git a/packages/docusaurus-preset-classic/src/index.js b/packages/docusaurus-preset-classic/src/index.js index ba7e92d39dbe..ac74ef9269e6 100644 --- a/packages/docusaurus-preset-classic/src/index.js +++ b/packages/docusaurus-preset-classic/src/index.js @@ -5,40 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -const admonitions = require('remark-admonitions'); - -const addAdmonitions = (pluginOptions) => { - if (pluginOptions == null) { - return { - remarkPlugins: [admonitions], - }; - } - - if (pluginOptions.admonitions === false) { - return pluginOptions; - } - - const admonitionsOptions = { - remarkPlugins: (pluginOptions.remarkPlugins || []).concat([ - [admonitions, pluginOptions.admonitions || {}], - ]), - }; - - return { - ...pluginOptions, - ...admonitionsOptions, - }; -}; - module.exports = function preset(context, opts = {}) { const {siteConfig = {}} = context; const {themeConfig} = siteConfig; const {algolia, googleAnalytics, gtag} = themeConfig; - - const docs = addAdmonitions(opts.docs); - const blog = addAdmonitions(opts.blog); - const isProd = process.env.NODE_ENV === 'production'; + return { themes: [ ['@docusaurus/theme-classic', opts.theme], @@ -46,8 +18,8 @@ module.exports = function preset(context, opts = {}) { algolia && '@docusaurus/theme-search-algolia', ], plugins: [ - ['@docusaurus/plugin-content-docs', docs], - ['@docusaurus/plugin-content-blog', blog], + ['@docusaurus/plugin-content-docs', opts.docs], + ['@docusaurus/plugin-content-blog', opts.blog], ['@docusaurus/plugin-content-pages', opts.pages], isProd && googleAnalytics && '@docusaurus/plugin-google-analytics', isProd && gtag && '@docusaurus/plugin-google-gtag', diff --git a/packages/docusaurus-theme-classic/src/index.js b/packages/docusaurus-theme-classic/src/index.js index 4233540a82ee..289cf6fb7742 100644 --- a/packages/docusaurus-theme-classic/src/index.js +++ b/packages/docusaurus-theme-classic/src/index.js @@ -58,7 +58,6 @@ module.exports = function (context, options) { getClientModules() { return [ 'infima/dist/css/default/default.css', - 'remark-admonitions/styles/infima.css', customCss, path.resolve(__dirname, './prism-include-languages'), ]; From 70f6023adf1307f792fc2fd8b88a18a4f9fe8e56 Mon Sep 17 00:00:00 2001 From: Yangshun Tay Date: Fri, 24 Apr 2020 12:24:53 +0800 Subject: [PATCH 005/106] misc: update CODEOWNERS --- .github/CODEOWNERS | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1bbc30af3de4..1f25107deae1 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,12 +1,6 @@ # https://help.github.com/articles/about-codeowners/ -/packages/docusaurus-1.x/ @yangshun -/packages/docusaurus-plugin-content-docs/ @yangshun -/packages/docusaurus-plugin-content-blog/ @yangshun -/packages/docusaurus-mdx-loader/ @yangshun -/packages/docusaurus-theme-classic/ @yangshun @lex111 @wgao19 -/packages/docusaurus-init-1.x/ @yangshun -/packages/docusaurus/ @yangshun +/packages/ @yangshun +/packages/docusaurus-theme-classic/ @lex111 /website/ @yangshun -/website/docs/ @wgao19 /website-1.x/ @yangshun From 71b66f1a42fc257337f30c829ff53f6585c1e61a Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sat, 25 Apr 2020 06:59:14 +0300 Subject: [PATCH 006/106] refactor(v2): lose focus of active sidebar item after click on it (#2656) --- .../docusaurus-theme-classic/src/theme/DocSidebar/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js b/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js index c59c3611f437..3669b79c5ce9 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js @@ -213,7 +213,8 @@ function DocSidebar(props) { { + onItemClick={(e) => { + e.target.blur(); setShowResponsiveSidebar(false); }} collapsible={sidebarCollapsible} From fed12e49a43b8dc8970212c872d7589ef59dc03d Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sat, 25 Apr 2020 09:05:09 +0300 Subject: [PATCH 007/106] fix(v2): disable focus on clicked sidebar category --- packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js b/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js index 3669b79c5ce9..7a247b525489 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js @@ -32,6 +32,7 @@ function DocSidebarItem({item, onItemClick, collapsible, ...props}) { const handleItemClick = useCallback((e) => { e.preventDefault(); + e.target.blur(); setCollapsed((state) => !state); }); From 1471a6eb3a03ff6d2ccaa3c2e27c4def545248d3 Mon Sep 17 00:00:00 2001 From: Sylvain Pace Date: Sat, 25 Apr 2020 18:00:01 +0200 Subject: [PATCH 008/106] docs(v2): add mention that appID is optional (#2659) --- website/docs/search.md | 4 ++-- website/versioned_docs/version-2.0.0-alpha.48/search.md | 8 +++++--- website/versioned_docs/version-2.0.0-alpha.50/search.md | 6 ++++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/website/docs/search.md b/website/docs/search.md index 76a9225b0571..1103bf27244f 100644 --- a/website/docs/search.md +++ b/website/docs/search.md @@ -16,7 +16,7 @@ Algolia DocSearch works by crawling the content of your website every 24 hours a ### Connecting Algolia -To connect your docs with Algolia, add an `algolia` field in your `themeConfig`. Note that you will need algolia API key and algolia index. You can [apply for DocSearch here](https://community.algolia.com/docsearch/). +To connect your docs with Algolia, add an `algolia` field in your `themeConfig`. Note that you will need algolia API key and algolia index. You can [apply for DocSearch here](https://docsearch.algolia.com/apply/). ```jsx title="docusaurus.config.js" module.exports = { @@ -25,9 +25,9 @@ module.exports = { // ... // highlight-start algolia: { - appId: 'app-id', apiKey: 'api-key', indexName: 'index-name', + appId: 'app-id', // Optional, if you run the DocSearch crawler on your own algoliaOptions: {}, // Optional, if provided by Algolia }, // highlight-end diff --git a/website/versioned_docs/version-2.0.0-alpha.48/search.md b/website/versioned_docs/version-2.0.0-alpha.48/search.md index ce97f9ca7e43..24ae9c424304 100644 --- a/website/versioned_docs/version-2.0.0-alpha.48/search.md +++ b/website/versioned_docs/version-2.0.0-alpha.48/search.md @@ -20,14 +20,16 @@ To connect your docs with Algolia, add an `algolia` field in your `themeConfig`. ```jsx {4-9} // docusaurus.config.js -themeConfig: { - // .... + themeConfig: { + // ... + // highlight-start algolia: { - appId: 'app-id', apiKey: 'api-key', indexName: 'index-name', + appId: 'app-id', // Optional, if you run the DocSearch crawler on your own algoliaOptions: {}, // Optional, if provided by Algolia }, + // highlight-end }, ``` diff --git a/website/versioned_docs/version-2.0.0-alpha.50/search.md b/website/versioned_docs/version-2.0.0-alpha.50/search.md index 0805afe0e935..21f11674622a 100644 --- a/website/versioned_docs/version-2.0.0-alpha.50/search.md +++ b/website/versioned_docs/version-2.0.0-alpha.50/search.md @@ -19,14 +19,16 @@ Algolia DocSearch works by crawling the content of your website every 24 hours a To connect your docs with Algolia, add an `algolia` field in your `themeConfig`. Note that you will need algolia API key and algolia index. You can [apply for DocSearch here](https://community.algolia.com/docsearch/). ```jsx {3-8} title="docusaurus.config.js" -themeConfig: { + themeConfig: { // ... + // highlight-start algolia: { - appId: 'app-id', apiKey: 'api-key', indexName: 'index-name', + appId: 'app-id', // Optional, if you run the DocSearch crawler on your own algoliaOptions: {}, // Optional, if provided by Algolia }, + // highlight-end }, ``` From 2d0ba85973fe19bc7cacae324d982956549951e3 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sat, 25 Apr 2020 19:55:31 +0300 Subject: [PATCH 009/106] chore: update caniuse-lite (yarn.lock) --- yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 236513bed4ea..e5a38e5d06c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4433,19 +4433,19 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015: - version "1.0.30001016" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001016.tgz#16ea48d7d6e8caf3cad3295c2d746fe38c4e7f66" - integrity sha512-yYQ2QfotceRiH4U+h1Us86WJXtVHDmy3nEKIdYPsZCYnOV5/tMgGbmoIlrMzmh2VXlproqYtVaKeGDBkMZifFA== + version "1.0.30001047" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001047.tgz" + integrity sha512-eaZFO+zPTGCCi5EBK0Ri8f2qXJ1lLH0Ic/UM2wrfc0bQkSiwGEk75tZEu2Gns7uvTMKcADLh0+QdTjzcRt3owA== caniuse-lite@^1.0.30001035: - version "1.0.30001036" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001036.tgz#930ea5272010d8bf190d859159d757c0b398caf0" - integrity sha512-jU8CIFIj2oR7r4W+5AKcsvWNVIb6Q6OZE3UsrXrZBHFtreT4YgTeOJtTucp+zSedEpTi3L5wASSP0LYIE3if6w== + version "1.0.30001047" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001047.tgz" + integrity sha512-eaZFO+zPTGCCi5EBK0Ri8f2qXJ1lLH0Ic/UM2wrfc0bQkSiwGEk75tZEu2Gns7uvTMKcADLh0+QdTjzcRt3owA== caniuse-lite@^1.0.30001036, caniuse-lite@^1.0.30001038: - version "1.0.30001038" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz#44da3cbca2ab6cb6aa83d1be5d324e17f141caff" - integrity sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ== + version "1.0.30001047" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001047.tgz" + integrity sha512-eaZFO+zPTGCCi5EBK0Ri8f2qXJ1lLH0Ic/UM2wrfc0bQkSiwGEk75tZEu2Gns7uvTMKcADLh0+QdTjzcRt3owA== capture-exit@^2.0.0: version "2.0.0" From 8730df70446ed8b4a25b15462dc383897885b98c Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sat, 25 Apr 2020 22:34:48 +0300 Subject: [PATCH 010/106] chore: upgrade shelljs to 0.8.4 (#2661) --- packages/docusaurus-1.x/package.json | 2 +- packages/docusaurus-init-1.x/package.json | 2 +- packages/docusaurus-init/package.json | 2 +- packages/docusaurus-plugin-content-docs/package.json | 2 +- packages/docusaurus/package.json | 2 +- yarn.lock | 8 ++++---- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/docusaurus-1.x/package.json b/packages/docusaurus-1.x/package.json index 150aed106801..a5b556821470 100644 --- a/packages/docusaurus-1.x/package.json +++ b/packages/docusaurus-1.x/package.json @@ -66,7 +66,7 @@ "react-dom": "^16.8.4", "remarkable": "^2.0.0", "request": "^2.88.0", - "shelljs": "^0.8.3", + "shelljs": "^0.8.4", "sitemap": "^3.2.2", "tcp-port-used": "^1.0.1", "tiny-lr": "^1.1.1", diff --git a/packages/docusaurus-init-1.x/package.json b/packages/docusaurus-init-1.x/package.json index e9901e934c5d..07d22e929456 100644 --- a/packages/docusaurus-init-1.x/package.json +++ b/packages/docusaurus-init-1.x/package.json @@ -15,6 +15,6 @@ }, "dependencies": { "chalk": "^3.0.0", - "shelljs": "^0.8.3" + "shelljs": "^0.8.4" } } diff --git a/packages/docusaurus-init/package.json b/packages/docusaurus-init/package.json index ad15e01a5e08..dcd1846b7fdd 100644 --- a/packages/docusaurus-init/package.json +++ b/packages/docusaurus-init/package.json @@ -26,7 +26,7 @@ "inquirer": "^7.1.0", "lodash.kebabcase": "^4.1.1", "semver": "^6.3.0", - "shelljs": "^0.8.3" + "shelljs": "^0.8.4" }, "engines": { "node": ">=10.9.0" diff --git a/packages/docusaurus-plugin-content-docs/package.json b/packages/docusaurus-plugin-content-docs/package.json index a1bb17523edc..103de5e90cc3 100644 --- a/packages/docusaurus-plugin-content-docs/package.json +++ b/packages/docusaurus-plugin-content-docs/package.json @@ -28,7 +28,7 @@ "lodash.pick": "^4.4.0", "lodash.pickby": "^4.6.0", "remark-admonitions": "^1.2.1", - "shelljs": "^0.8.3" + "shelljs": "^0.8.4" }, "peerDependencies": { "@docusaurus/core": "^2.0.0", diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index ca6865a4b47a..9a5e3741b252 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -79,7 +79,7 @@ "react-router-config": "^5.1.1", "react-router-dom": "^5.1.2", "semver": "^6.3.0", - "shelljs": "^0.8.3", + "shelljs": "^0.8.4", "std-env": "^2.2.1", "terser-webpack-plugin": "^2.3.5", "wait-file": "^1.0.5", diff --git a/yarn.lock b/yarn.lock index e5a38e5d06c8..2c598d16fcbb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15205,10 +15205,10 @@ shell-quote@1.7.2: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -shelljs@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" - integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== +shelljs@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== dependencies: glob "^7.0.0" interpret "^1.0.0" From af89a926284eba7c03d2a8838e72be37b432be54 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sun, 26 Apr 2020 15:39:34 +0300 Subject: [PATCH 011/106] feat(v2): add fallback to BrowserOnly component (#2665) * feat(v2): add fallback to BrowserOnly component * Update BrowserOnly.tsx * Update docusaurus-core.md Co-authored-by: Yangshun Tay --- packages/docusaurus/src/client/exports/BrowserOnly.tsx | 10 ++++++---- website/docs/docusaurus-core.md | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/docusaurus/src/client/exports/BrowserOnly.tsx b/packages/docusaurus/src/client/exports/BrowserOnly.tsx index 5c39340b12d9..4e2ff6ecd0ab 100644 --- a/packages/docusaurus/src/client/exports/BrowserOnly.tsx +++ b/packages/docusaurus/src/client/exports/BrowserOnly.tsx @@ -8,10 +8,12 @@ import React from 'react'; import ExecutionEnvironment from './ExecutionEnvironment'; -function BrowserOnly({children}) { - return ( - ExecutionEnvironment.canUseDOM && children != null && <>{children()} - ); +function BrowserOnly({children, fallback}) { + if (!ExecutionEnvironment.canUseDOM || children == null) { + return fallback || null; + } + + return <>{children()}; } export default BrowserOnly; diff --git a/website/docs/docusaurus-core.md b/website/docs/docusaurus-core.md index a07f1a168273..f82d441098d0 100644 --- a/website/docs/docusaurus-core.md +++ b/website/docs/docusaurus-core.md @@ -105,14 +105,15 @@ function Home() { ### `` -The `` component accepts a `children` prop, a render function which will not be executed during the pre-rendering phase of the build process. This is useful for hiding code that is only meant to run in the browsers (e.g. where the `window`/`document` objects are being accessed). +The `` component accepts a `children` prop, a render function which will not be executed during the pre-rendering phase of the build process. This is useful for hiding code that is only meant to run in the browsers (e.g. where the `window`/`document` objects are being accessed). To improve SEO, you can also provide fallback content using the `fallback` prop, which will be prerendered until in the build process and replaced with the client-side only contents when viewed in the browser. ```jsx import BrowserOnly from '@docusaurus/BrowserOnly'; function MyComponent() { return ( - + The fallback content to display on prerendering}> {() => { // Something that should be excluded during build process prerendering. }} From 379d3e0d2325799ee693ad8b4cbcb5c7c9611f28 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sun, 26 Apr 2020 19:50:06 +0300 Subject: [PATCH 012/106] chore(v2): upgrade prism-react-renderer to latest version (#2666) --- .../docusaurus-theme-classic/package.json | 4 +-- .../package.json | 2 +- yarn.lock | 27 ++++++++----------- 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index 45f8da069513..b06c637d0620 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -14,8 +14,8 @@ "clipboard": "^2.0.6", "infima": "0.2.0-alpha.6", "parse-numeric-range": "^0.0.2", - "prism-react-renderer": "^1.0.2", - "prismjs": "^1.19.0", + "prism-react-renderer": "^1.1.0", + "prismjs": "^1.20.0", "react-router-dom": "^5.1.2", "react-toggle": "^4.1.1" }, diff --git a/packages/docusaurus-theme-live-codeblock/package.json b/packages/docusaurus-theme-live-codeblock/package.json index 1e531bbae49b..4834f08c680e 100644 --- a/packages/docusaurus-theme-live-codeblock/package.json +++ b/packages/docusaurus-theme-live-codeblock/package.json @@ -12,7 +12,7 @@ "classnames": "^2.2.6", "clipboard": "^2.0.6", "parse-numeric-range": "^0.0.2", - "prism-react-renderer": "^1.0.2", + "prism-react-renderer": "^1.1.0", "react-live": "^2.2.1" }, "peerDependencies": { diff --git a/yarn.lock b/yarn.lock index 2c598d16fcbb..b49c66216a89 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4432,17 +4432,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015: - version "1.0.30001047" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001047.tgz" - integrity sha512-eaZFO+zPTGCCi5EBK0Ri8f2qXJ1lLH0Ic/UM2wrfc0bQkSiwGEk75tZEu2Gns7uvTMKcADLh0+QdTjzcRt3owA== - -caniuse-lite@^1.0.30001035: - version "1.0.30001047" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001047.tgz" - integrity sha512-eaZFO+zPTGCCi5EBK0Ri8f2qXJ1lLH0Ic/UM2wrfc0bQkSiwGEk75tZEu2Gns7uvTMKcADLh0+QdTjzcRt3owA== - -caniuse-lite@^1.0.30001036, caniuse-lite@^1.0.30001038: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001036, caniuse-lite@^1.0.30001038: version "1.0.30001047" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001047.tgz" integrity sha512-eaZFO+zPTGCCi5EBK0Ri8f2qXJ1lLH0Ic/UM2wrfc0bQkSiwGEk75tZEu2Gns7uvTMKcADLh0+QdTjzcRt3owA== @@ -13482,11 +13472,16 @@ pretty-time@^1.1.0: resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -prism-react-renderer@^1.0.1, prism-react-renderer@^1.0.2: +prism-react-renderer@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.0.2.tgz#3bb9a6a42f76fc049b03266298c7068fdd4b7ea9" integrity sha512-0++pJyRfu4v2OxI/Us/5RLui9ESDkTiLkVCtKuPZYdpB8UQWJpnJQhPrWab053XtsKW3oM0sD69uJ6N9exm1Ag== +prism-react-renderer@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.1.0.tgz#6fe1b33f1de1b23afbdb07663d135f9026eef4ad" + integrity sha512-WZAw+mBoxk1qZDD1h1WOg0BVHgyk9zqbuIBFNgP+Z71i515jGL0WZIN1FIF8EgOyh06x8Rr7HAUXxsRsoUZKyg== + prismjs@^1.17.1: version "1.17.1" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be" @@ -13494,10 +13489,10 @@ prismjs@^1.17.1: optionalDependencies: clipboard "^2.0.0" -prismjs@^1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.19.0.tgz#713afbd45c3baca4b321569f2df39e17e729d4dc" - integrity sha512-IVFtbW9mCWm9eOIaEkNyo2Vl4NnEifis2GQ7/MLRG5TQe6t+4Sj9J5QWI9i3v+SS43uZBlCAOn+zYTVYQcPXJw== +prismjs@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.20.0.tgz#9b685fc480a3514ee7198eac6a3bf5024319ff03" + integrity sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ== optionalDependencies: clipboard "^2.0.0" From c0e531e5d9e3e319dc811232b248ff0c92e15b36 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sun, 26 Apr 2020 21:21:36 +0300 Subject: [PATCH 013/106] feat(v2): add ability to specify CSS class for navbar item (#2660) * feat(v2): add ability to specify CSS class for navbar item * Fix linting issues --- .../src/theme/Navbar/index.js | 55 ++++++++++++------- website/docs/theme-classic.md | 1 + website/docusaurus.config.js | 2 +- website/src/css/custom.css | 18 ++++++ 4 files changed, 55 insertions(+), 21 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/index.js b/packages/docusaurus-theme-classic/src/theme/Navbar/index.js index d7c5d066ece2..5db5e854c625 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/index.js +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/index.js @@ -49,9 +49,12 @@ function NavLink({activeBasePath, to, href, label, position, ...props}) { ); } -function NavItem({items, position, ...props}) { +function NavItem({items, position, className, ...props}) { + const navLinkClassNames = (extraClassName) => + classnames('navbar__item', 'navbar__link', extraClassName); + if (!items) { - return ; + return ; } return ( @@ -60,44 +63,56 @@ function NavItem({items, position, ...props}) { 'dropdown--left': position === 'left', 'dropdown--right': position === 'right', })}> - + {props.label}
    - {items.map((linkItemInner, i) => ( -
  • - -
  • - ))} + {items.map( + ({className: childItemClassName, ...linkItemInnerProps}, i) => ( +
  • + +
  • + ), + )}
); } -function MobileNavItem({items, ...props}) { +function MobileNavItem({items, className, ...props}) { + const navLinkClassNames = (extraClassName, isSubList = false) => + classnames('menu__link', extraClassName, { + 'menu__link--sublist': isSubList, + }); + if (!items) { return (
  • - +
  • ); } return (
  • - + {props.label}
      - {items.map((linkItemInner, i) => ( -
    • - -
    • - ))} + {items.map( + ({className: childItemClassName, ...linkItemInnerProps}, i) => ( +
    • + +
    • + ), + )}
  • ); diff --git a/website/docs/theme-classic.md b/website/docs/theme-classic.md index c6d4ce8afbb8..a77816c8920a 100644 --- a/website/docs/theme-classic.md +++ b/website/docs/theme-classic.md @@ -138,6 +138,7 @@ module.exports = { // To apply the active class styling on all // routes starting with this path. activeBasePath: 'docs', + className: '', // Custom CSS class (for styling any item) }, // ... other links ], diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 1e76f8504084..bcbba5488fab 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -120,8 +120,8 @@ module.exports = { }, { href: 'https://github.com/facebook/docusaurus', - label: 'GitHub', position: 'right', + className: 'header-github-link', }, ], }, diff --git a/website/src/css/custom.css b/website/src/css/custom.css index b45ea0a3a234..433ae3f52335 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -35,3 +35,21 @@ html[data-theme='dark'] .docusaurus-highlight-code-line { .navbar__item.dropdown > .navbar__link { pointer-events: none; } + +.header-github-link:hover { + opacity: 0.6; +} + +.header-github-link:before { + content: ''; + width: 24px; + height: 24px; + display: flex; + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") + no-repeat; +} + +html[data-theme='dark'] .header-github-link:before { + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") + no-repeat; +} From 1d8cc4b10f55d54eab28cf9cfc6b89ccebb3fb70 Mon Sep 17 00:00:00 2001 From: Yangshun Tay Date: Mon, 27 Apr 2020 10:50:28 +0800 Subject: [PATCH 014/106] chore(v2): upgrade Infima (#2669) * chore(v2): upgrade Infima * Make proper classes for active items * upgrade Infima to v0.2.0-alpha.9 Co-authored-by: Alexey Pyltsyn --- CHANGELOG-2.x.md | 10 ++++++++ .../docusaurus-theme-classic/package.json | 2 +- .../src/theme/Navbar/index.js | 23 +++++++++++++++---- yarn.lock | 8 +++---- 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/CHANGELOG-2.x.md b/CHANGELOG-2.x.md index 985b7f18cfee..19861df87194 100644 --- a/CHANGELOG-2.x.md +++ b/CHANGELOG-2.x.md @@ -1,5 +1,15 @@ # Docusaurus 2 Changelog +## 2.0.0-alpha.51 + +#### :boom: Breaking Change + +- `infima` + - The following infima variables have been renamed for consistency: + - `--ifm-font-base-color` → `--ifm-font-color-base` + - `--ifm-font-base-color-inverse` → `--ifm-font-color-base-inverse` + - `--ifm-font-color-secondary` → `--ifm-font-color-secondary` + ## 2.0.0-alpha.50 (2020-04-02) **HOTFIX for 2.0.0-alpha.49**. diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index b06c637d0620..ec5578f9d321 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -12,7 +12,7 @@ "@mdx-js/react": "^1.5.8", "classnames": "^2.2.6", "clipboard": "^2.0.6", - "infima": "0.2.0-alpha.6", + "infima": "0.2.0-alpha.9", "parse-numeric-range": "^0.0.2", "prism-react-renderer": "^1.1.0", "prismjs": "^1.20.0", diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/index.js b/packages/docusaurus-theme-classic/src/theme/Navbar/index.js index 5db5e854c625..7b06aefc6ef8 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/index.js +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/index.js @@ -20,7 +20,15 @@ import useLogo from '@theme/hooks/useLogo'; import styles from './styles.module.css'; -function NavLink({activeBasePath, to, href, label, position, ...props}) { +function NavLink({ + activeBasePath, + to, + href, + label, + position, + activeClassName = 'navbar__link--active', + ...props +}) { const toUrl = useBaseUrl(to); const activeBaseUrl = useBaseUrl(activeBasePath); @@ -34,7 +42,7 @@ function NavLink({activeBasePath, to, href, label, position, ...props}) { } : { isNavLink: true, - activeClassName: 'navbar__link--active', + activeClassName, to: toUrl, ...(activeBasePath ? { @@ -50,8 +58,11 @@ function NavLink({activeBasePath, to, href, label, position, ...props}) { } function NavItem({items, position, className, ...props}) { - const navLinkClassNames = (extraClassName) => - classnames('navbar__item', 'navbar__link', extraClassName); + const navLinkClassNames = (extraClassName, isDropdownItem) => + classnames(extraClassName, { + 'navbar__item navbar__link': !isDropdownItem, + dropdown__link: isDropdownItem, + }); if (!items) { return ; @@ -71,7 +82,8 @@ function NavItem({items, position, className, ...props}) { ({className: childItemClassName, ...linkItemInnerProps}, i) => (
  • @@ -106,6 +118,7 @@ function MobileNavItem({items, className, ...props}) { ({className: childItemClassName, ...linkItemInnerProps}, i) => (
  • Date: Mon, 27 Apr 2020 14:17:55 +0300 Subject: [PATCH 015/106] fix(v2): add a11y support for dropdown (#2672) * fix(v2): add a11y support for dropdown * fix(v2): add aria-label for navbar GH link --- .../src/theme/Navbar/index.js | 76 +++++++++++-------- website/docusaurus.config.js | 1 + 2 files changed, 44 insertions(+), 33 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/theme/Navbar/index.js b/packages/docusaurus-theme-classic/src/theme/Navbar/index.js index 7b06aefc6ef8..cee4fbd4108d 100644 --- a/packages/docusaurus-theme-classic/src/theme/Navbar/index.js +++ b/packages/docusaurus-theme-classic/src/theme/Navbar/index.js @@ -25,7 +25,6 @@ function NavLink({ to, href, label, - position, activeClassName = 'navbar__link--active', ...props }) { @@ -58,11 +57,14 @@ function NavLink({ } function NavItem({items, position, className, ...props}) { - const navLinkClassNames = (extraClassName, isDropdownItem) => - classnames(extraClassName, { - 'navbar__item navbar__link': !isDropdownItem, - dropdown__link: isDropdownItem, - }); + const navLinkClassNames = (extraClassName, isDropdownItem = false) => + classnames( + { + 'navbar__item navbar__link': !isDropdownItem, + dropdown__link: isDropdownItem, + }, + extraClassName, + ); if (!items) { return ; @@ -74,21 +76,27 @@ function NavItem({items, position, className, ...props}) { 'dropdown--left': position === 'left', 'dropdown--right': position === 'right', })}> - + e.preventDefault()} + onKeyDown={(e) => { + if (e.key === 'Enter') { + e.target.parentNode.classList.toggle('dropdown--show'); + } + }}> {props.label}
      - {items.map( - ({className: childItemClassName, ...linkItemInnerProps}, i) => ( -
    • - -
    • - ), - )} + {items.map(({className: childItemClassName, ...childItemProps}, i) => ( +
    • + +
    • + ))}
    ); @@ -96,9 +104,13 @@ function NavItem({items, position, className, ...props}) { function MobileNavItem({items, className, ...props}) { const navLinkClassNames = (extraClassName, isSubList = false) => - classnames('menu__link', extraClassName, { - 'menu__link--sublist': isSubList, - }); + classnames( + 'menu__link', + { + 'menu__link--sublist': isSubList, + }, + extraClassName, + ); if (!items) { return ( @@ -114,18 +126,16 @@ function MobileNavItem({items, className, ...props}) { {props.label}
      - {items.map( - ({className: childItemClassName, ...linkItemInnerProps}, i) => ( -
    • - -
    • - ), - )} + {items.map(({className: childItemClassName, ...childItemProps}, i) => ( +
    • + +
    • + ))}
  • ); diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index bcbba5488fab..31d59dc20ca4 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -122,6 +122,7 @@ module.exports = { href: 'https://github.com/facebook/docusaurus', position: 'right', className: 'header-github-link', + 'aria-label': 'GitHub repository', }, ], }, From ef3741fd7f6c676fcf138fb28cdc3af3200753ad Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Mon, 27 Apr 2020 14:43:17 +0300 Subject: [PATCH 016/106] chore(v2): v2.0.0-alpha.51 (#2673) --- CHANGELOG-2.x.md | 119 +++ website/src/css/custom.css | 5 - .../version-2.0.0-alpha.51/blog.md | 167 ++++ .../version-2.0.0-alpha.51/cli.md | 109 +++ .../version-2.0.0-alpha.51/configuration.md | 151 ++++ .../version-2.0.0-alpha.51/contributing.md | 190 ++++ .../version-2.0.0-alpha.51/creating-pages.md | 93 ++ .../version-2.0.0-alpha.51/deployment.md | 229 +++++ .../design-principles.md | 34 + .../version-2.0.0-alpha.51/docs.md | 304 +++++++ .../version-2.0.0-alpha.51/docusaurus-core.md | 197 +++++ .../docusaurus.config.js.md | 289 ++++++ .../version-2.0.0-alpha.51/installation.md | 139 +++ .../version-2.0.0-alpha.51/introduction.md | 111 +++ .../version-2.0.0-alpha.51/lifecycle-apis.md | 425 +++++++++ .../markdown-features.mdx | 821 ++++++++++++++++++ .../migrating-from-v1-to-v2.md | 693 +++++++++++++++ .../version-2.0.0-alpha.51/presets.md | 139 +++ .../version-2.0.0-alpha.51/resources.md | 40 + .../version-2.0.0-alpha.51/search.md | 56 ++ .../version-2.0.0-alpha.51/static-assets.md | 55 ++ .../version-2.0.0-alpha.51/styling-layout.md | 200 +++++ .../version-2.0.0-alpha.51/support.md | 31 + .../version-2.0.0-alpha.51/team.md | 68 ++ .../version-2.0.0-alpha.51/theme-classic.md | 240 +++++ .../version-2.0.0-alpha.51/using-plugins.md | 447 ++++++++++ .../version-2.0.0-alpha.51/using-themes.md | 195 +++++ .../version-2.0.0-alpha.51/versioning.md | 158 ++++ .../version-2.0.0-alpha.51-sidebars.json | 156 ++++ website/versions.json | 1 + 30 files changed, 5857 insertions(+), 5 deletions(-) create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/blog.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/cli.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/configuration.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/contributing.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/creating-pages.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/deployment.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/design-principles.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/docs.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/docusaurus-core.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/docusaurus.config.js.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/installation.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/introduction.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/lifecycle-apis.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/markdown-features.mdx create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/migrating-from-v1-to-v2.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/presets.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/resources.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/search.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/static-assets.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/styling-layout.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/support.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/team.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/theme-classic.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/using-plugins.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/using-themes.md create mode 100644 website/versioned_docs/version-2.0.0-alpha.51/versioning.md create mode 100644 website/versioned_sidebars/version-2.0.0-alpha.51-sidebars.json diff --git a/CHANGELOG-2.x.md b/CHANGELOG-2.x.md index 19861df87194..209ba2fdb5e8 100644 --- a/CHANGELOG-2.x.md +++ b/CHANGELOG-2.x.md @@ -10,6 +10,125 @@ - `--ifm-font-base-color-inverse` → `--ifm-font-color-base-inverse` - `--ifm-font-color-secondary` → `--ifm-font-color-secondary` +#### :rocket: New Feature + +- `docusaurus-theme-classic` + - [#2660](https://github.com/facebook/docusaurus/pull/2660) feat(v2): add ability to specify CSS class for navbar item ([@lex111](https://github.com/lex111)) + - [#2597](https://github.com/facebook/docusaurus/pull/2597) feat(v2): add ability set dark mode by default ([@lex111](https://github.com/lex111)) +- `docusaurus` + - [#2665](https://github.com/facebook/docusaurus/pull/2665) feat(v2): add fallback to BrowserOnly component ([@lex111](https://github.com/lex111)) +- `docusaurus-types`, `docusaurus` + - [#2630](https://github.com/facebook/docusaurus/pull/2630) feat(v2): add CLI option for polling ([@TomBrien](https://github.com/TomBrien)) +- `docusaurus-init` + - [#2541](https://github.com/facebook/docusaurus/pull/2541) feat(v2): add showReadingTime and editUrl to the templates ([@fanny](https://github.com/fanny)) +- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-utils` + - [#2524](https://github.com/facebook/docusaurus/pull/2524) feat(v2): add edit url in post page ([@fanny](https://github.com/fanny)) +- `docusaurus-plugin-content-blog`, `docusaurus-theme-classic` + - [#2531](https://github.com/facebook/docusaurus/pull/2531) feat(v2): add blog post estimated reading time ([@JoseRenan](https://github.com/JoseRenan)) + +#### :bug: Bug Fix + +- `docusaurus-theme-classic` + - [#2672](https://github.com/facebook/docusaurus/pull/2672) fix(v2): add a11y support for dropdown ([@lex111](https://github.com/lex111)) + - [#2649](https://github.com/facebook/docusaurus/pull/2649) fix(v2): hide sidebar after click on child item ([@lex111](https://github.com/lex111)) + - [#2631](https://github.com/facebook/docusaurus/pull/2631) fix(v2): hide doc sidebar on mobiles ([@lex111](https://github.com/lex111)) + - [#2626](https://github.com/facebook/docusaurus/pull/2626) fix(v2): make border right of doc sidebar equals doc page ([@lex111](https://github.com/lex111)) + - [#2625](https://github.com/facebook/docusaurus/pull/2625) fix(v2): disable tab focus on collapsed doc sidebar items ([@lex111](https://github.com/lex111)) + - [#2602](https://github.com/facebook/docusaurus/pull/2602) fix(v2): inherit color for announcement bar close icon ([@lex111](https://github.com/lex111)) + - [#2582](https://github.com/facebook/docusaurus/pull/2582) fix(v2): remove horizontal scroll on docs page ([@lex111](https://github.com/lex111)) +- `docusaurus-theme-classic`, `docusaurus-theme-live-codeblock` + - [#2666](https://github.com/facebook/docusaurus/pull/2666) chore(v2): upgrade prism-react-renderer to latest version ([@lex111](https://github.com/lex111)) + - [#2533](https://github.com/facebook/docusaurus/pull/2533) fix(v2): add rounded corners in code blocks properly ([@lex111](https://github.com/lex111)) +- `docusaurus-1.x`, `docusaurus-init-1.x`, `docusaurus-init`, `docusaurus-plugin-content-docs`, `docusaurus` + - [#2661](https://github.com/facebook/docusaurus/pull/2661) chore: upgrade shelljs to 0.8.4 ([@lex111](https://github.com/lex111)) +- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-preset-classic`, `docusaurus-theme-classic` + - [#2642](https://github.com/facebook/docusaurus/pull/2642) fix(v2): use remark-admonitions separately in each plugin instead of in preset only ([@lex111](https://github.com/lex111)) +- `docusaurus-utils` + - [#2380](https://github.com/facebook/docusaurus/pull/2380) fix(v2): ignore import declarations in excerpt ([@lex111](https://github.com/lex111)) +- `docusaurus-plugin-sitemap` + - [#2616](https://github.com/facebook/docusaurus/pull/2616) fix(v2): don't include 404 page in sitemaps ([@RDIL](https://github.com/RDIL)) + - [#2530](https://github.com/facebook/docusaurus/pull/2530) fix(v2): Use `writeFileSync` to write generated sitemap.xml to avoid early termination ([@SamChou19815](https://github.com/SamChou19815)) +- `docusaurus` + - [#2558](https://github.com/facebook/docusaurus/pull/2558) fix(v2): properly link top-level github pages sites in deploy command ([@RDIL](https://github.com/RDIL)) + - [#2580](https://github.com/facebook/docusaurus/pull/2580) fix(v2): do not process anchor links by router ([@lex111](https://github.com/lex111)) + - [#2579](https://github.com/facebook/docusaurus/pull/2579) fix(v2): treat mailto and tel links properly ([@lex111](https://github.com/lex111)) +- `docusaurus-plugin-content-blog` + - [#2540](https://github.com/facebook/docusaurus/pull/2540) fix(v2): use synchronous write for generate blog feeds ([@lex111](https://github.com/lex111)) + +#### :nail_care: Polish + +- `docusaurus-theme-classic` + - [#2656](https://github.com/facebook/docusaurus/pull/2656) refactor(v2): lose focus of active sidebar item after click on it ([@lex111](https://github.com/lex111)) + - [#2627](https://github.com/facebook/docusaurus/pull/2627) refactor(v2): extract scroll position detection into separate hook ([@lex111](https://github.com/lex111)) + - [#2595](https://github.com/facebook/docusaurus/pull/2595) refactor(v2): make margin top on blog pages as on other pages ([@lex111](https://github.com/lex111)) + - [#2588](https://github.com/facebook/docusaurus/pull/2588) refactor(v2): remove redundant container on docs page ([@lex111](https://github.com/lex111)) +- `docusaurus-theme-classic`, `docusaurus` + - [#2585](https://github.com/facebook/docusaurus/pull/2585) refactor(v2): use nav link component only where needed ([@lex111](https://github.com/lex111)) +- `docusaurus` + - [#2556](https://github.com/facebook/docusaurus/pull/2556) refactor(v2): enhance CLI experience ([@RDIL](https://github.com/RDIL)) + - [#2529](https://github.com/facebook/docusaurus/pull/2529) refactor(v2): replace few Lodash methods with native counterparts ([@Simek](https://github.com/Simek)) +- `docusaurus-theme-classic`, `docusaurus-theme-live-codeblock` + - [#2534](https://github.com/facebook/docusaurus/pull/2534) refactor(v2): make better code blocks ([@lex111](https://github.com/lex111)) + - [#2526](https://github.com/facebook/docusaurus/pull/2526) fix(v2): make code block nicer again ([@yangshun](https://github.com/yangshun)) +- `docusaurus-plugin-content-docs` + - [#2519](https://github.com/facebook/docusaurus/pull/2519) chore(v2): use single method Lodash packages in docs plugin ([@Simek](https://github.com/Simek)) + +#### :memo: Documentation + +- [#2659](https://github.com/facebook/docusaurus/pull/2659) fix(docs): mention that appID is optional ([@s-pace](https://github.com/s-pace)) +- [#2596](https://github.com/facebook/docusaurus/pull/2596) docs(v2): remove duplicated package.json in installation directory structure ([@jaylees14](https://github.com/jaylees14)) +- [#2572](https://github.com/facebook/docusaurus/pull/2572) docs(v2): mention that `plugin-ideal-image` only perform compression on a production build ([@Noah-Silvera](https://github.com/Noah-Silvera)) +- [#2570](https://github.com/facebook/docusaurus/pull/2570) docs(v2): fix syntax error for @docusaurus/plugin-ideal-image example ([@Noah-Silvera](https://github.com/Noah-Silvera)) +- [#2566](https://github.com/facebook/docusaurus/pull/2566) docs(v2): be more polite ([@lex111](https://github.com/lex111)) +- [#2559](https://github.com/facebook/docusaurus/pull/2559) doc(v2): remove legacy blog metadata ([@RDIL](https://github.com/RDIL)) +- [#2549](https://github.com/facebook/docusaurus/pull/2549) docs(v2): command for swizzling all components ([@fanny](https://github.com/fanny)) +- [#2547](https://github.com/facebook/docusaurus/pull/2547) docs(v2): Fix typo in team page ([@SamChou19815](https://github.com/SamChou19815)) +- [#2545](https://github.com/facebook/docusaurus/pull/2545) docs(v2): add community pages ([@yangshun](https://github.com/yangshun)) +- [#2521](https://github.com/facebook/docusaurus/pull/2521) docs(v2): useThemeContext hook ([@lex111](https://github.com/lex111)) + +#### :house: Internal + +- `docusaurus-types`, `docusaurus` + - [#2578](https://github.com/facebook/docusaurus/pull/2578) refactor(v2): Convert docusaurus-core to TypeScript ([@SamChou19815](https://github.com/SamChou19815)) +- Other + - [#2569](https://github.com/facebook/docusaurus/pull/2569) docs(v2): showcase user Tourmaline ([@watzon](https://github.com/watzon)) + - [#2553](https://github.com/facebook/docusaurus/pull/2553) misc(v2): remove deprecated/useless lerna field ([@slorber](https://github.com/slorber)) +- `docusaurus-1.x`, `lqip-loader` + - [#2563](https://github.com/facebook/docusaurus/pull/2563) chore(v2): fix lint, tweak lqip-loader utils comment ([@Simek](https://github.com/Simek)) +- `lqip-loader` + - [#2561](https://github.com/facebook/docusaurus/pull/2561) chore(v2): add lqip-loader tests, clarify loader code, improve README ([@Simek](https://github.com/Simek)) +- `docusaurus-plugin-ideal-image`, `lqip-loader` + - [#2544](https://github.com/facebook/docusaurus/pull/2544) refactor(v2): import lqip-loader to monorepo, fix build on Node 13, fix lint-staged ([@Simek](https://github.com/Simek)) +- `docusaurus-init` + - [#2542](https://github.com/facebook/docusaurus/pull/2542) chore(v2): update Prettier config ([@lex111](https://github.com/lex111)) +- `docusaurus-1.x`, `docusaurus-init`, `docusaurus-mdx-loader`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-sitemap`, `docusaurus-preset-classic`, `docusaurus-theme-classic`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-utils`, `docusaurus`, `stylelint-copyright` + - [#2538](https://github.com/facebook/docusaurus/pull/2538) chore(v2): upgrade devDependencies ([@yangshun](https://github.com/yangshun)) +- `docusaurus-utils` + - [#2536](https://github.com/facebook/docusaurus/pull/2536) refactor(v2): replace Lodash with single methods packages in utils ([@Simek](https://github.com/Simek)) +- `docusaurus` + - [#2535](https://github.com/facebook/docusaurus/pull/2535) refactor(v2): replace Lodash with single methods packages in core ([@Simek](https://github.com/Simek)) + +#### Committers: 18 + +- Alexey Pyltsyn ([@lex111](https://github.com/lex111)) +- Anayo Oleru ([@AnayoOleru](https://github.com/AnayoOleru)) +- Bartosz Kaszubowski ([@Simek](https://github.com/Simek)) +- Chris Watson ([@watzon](https://github.com/watzon)) +- Fanny ([@fanny](https://github.com/fanny)) +- Jay Lees ([@jaylees14](https://github.com/jaylees14)) +- Joe Previte ([@jsjoeio](https://github.com/jsjoeio)) +- José Renan ([@JoseRenan](https://github.com/JoseRenan)) +- Kamil Kisiela ([@kamilkisiela](https://github.com/kamilkisiela)) +- Kristóf Poduszló ([@kripod](https://github.com/kripod)) +- Mehmet Yatkı ([@yatki](https://github.com/yatki)) +- Noah Silvera ([@Noah-Silvera](https://github.com/Noah-Silvera)) +- Reece Dunham ([@RDIL](https://github.com/RDIL)) +- Sam Zhou ([@SamChou19815](https://github.com/SamChou19815)) +- Sylvain Pace ([@s-pace](https://github.com/s-pace)) +- Sébastien Lorber ([@slorber](https://github.com/slorber)) +- Tom Brien ([@TomBrien](https://github.com/TomBrien)) +- Yangshun Tay ([@yangshun](https://github.com/yangshun)) + ## 2.0.0-alpha.50 (2020-04-02) **HOTFIX for 2.0.0-alpha.49**. diff --git a/website/src/css/custom.css b/website/src/css/custom.css index 433ae3f52335..92272191eefd 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -31,11 +31,6 @@ html[data-theme='dark'] .docusaurus-highlight-code-line { background-color: rgb(0, 0, 0, 0.3); } -/* This will be removed after new release of Infima */ -.navbar__item.dropdown > .navbar__link { - pointer-events: none; -} - .header-github-link:hover { opacity: 0.6; } diff --git a/website/versioned_docs/version-2.0.0-alpha.51/blog.md b/website/versioned_docs/version-2.0.0-alpha.51/blog.md new file mode 100644 index 000000000000..b6beead63b14 --- /dev/null +++ b/website/versioned_docs/version-2.0.0-alpha.51/blog.md @@ -0,0 +1,167 @@ +--- +id: blog +title: Blog +--- + +## Initial setup + +To setup your site's blog, start by creating a `blog` directory. + +Then, add a navbar link to your blog within `docusaurus.config.js`: + +```js title="docusaurus.config.js" +module.exports = { + themeConfig: { + // ... + navbar: { + links: [ + // ... + // highlight-next-line + {to: 'blog', label: 'Blog', position: 'left'}, // or position: 'right' + ], + }, + }, +}; +``` + +## Adding posts + +To publish in the blog, create a file within the blog directory with a formatted name of `YYYY-MM-DD-my-blog-post-title.md`. The post date is extracted from the file name. + +For example, at `my-website/blog/2019-09-05-hello-docusaurus-v2.md`: + +```yml +--- +title: Welcome Docusaurus v2 +author: Joel Marcey +author_title: Co-creator of Docusaurus 1 +author_url: https://github.com/JoelMarcey +author_image_url: https://graph.facebook.com/611217057/picture/?height=200&width=200 +tags: [hello, docusaurus-v2] +--- +Welcome to this blog. This blog is created with [**Docusaurus 2 alpha**](https://v2.docusaurus.io/). + + + +This is my first post on Docusaurus 2. + +A whole bunch of exploration to follow. +``` + +## Header options + +The only required field is `title`; however, we provide options to add author information to your blog post as well along with other options. + +- `author` - The author name to be displayed. +- `author_url` - The URL that the author's name will be linked to. This could be a GitHub, Twitter, Facebook profile URL, etc. +- `author_image_url` - The URL to the author's thumbnail image. +- `author_title` - A description of the author. +- `title` - The blog post title. +- `tags` - A list of strings to tag to your post. +- `draft` - A boolean flag to indicate that the blog post is work in process and therefore should not be published yet. However, draft blog posts will be displayed during development. + +## Summary truncation + +Use the `` marker in your blog post to represent what will be shown as the summary when viewing all published blog posts. Anything above `` will be part of the summary. For example: + +```yml +--- +title: Truncation Example +--- +All this will be part of the blog post summary. + +Even this. + + + +But anything from here on down will not be. + +Not this. + +Or this. +``` + +## Feed + +You can generate RSS/ Atom feed by passing feedOptions. + +```ts +feedOptions?: { + type: 'rss' | 'atom' | 'all'; + title?: string; + description?: string; + copyright: string; + language?: string; // possible values: http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes +}; +``` + +Example usage: + +```js {8-11} title="docusaurus.config.js" +module.exports = { + // ... + presets: [ + [ + '@docusaurus/preset-classic', + { + blog: { + feedOptions: { + type: 'all', + copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc.`, + }, + }, + }, + ], + ], +}; +``` + +Accessing the feed: + +The feed for RSS can be found at + +```text +https://{your-domain}/blog/rss.xml +``` + +and for atom + +```text +https://{your-domain}/blog/atom.xml +``` + +## Advanced topics + +### Blog-only mode + +You can run your Docusaurus 2 site without a landing page and instead have your blog's post list page as the index page. Set the `routeBasePath` to be `''` to indicate it's the root path. + +**Note:** Make sure there's no `index.js` page in `src/pages` or else there will be two files mapping to the same route! + +```js {9} title="docusaurus.config.js" +module.exports = { + // ... + presets: [ + [ + '@docusaurus/preset-classic', + { + blog: { + path: './blog', + routeBasePath: '', // Set this value to ''. + }, + }, + ], + ], +}; +``` + + diff --git a/website/versioned_docs/version-2.0.0-alpha.51/cli.md b/website/versioned_docs/version-2.0.0-alpha.51/cli.md new file mode 100644 index 000000000000..0495a67f99a3 --- /dev/null +++ b/website/versioned_docs/version-2.0.0-alpha.51/cli.md @@ -0,0 +1,109 @@ +--- +id: cli +title: CLI +--- + +Docusaurus provides a set of scripts to help you generate, serve, and deploy your website. + +Once your website is bootstrapped, the website source will contain the Docusaurus scripts that you can invoke with your package manager: + +```json title="package.json" +{ + // ... + "scripts": { + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy" + } +} +``` + +## Docusaurus CLI commands + +Below is a list of Docusaurus CLI commands and their usages: + + + +### `docusaurus start` + +Builds and serves a preview of your site locally with [Webpack Dev Server](https://webpack.js.org/configuration/dev-server). + +#### Options + +| Name | Default | Description | +| --- | --- | --- | +| `--port` | `3000` | Specifies the port of the dev server | +| `--host` | `localhost` | Specify a host to use. E.g., if you want your server to be accessible externally, you can use `--host 0.0.0.0` | +| `--hot-only` | `false` | Enables Hot Module Replacement without page refresh as fallback in case of build failures. More information [here](https://webpack.js.org/configuration/dev-server/#devserverhotonly). | +| `--no-open` | `false` | Do not open automatically the page in the browser. | +| `--poll` | `false` | Use polling of files rather than watching for live reload as a fallback in environments where watching doesn't work. More information [here](https://webpack.js.org/configuration/watch/#watchoptionspoll). | + +:::important + +Please note that some functionality (for example, anchor links) will not work in development. The functionality will work as expected in production. + +::: + +### `docusaurus build` + +Compiles your site for production. + +#### Options + +| Name | Default | Description | +| --- | --- | --- | +| `--bundle-analyzer` | `false` | Analyze your bundle with the [webpack bundle analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer) | +| `--out-dir` | `build` | The full path for the new output directory, relative to the current workspace. | +| `--no-minify` | `false` | Build website without minimizing JS/CSS bundles. | + +### `docusaurus swizzle` + +:::caution + +We highly discourage swizzling of components until we've reached a Beta stage. The components APIs have been changing rapidly and are likely to keep changing until we reach Beta. Stick with the default appearance for now if possible to save yourself some potential pain in future. + +::: + +Change any Docusaurus theme components to your liking with `docusaurus swizzle`. + +```shell +docusaurus swizzle [componentName] [siteDir] +``` + +Running the command will copy the relevant theme files to your site folder. You may then make any changes to it and Docusaurus will use it instead of the one provided from the theme. + +#### Options + +| Name | Description | +| ------------------ | ------------------------------------- | +| `themeName` | The name of the theme you are using. | +| `swizzleComponent` | The name of the component to swizzle. | + +To unswizzle a component, simply delete the files of the swizzled component. + + + +### `docusaurus deploy` + +Deploys your site with [GitHub Pages](https://pages.github.com/). + +#### Options + +| Name | Default | Description | +| --- | --- | --- | +| `--out-dir` | `build` | The full path for the new output directory, relative to the current workspace. | diff --git a/website/versioned_docs/version-2.0.0-alpha.51/configuration.md b/website/versioned_docs/version-2.0.0-alpha.51/configuration.md new file mode 100644 index 000000000000..84416ad70ee9 --- /dev/null +++ b/website/versioned_docs/version-2.0.0-alpha.51/configuration.md @@ -0,0 +1,151 @@ +--- +id: configuration +title: Configuration +--- + +Docusaurus has a unique take on configurations. We encourage you to congregate information of your site into one place. We guard the fields of this file, and facilitate making this data object accessible across your site. + +Keeping a well-maintained `docusaurus.config.js` helps you, your collaborators, and your open source contributors be able to focus on documentation while still being able to customize the site. + +## What goes into a `docusaurus.config.js`? + +You should not have to write your `docusaurus.config.js` from scratch even if you are developing your site. All templates come with a `docusaurus.config.js` that includes defaults for the common options. + +However, it can be helpful if you have a high-level understanding of how the configurations are designed and implemented. + +The high-level overview of Docusaurus configuration can be categorized into: + +- [Site Metadata](#site-metadata) +- [Deployment Configurations](#deployment-configurations) +- [Theme, Plugin, and Preset Configurations](#theme-plugin-and-preset-configurations) +- [Custom Configurations](#custom-configurations) + +For exact reference to each of the configurable fields, you may refer to [**`docusaurus.config.js` API reference**](docusaurus.config.js.md). + +### Site metadata + +Site metadata contains the essential global metadata such as `title`, `url`, `baseUrl` and `favicon`. + +They are used in a number of places such as your site's title and headings, browser tab icon, social sharing (Facebook, Twitter) information or even to generate the correct path to serve your static files. + +### Deployment configurations + +Deployment configurations such as `projectName` and `organizationName` are used when you deploy your site with the `deploy` command. + +It is recommended to check the [deployment docs](deployment.md) for more information. + +### Theme, plugin, and preset configurations + +List the [theme](using-themes.md), [plugins](using-plugins.md), and [presets](presets.md) for your site in the `themes`, `plugins`, and `presets` fields, respectively. These are typically npm packages: + +```js title="docusaurus.config.js" +module.exports = { + // ... + plugins: [ + '@docusaurus/plugin-content-blog', + '@docusaurus/plugin-content-pages', + ], + themes: ['@docusaurus/theme-classic'], +}; +``` + +They can also be loaded from local directories: + +```js title="docusaurus.config.js" +const path = require('path'); + +module.exports = { + // ... + themes: [path.resolve(__dirname, '/path/to/docusaurus-local-theme')], +}; +``` + +To specify options for a plugin or theme, replace the name of the plugin or theme in the config file with an array containing the name and an options object: + +```js title="docusaurus.config.js" +module.exports = { + // ... + plugins: [ + [ + '@docusaurus/plugin-content-blog', + { + path: 'blog', + routeBasePath: 'blog', + include: ['*.md', '*.mdx'], + // ... + }, + ], + '@docusaurus/plugin-content-pages', + ], +}; +``` + +To specify options for a plugin or theme that is bundled in a preset, pass the options through the `presets` field. In this example, `docs` refers to `@docusaurus/plugin-content-docs` and `theme` refers to `@docusaurus/theme-classic`. + +```js title="docusaurus.config.js" +module.exports = { + // ... + presets: [ + [ + '@docusaurus/preset-classic', + { + docs: { + sidebarPath: require.resolve('./sidebars.js'), + }, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + }, + ], + ], +}; +``` + +For further help configuring themes, plugins, and presets, see [Using Themes](using-themes.md), [Using Plugins](using-plugins.md), and [Using Presets](presets.md). + +### Custom configurations + +Docusaurus guards `docusaurus.config.js` from unknown fields. To add custom fields, define them in `customFields`. + +Example: + +```js title="docusaurus.config.js" +module.exports = { + // ... + // highlight-start + customFields: { + image: '', + keywords: [], + }, + // highlight-end + // ... +}; +``` + +## Accessing configuration from components + +Your configuration object will be made available to all the components of your site. And you may access them via React context as `siteConfig`. + +Basic Example: + +```jsx +import React from 'react'; +// highlight-next-line +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; + +const Hello = () => { + // highlight-start + const context = useDocusaurusContext(); + const {siteConfig = {}} = context; + // highlight-end + const {title, tagline} = siteConfig; + + return
    {`${title} · ${tagline}`}
    ; +}; +``` + +:::tip + +If you just want to use those fields on the client side, you could create your own JS files and import them as ES6 modules, there is no need to put them in `docusaurus.config.js`. + +::: diff --git a/website/versioned_docs/version-2.0.0-alpha.51/contributing.md b/website/versioned_docs/version-2.0.0-alpha.51/contributing.md new file mode 100644 index 000000000000..b0d825e05007 --- /dev/null +++ b/website/versioned_docs/version-2.0.0-alpha.51/contributing.md @@ -0,0 +1,190 @@ +--- +id: contributing +title: Contributing +--- + +[Docusaurus 2](https://v2.docusaurus.io) is currently under alpha development. We have [early adopters who already started using it](/showcase). We are now welcoming contributors to collaborate on the next Docusaurus. + +The [Open Source Guides](https://opensource.guide/) website has a collection of resources for individuals, communities, and companies who want to learn how to run and contribute to an open source project. Contributors and people new to open source alike will find the following guides especially useful: + +- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) +- [Building Welcoming Communities](https://opensource.guide/building-community/) + +## [Code of Conduct](https://code.fb.com/codeofconduct) + +Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please read [the full text](https://code.fb.com/codeofconduct) so that you can understand what actions will and will not be tolerated. + +## Get involved + +There are many ways to contribute to Docusaurus, and many of them do not involve writing any code. Here's a few ideas to get started: + +- Start using Docusaurus 2! Go through the [Getting Started](installation.md) guides. Does everything work as expected? If not, we're always looking for improvements. Let us know by [opening an issue](#reporting-new-issues). +- Look through the [v2.0 issues](https://github.com/facebook/docusaurus/labels/v2). If you find an issue you would like to fix, [open a pull request](#your-first-pull-request). Issues tagged as [_Good first issue_](https://github.com/facebook/docusaurus/labels/Good%20first%20issue) are a good place to get started. +- Help us making the docs better. File an issue if you find anything that is confusing or can be improved. We also have [an umbrella issue for v2 docs](https://github.com/facebook/docusaurus/issues/1640) where we are planning and working on all v2 docs. You may adopt a doc piece there to work on. +- Take a look at the [features requested](https://github.com/facebook/docusaurus/labels/enhancement) by others in the community and consider opening a pull request if you see something you want to work on. + +Contributions are very welcome. If you think you need help planning your contribution, please ping us on Twitter at [@docusaurus](https://twitter.com/docusaurus) and let us know you are looking for a bit of help. + +### Join our Discord channel + +To participate in Docusaurus 2 dev, join the [#docusaurus-2-dev](https://discord.gg/Je6Ash6) channel. + +## Our development process + +Docusaurus uses [GitHub](https://github.com/facebook/docusaurus) as its source of truth. The core team will be working directly there. All changes will be public from the beginning. + +When a change made on GitHub is approved, it will be checked by our continuous integration system, CircleCI. + +### Reporting new issues + +When [opening a new issue](https://github.com/facebook/docusaurus/issues/new/choose), always make sure to fill out the issue template. **This step is very important!** Not doing so may result in your issue not managed in a timely fashion. Don't take this personally if this happens, and feel free to open a new issue once you've gathered all the information required by the template. + +- **One issue, one bug:** Please report a single bug per issue. +- **Provide reproduction steps:** List all the steps necessary to reproduce the issue. The person reading your bug report should be able to follow these steps to reproduce your issue with minimal effort. + +### Reporting bugs + +We use [GitHub Issues](https://github.com/facebook/docusaurus/issues) for our public bugs. If you would like to report a problem, take a look around and see if someone already opened an issue about it. If you a are certain this is a new, unreported bug, you can submit a [bug report](#reporting-new-issues). + +If you have questions about using Docusaurus, contact the Docusaurus Twitter account at [@docusaurus](https://twitter.com/docusaurus), and we will do our best to answer your questions. + +You can also file issues as [feature requests or enhancements](https://github.com/facebook/docusaurus/labels/feature). If you see anything you'd like to be implemented, create an issue with [feature template](https://raw.githubusercontent.com/facebook/docusaurus/master/.github/ISSUE_TEMPLATE/feature.md) + +### Reporting security bugs + +Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe disclosure of security bugs. With that in mind, please do not file public issues; go through the process outlined on that page. + +## Working on Docusaurus code + +### Installation + +1. Ensure you have [Yarn](https://yarnpkg.com/) installed +2. After cloning the repository, run `yarn install` in the root of the repository +3. To start a local development server serving the Docusaurus docs, go into the `website` directory and run `yarn start` + +### Semantic commit messages + +See how a minor change to your commit message style can make you a better programmer. + +Format: `(): ` + +`` is optional + +**Example** + +``` +feat: allow overriding of webpack config +^--^ ^------------^ +| | +| +-> Summary in present tense. +| ++-------> Type: chore, docs, feat, fix, refactor, style, or test. +``` + +The various types of commits: + +- `feat`: (new feature for the user, not a new feature for build script) +- `fix`: (bug fix for the user, not a fix to a build script) +- `docs`: (changes to the documentation) +- `style`: (formatting, missing semi colons, etc; no production code change) +- `refactor`: (refactoring production code, eg. renaming a variable) +- `test`: (adding missing tests, refactoring tests; no production code change) +- `chore`: (updating grunt tasks etc; no production code change) + +Use lower case not title case! + +### Code conventions + +#### Style guide + +[Prettier](https://prettier.io) will catch most styling issues that may exist in your code. You can check the status of your code styling by simply running `npm run prettier`. + +However, there are still some styles that Prettier cannot pick up. + +#### General + +- **Most important: Look around.** Match the style you see used in the rest of the project. This includes formatting, naming files, naming things in code, naming things in documentation. +- "Attractive" + +#### Documentation + +- Do not wrap lines at 80 characters - configure your editor to soft-wrap when editing documentation. + +## Pull requests + +### Your first pull request + +So you have decided to contribute code back to upstream by opening a pull request. You've invested a good chunk of time, and we appreciate it. We will do our best to work with you and get the PR looked at. + +Working on your first Pull Request? You can learn how from this free video series: + +[**How to Contribute to an Open Source Project on GitHub**](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github) + +We have a list of [beginner friendly issues](https://github.com/facebook/docusaurus/labels/good%20first%20issue) to help you get your feet wet in the Docusaurus codebase and familiar with our contribution process. This is a great place to get started. + +### Proposing a change + +If you would like to request a new feature or enhancement but are not yet thinking about opening a pull request, you can also file an issue with [feature template](https://github.com/facebook/docusaurus/issues/new?template=feature.md). + +If you intend to change the public API (e.g., something in `docusaurus.config.js`), or make any non-trivial changes to the implementation, we recommend filing an issue with [proposal template](https://github.com/facebook/docusaurus/issues/new?template=proposal.md) and including `[Proposal]` in the title. This lets us reach an agreement on your proposal before you put significant effort into it. These types of issues should be rare. + +If you're only fixing a bug, it's fine to submit a pull request right away but we still recommend to file an issue detailing what you're fixing. This is helpful in case we don't accept that specific fix but want to keep track of the issue. + +### Sending a pull request + +Small pull requests are much easier to review and more likely to get merged. Make sure the PR does only one thing, otherwise please split it. It is recommended to follow this [commit message style](#semantic-commit-messages). + +Please make sure the following is done when submitting a pull request: + +1. Fork [the repository](https://github.com/facebook/docusaurus) and create your branch from `master`. +1. Add the copyright notice to the top of any code new files you've added. +1. Describe your [test plan](#test-plan) in your pull request description. Make sure to [test your changes](https://github.com/facebook/docusaurus/blob/master/admin/testing-changes-on-Docusaurus-itself.md)! +1. Make sure your code lints (`yarn prettier && yarn lint`). +1. Make sure your Jest tests pass (`yarn test`). +1. If you haven't already, [sign the CLA](https://code.facebook.com/cla). + +All pull requests should be opened against the `master` branch. + +#### Test plan + +A good test plan has the exact commands you ran and their output, provides screenshots or videos if the pull request changes UI. + +- If you've changed APIs, update the documentation. + +#### Breaking changes + +When adding a new breaking change, follow this template in your pull request: + +```md +### New breaking change here + +- **Who does this affect**: +- **How to migrate**: +- **Why make this breaking change**: +- **Severity (number of people affected x effort)**: +``` + +#### Copyright header for source code + +Copy and paste this to the top of your new file(s): + +```js +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +``` + +#### Contributor License Agreement (CLA) + +In order to accept your pull request, we need you to submit a CLA. You only need to do this once, so if you've done this for another Facebook open source project, you're good to go. If you are submitting a pull request for the first time, the Facebook GitHub Bot will reply with a link to the CLA form. You may also [complete your CLA here](https://code.facebook.com/cla). + +### What happens next? + +The core Docusaurus team will be monitoring for pull requests. Do help us by keeping pull requests consistent by following the guidelines above. + +## License + +By contributing to Docusaurus, you agree that your contributions will be licensed under its MIT license. diff --git a/website/versioned_docs/version-2.0.0-alpha.51/creating-pages.md b/website/versioned_docs/version-2.0.0-alpha.51/creating-pages.md new file mode 100644 index 000000000000..fb61af8280ea --- /dev/null +++ b/website/versioned_docs/version-2.0.0-alpha.51/creating-pages.md @@ -0,0 +1,93 @@ +--- +id: creating-pages +title: Creating Pages +--- + +In this section, we will learn about creating ad-hoc pages in Docusaurus using React. This is most useful for creating one-off standalone pages like a showcase page, playground page or support page. + +The functionality of pages is powered by `@docusaurus/plugin-content-pages`. + +## Adding a new page + + + +In the `/src/pages/` directory, create a file called `hello.js` with the following contents: + +```jsx title="/src/pages/hello.js" +import React from 'react'; +import Layout from '@theme/Layout'; + +function Hello() { + return ( + +
    +

    + Edit pages/hello.js and save to reload. +

    +
    +
    + ); +} + +export default Hello; +``` + +Once you save the file, the development server will automatically reload the changes. Now open http://localhost:3000/hello, you will see the new page you just created. + +Each page doesn't come with any styling. You will need to import the `Layout` component from `@theme/Layout` and wrap your contents within that component if you want the navbar and/or footer to appear. + +:::tip + +You can also create a page in TypeScript, in which case the its file name should use the `.tsx` extension, eg. `hello.tsx`. + +::: + +## Routing + +If you are familiar with other static site generators like Jekyll and Next, this routing approach will feel familiar to you. Any JavaScript file you create under `/src/pages/` directory will be automatically converted to a website page, following the `/src/pages/` directory hierarchy. For example: + +- `/src/pages/index.js` → `` +- `/src/pages/foo.js` → `/foo` +- `/src/pages/foo/test.js` → `/foo/test` +- `/src/pages/foo/index.js` → `/foo/` + +In this component-based development era, it is encouraged to co-locate your styling, markup and behavior together into components. Each page is a component, and if you need to customize your page design with your own styles, we recommend co-locating your styles with the page component in its own directory. For example, to create a "Support" page, you could do one of the following: + +- Add a `/src/pages/support.js` file +- Create a `/src/pages/support/` directory and a `/src/pages/support/index.js` file. + +The latter is preferred as it has the benefits of letting you put files related to the page within that directory. For e.g. a CSS module file (`styles.module.css`) with styles meant to only be used on the "Support" page. **Note:** this is merely a recommended directory structure and you will still need to manually import the CSS module file within your component module (`support/index.js`). + +```sh +my-website +├── src +│ └── pages +│ ├── styles.module.css +│ ├── index.js +│ └── support +│ ├── index.js +│ └── styles.module.css +. +``` + +:::caution + +All JavaScript/TypeScript files within the `src/pages/` directory will have corresponding website paths generated for them. Do not put reusable components or test files (ending with `.test.js`) into that directory otherwise they will be turned into pages, which might not be intended. + +::: + +## Using React + +React is used as the UI library to create pages. Every page component should export a React component and you can leverage on the expressiveness of React to build rich and interactive content. + + diff --git a/website/versioned_docs/version-2.0.0-alpha.51/deployment.md b/website/versioned_docs/version-2.0.0-alpha.51/deployment.md new file mode 100644 index 000000000000..5c38f39c3d51 --- /dev/null +++ b/website/versioned_docs/version-2.0.0-alpha.51/deployment.md @@ -0,0 +1,229 @@ +--- +id: deployment +title: Deployment +--- + +To build the static files of your website for production, run: + +```bash npm2yarn +npm run build +``` + +Once it finishes, the static files will be generated within the `build/` directory. + +You can deploy your site to static site hosting services such as [ZEIT Now](https://zeit.co/now), [GitHub Pages](https://pages.github.com/), [Netlify](https://www.netlify.com/), [Render](https://render.com/static-sites), and [Surge](https://surge.sh/help/getting-started-with-surge). Docusaurus sites are statically rendered so they work without JavaScript too! + +## Deploying to GitHub Pages + +Docusaurus provides a easy way to publish to [GitHub Pages](https://pages.github.com/). Which is hosting that comes for free with every GitHub repository. + +### `docusaurus.config.js` settings + +First, modify your `docusaurus.config.js` and add the required params: + +| Name | Description | +| --- | --- | +| `organizationName` | The GitHub user or organization that owns the repository. If you are the owner, it is your GitHub username. In the case of Docusaurus, it is "_facebook_" which is the GitHub organization that owns Docusaurus. | +| `projectName` | The name of the GitHub repository. For example, the repository name for Docusaurus is "docusaurus", so the project name is "docusaurus". | +| `url` | URL for your GitHub Page's user/organization page. This is commonly https://_username_.github.io. | +| `baseUrl` | Base URL for your project. For projects hosted on GitHub pages, it follows the format "/_projectName_/". For https://github.com/facebook/docusaurus, `baseUrl` is `/docusaurus/`. | + +In case you want to use your custom domain for GitHub Pages, create a `CNAME` file in the `static` directory. Anything within the `static` directory will be copied to the root of the `build` directory for deployment. + +You may refer to GitHub Pages' documentation [User, Organization, and Project Pages](https://help.github.com/en/articles/user-organization-and-project-pages) for more details. + +Example: + +```jsx {3-6} title="docusaurus.config.js" +module.exports = { + // ... + url: 'https://endiliey.github.io', // Your website URL + baseUrl: '/', + projectName: 'endiliey.github.io', + organizationName: 'endiliey', + // ... +}; +``` + +:::tip + +By default, GitHub Pages runs published files through [Jekyll](https://jekyllrb.com/). Since Jekyll will discard any files that begin with `_`, it is recommended that you disable Jekyll by adding an empty file named `.nojekyll` file to your `static` directory. + +::: + +### Environment settings + +Specify the Git user as an environment variable. + +| Name | Description | +| --- | --- | +| `GIT_USER` | The username for a GitHub account that has commit access to this repo. For your own repositories, this will usually be your GitHub username. The specified `GIT_USER` must have push access to the repository specified in the combination of `organizationName` and `projectName`. | + +There are two more optional parameters that are set as environment variables: + +| Name | Description | +| --- | --- | +| `USE_SSH` | Set to `true` to use SSH instead of the default HTTPS for the connection to the GitHub repo. | +| `DEPLOYMENT_BRANCH` | The branch that the website will be deployed to, defaults to `gh-pages` for normal repos and `master` for repository names ending in `github.io`. | +| `CURRENT_BRANCH` | The branch that contains the latest docs changes that will be deployed. Usually, the branch will be `master`, but it could be any branch (default or otherwise) except for `gh-pages`. If nothing is set for this variable, then the current branch will be used. | + +### Deploy + +Finally, to deploy your site to GitHub Pages, run: + +**Bash** + +```bash +GIT_USER= yarn deploy +``` + +**Windows** + +```batch +cmd /C "set "GIT_USER=" && yarn deploy" +``` + +### Triggering deployment with Travis CI + +Continuous integration (CI) services are typically used to perform routine tasks whenever new commits are checked in to source control. These tasks can be any combination of running unit tests and integration tests, automating builds, publishing packages to NPM, and deploying changes to your website. All you need to do to automate deployment of your website is to invoke the `yarn deploy` script whenever your website is updated. The following section covers how to do just that using [Travis CI](https://travis-ci.com/), a popular continuous integration service provider. + +1. Go to https://github.com/settings/tokens and generate a new [personal access token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/). +1. Using your GitHub account, [add the Travis CI app](https://github.com/marketplace/travis-ci) to the repository you want to activate. +1. Open your Travis CI dashboard. The URL looks like https://travis-ci.com/USERNAME/REPO, and navigate to the `More options` > `Setting` > `Environment Variables` section of your repository. +1. Create a new environment variable named `GH_TOKEN` with your newly generated token as its value, then `GH_EMAIL` (your email address) and `GH_NAME` (your GitHub username). +1. Create a `.travis.yml` on the root of your repository with the following: + +```yaml title=".travis.yml" +language: node_js +node_js: + - '10' +branches: + only: + - master +cache: + yarn: true +script: + - git config --global user.name "${GH_NAME}" + - git config --global user.email "${GH_EMAIL}" + - echo "machine github.com login ${GH_NAME} password ${GH_TOKEN}" > ~/.netrc + - yarn && GIT_USER="${GH_NAME}" yarn deploy +``` + +Now, whenever a new commit lands in `master`, Travis CI will run your suite of tests and if everything passes, your website will be deployed via the `yarn deploy` script. + +## Deploying to Netlify + +To deploy your Docusaurus 2 sites to [Netlify](https://www.netlify.com/), first make sure the following options are properly configured: + +```js {2-3} title="docusaurus.config.js" +module.exports = { + url: 'https://docusaurus-2.netlify.com', // url to your site with no trailing slash + baseUrl: '/', // base directory of your site relative to your repo + // ... +}; +``` + +Then, [create your site with Netlify](https://app.netlify.com/start). + +While you set up the site, specify the build commands and directories as follows: + +- build command: `npm run build` +- build directory: `build` + +If you did not configure these build options, you may still go to "Site settings" -> "Build and deploy" after your site is created. + +Once properly configured with the above options, your site should deploy and automatically redeploy upon merging to your deploy branch, which defaults to `master`. + +:::important + +Make sure to disable Netlify setting `Pretty URLs` to prevent lowercased URLs, unneccessary redirects and 404 errors. + +::: + +## Deploying to ZEIT Now + +Deploying your Docusaurus project to [ZEIT Now](https://zeit.co/now) will provide you with [various benefits](https://zeit.co/now) in the areas of performance and ease of use. + +Most importantly, however, deploying a Docusaurus project only takes a couple seconds: + +1. First, install their [command-line interface](https://zeit.co/download): + +```bash +npm i -g now +``` + +2. Run a single command inside the root directory of your project: + +```bash +now +``` + +**That's all.** Your docs will automatically be deployed. + +Now you can connect your site to [GitHub](https://zeit.co/github) or [GitLab](https://zeit.co/gitlab) to automatically receive a new deployment every time you push a commit. + +## Deploying to Render + +Render offers [free static site hosting](https://render.com/docs/static-sites) with fully managed SSL, custom domains, a global CDN and continuous auto deploys from your Git repo. Deploy your app in just a few minutes by following these steps. + +1. Create a new **Web Service** on Render, and give Render permission to access your Docusaurus repo. + +2. Select the branch to deploy. The default is `master`. + +3. Enter the following values during creation. + + | Field | Value | + | --------------------- | ------------- | + | **Environment** | `Static Site` | + | **Build Command** | `yarn build` | + | **Publish Directory** | `build` | + +That's it! Your app will be live on your Render URL as soon as the build finishes. + +## Deploying to Surge + +Surge is a [static web hosting platform](https://surge.sh/help/getting-started-with-surge), it is used to deploy your Docusaurus project from command line in a minute. Deploying your project to Surge is easy and it is also free (including a custom domain and SSL). + +Deploy your app in a matter of seconds using surge with the following steps: + +1. First, install Surge using npm by running the following command: + +```bash +npm install --g surge +``` + +2. To build the static files of your site for production in the root directory of your project, run: + +```bash +npm run build +``` + +3. Then, run this command inside the root directory of your project: + +```bash +surge build/ +``` + +First time users of Surge would be prompted to create an account from the command line(happens only once). + +Confirm that the site you want to publish is in the `build` directory, a randomly generated subdomain `*.surge.sh subdomain` is always given(which can be edited). + +### Using your domain + +If you have a domain name you can deploy your site using surge to your domain using the command: + +```bash +surge build/ yourdomain.com +``` + +You site is now deployed for free at `subdomain.surge.sh` or `yourdomain.com` depending on the method you chose. + +### Setting up CNAME file + +Store your domain in a CNAME file for future deployments with the following command: + +```bash +echo subdomain.surge.sh > CNAME +``` + +You can deploy any other changes in the future with the command `surge`. diff --git a/website/versioned_docs/version-2.0.0-alpha.51/design-principles.md b/website/versioned_docs/version-2.0.0-alpha.51/design-principles.md new file mode 100644 index 000000000000..8e85dbfde8ee --- /dev/null +++ b/website/versioned_docs/version-2.0.0-alpha.51/design-principles.md @@ -0,0 +1,34 @@ +--- +id: design-principles +title: Design Principles +--- + +:::caution + +This section is a work in progress. + +::: + +- **Little to learn** - Docusaurus should be easy to learn and use as the API is quite small. Most things will still be achievable by users, even if it takes them more code and more time to write. Not having abstractions is better than having the wrong abstractions, and we don't want users to have to hack around the wrong abstractions. Mandatory talk - [Minimal API Surface Area](https://www.youtube.com/watch?v=4anAwXYqLG8). +- **Intuitive** - Users will not feel overwhelmed when looking at the project directory of a Docusaurus project or adding new features. It should look intuitive and easy to build on top of, using approaches they are familiar with. +- **Layered architecture** - The separations of concerns between each layer of our stack (content/theming/styling) should be clear - well-abstracted and modular. +- **Sensible defaults** - Common and popular performance optimizations and configurations will be done for users but they are given the option to override them. +- **No vendor-lock in** - Users are not required to use the default plugins or CSS, although they are highly encouraged to. Certain core lower-level infra level pieces like React Loadable, React Router cannot be swapped because we do default performance optimization on them. But not higher level ones, such as choice of Markdown engines, CSS frameworks, CSS methodology will be entirely up to users. + +## How Docusaurus works + + + +We believe that as developers, knowing how a library works is helpful in allowing us to become better at using it. Hence we're dedicating effort into explaining the architecture and various components of Docusaurus with the hope that users reading it will gain a deeper understanding of the tool and be even more proficient in using it. + + diff --git a/website/versioned_docs/version-2.0.0-alpha.51/docs.md b/website/versioned_docs/version-2.0.0-alpha.51/docs.md new file mode 100644 index 000000000000..d44c89ebed0a --- /dev/null +++ b/website/versioned_docs/version-2.0.0-alpha.51/docs.md @@ -0,0 +1,304 @@ +--- +id: docs +title: Docs Introduction +sidebar_label: Introduction +--- + +The docs feature provides users with a way to organize Markdown files in a hierarchical format. + +## Document ID + +Every document has a unique `id`. By default, a document `id` is the name of the document (without the extension) relative to the root docs directory. + +For example, `greeting.md` id is `greeting` and `guide/hello.md` id is `guide/hello`. + +```bash +website # root directory of your site +└── docs +   ├── greeting.md + └── guide + └── hello.md +``` + +However, the last part of the `id` can be defined by user in the front matter. For example, if `guide/hello.md`'s content is defined as below, its final `id` is `guide/part1`. + +```yml +--- +id: part1 +--- +Lorem ipsum +``` + +## Sidebar + +To generate a sidebar to your Docusaurus site, you need to define a file that exports a sidebar object and pass that into the `@docusaurus/plugin-docs` plugin directly or via `@docusaurus/preset-classic`. + +```js {8-9} title="docusaurus.config.js" +module.exports = { + // ... + presets: [ + [ + '@docusaurus/preset-classic', + { + docs: { + // Sidebars filepath relative to the site dir. + sidebarPath: require.resolve('./sidebars.js'), + }, + // ... + }, + ], + ], +}; +``` + +### Sidebar object + +A sidebar object is defined like this. + +```typescript +type Sidebar = { + [sidebarId: string]: + | { + [sidebarCategory: string]: SidebarItem[]; + } + | SidebarItem[]; +}; +``` + +Below is an example of a sidebar object. The key `docs` is the id of the sidebar (can be renamed to something else) and `Getting Started` is a category within the sidebar. `greeting` and `doc1` are both [sidebar item](#sidebar-item). + +```js title="sidebars.js" +module.exports = { + docs: { + 'Getting started': ['greeting'], + Docusaurus: ['doc1'], + }, +}; +``` + +Keep in mind that EcmaScript does not guarantee `Object.keys({a,b}) === ['a','b']` (yet, this is generally true). If you don't want to rely on iteration order of JavaScript object keys for the category name, the following sidebar object is also equivalent of the above shorthand syntax. + +```js title="sidebars.js" +module.exports = { + docs: [ + { + type: 'category', + label: 'Getting Started', + items: ['greeting'], + }, + { + type: 'category', + label: 'Docusaurus', + items: ['doc1'], + }, + ], +}; +``` + +You can also have multiple sidebars for different Markdown files by adding more top-level keys to the exported object. + +Example: + +```js title="sidebars.js" +module.exports = { + firstSidebar: { + 'Category A': ['doc1'], + }, + secondSidebar: { + 'Category A': ['doc2'], + 'Category B': ['doc3'], + }, +}; +``` + +#### Sidebar item + +As the name implies, `SidebarItem` is an item defined in a Sidebar. There are a few types we support: + +- [Doc](#doc) +- [Link](#link) +- [Ref](#ref) +- [Category](#category) + +#### Doc + +```typescript +type SidebarItemDoc = + | string + | { + type: 'doc'; + id: string; + }; +``` + +Sidebar item type that links to a doc page. Example: + +```js +{ + type: 'doc', + id: 'doc1', // string - document id +} +``` + +Using just the [Document ID](#document-id) is perfectly valid as well, the following is equivalent to the above: + +```js +'doc1'; // string - document id +``` + +Note that using this type will bind the linked doc to current sidebar, this means that if you access `doc1` page, the sidebar displayed will be the sidebar this item is on. For below case, `doc1` is bounded to `firstSidebar`. + +```js title="sidebars.js" +module.exports = { + firstSidebar: { + 'Category A': ['doc1'], + }, + secondSidebar: { + 'Category A': ['doc2'], + 'Category B': ['doc3'], + }, +}; +``` + +#### Link + +```typescript +type SidebarItemLink = { + type: 'link'; + label: string; + href: string; +}; +``` + +Sidebar item type that links to a non-document page. Example: + +```js +{ + type: 'link', + label: 'Custom Label', // string - the label that should be displayed. + href: 'https://example.com' // string - the target URL. +} +``` + +#### Ref + +```typescript +type SidebarItemRef = { + type: 'ref'; + id: string; +}; +``` + +Sidebar item type that links to doc without bounding it to the sidebar. Example: + +```js +{ + type: 'ref', + id: 'doc1', // string - document id +} +``` + +#### Category + +This is used to add hierarchies to the sidebar: + +```typescript +type SidebarItemCategory = { + type: 'category'; + label: string; // Sidebar label text. + items: SidebarItem[]; // Array of sidebar items. +}; +``` + +As an example, here's how we created the subcategory for "Docs" under "Guides" in this site: + +```js title="sidebars.js" +module.exports = { + docs: { + Guides: [ + 'creating-pages', + { + type: 'category', + label: 'Docs', + items: ['markdown-features', 'sidebar', 'versioning'], + }, + ], + }, +}; +``` + +**Note**: it's possible to use the shorthand syntax to create nested categories: + +```js title="sidebars.js" +module.exports = { + docs: { + Guides: [ + 'creating-pages', + { + Docs: ['markdown-features', 'sidebar', 'versioning'], + }, + ], + }, +}; +``` + +#### Collapsible categories + +For sites with a sizable amount of content, we support the option to expand/collapse a category to toggle the display of its contents. Categories are collapsible by default. If you want them to be always expanded, set `themeConfig.sidebarCollapsible` to `false`: + +```js {4} title="docusaurus.config.js" +module.exports = { + // ... + themeConfig: { + sidebarCollapsible: false, + // ... + }, +}; +``` + +## Docs-only mode + +If you just want the documentation feature, you can follow the instructions for a "docs-only mode": + +1. Set the `routeBasePath` property of the `docs` object in `@docusaurus/preset-classic` in `docusaurus.config.js` to the root of your site: + +```js {8} title="docusaurus.config.js" +module.exports = { + // ... + presets: [ + [ + '@docusaurus/preset-classic', + { + docs: { + routeBasePath: '', // Set to empty string. + // ... + }, + }, + ], + ], + // ... +}; +``` + +2. Set up a redirect to the initial document on the home page in `/src/pages/index.js`, e.g. for the document `getting-started`. This is needed because by default there's no page created for the root of the docs. + +```jsx title="src/pages/index.js" +import React from 'react'; + +import {Redirect} from '@docusaurus/router'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +function Home() { + return ; +} + +export default Home; +``` + +Now, when visiting your site, it will show your initial document instead of a landing page. + +:::tip + +There's also a "blog-only mode", for those who only want to use the blog component of Docusaurus 2. You can use the same method detailed above, except that you need to delete the `/src/pages/index.js` file. Follow the setup instructions on [Blog-only mode](blog.md#blog-only-mode). + +::: diff --git a/website/versioned_docs/version-2.0.0-alpha.51/docusaurus-core.md b/website/versioned_docs/version-2.0.0-alpha.51/docusaurus-core.md new file mode 100644 index 000000000000..f82d441098d0 --- /dev/null +++ b/website/versioned_docs/version-2.0.0-alpha.51/docusaurus-core.md @@ -0,0 +1,197 @@ +--- +id: docusaurus-core +title: Docusaurus Client API +sidebar_label: Client API +--- + +Docusaurus provides some APIs on the clients that can be helpful to you when building your site. + +## Components + +### `` + +This reusable React component will manage all of your changes to the document head. It takes plain HTML tags and outputs plain HTML tags and is beginner-friendly. It is a wrapper around [React Helmet](https://github.com/nfl/react-helmet). + +Usage Example: + +```jsx {2,6,11} +import React from 'react'; +import Head from '@docusaurus/Head'; + +const MySEO = () => ( + <> + + + + My Title + + + +); +``` + +Nested or latter components will override duplicate usages: + +```jsx {2,5,8,11} + + + My Title + + + + + + Nested Title + + + + +``` + +Outputs + +```html + + Nested Title + + +``` + +### `` + +This component enables linking to internal pages as well as a powerful performance feature called preloading. Preloading is used to prefetch resources so that the resources are fetched by the time the user navigates with this component. We use an `IntersectionObserver` to fetch a low-priority request when the `` is in the viewport and then use an `onMouseOver` event to trigger a high-priority request when it is likely that a user will navigate to the requested resource. + +The component is a wrapper around react-router’s `` component that adds useful enhancements specific to Docusaurus. All props are passed through to react-router’s `` component. + +```jsx {2,7} +import React from 'react'; +import Link from '@docusaurus/Link'; + +const Page = () => ( +
    +); +``` + +#### `to`: string + +The target location to navigate to. Example: `/docs/introduction`. + +```jsx + +``` + +### `` + +Rendering a `` will navigate to a new location. The new location will override the current location in the history stack, like server-side redirects (HTTP 3xx) do. You can refer to [React Router's Redirect documentation](https://reacttraining.com/react-router/web/api/Redirect) for more info on available props. + +Example usage: + +```jsx {2,5} +import React from 'react'; +import {Redirect} from '@docusaurus/router'; + +function Home() { + return ; +} +``` + +### `` + +The `` component accepts a `children` prop, a render function which will not be executed during the pre-rendering phase of the build process. This is useful for hiding code that is only meant to run in the browsers (e.g. where the `window`/`document` objects are being accessed). To improve SEO, you can also provide fallback content using the `fallback` prop, which will be prerendered until in the build process and replaced with the client-side only contents when viewed in the browser. + +```jsx +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function MyComponent() { + return ( + The fallback content to display on prerendering}> + {() => { + // Something that should be excluded during build process prerendering. + }} + + ); +} +``` + +## Hooks + +### `useDocusaurusContext` + +React hook to access Docusaurus Context. Context contains `siteConfig` object from [docusaurus.config.js](docusaurus.config.js.md). + +```ts +interface DocusaurusContext { + siteConfig?: DocusaurusConfig; +} +``` + +Usage example: + +```jsx {2,5} +import React from 'react'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; + +const Test = () => { + const context = useDocusaurusContext(); + const {siteConfig = {}} = context; + const {title} = siteConfig; + + return

    {title}

    ; +}; +``` + +### `useBaseUrl` + +React hook to automatically append `baseUrl` to a string automatically. This is particularly useful if you don't want to hardcode your config's `baseUrl`. We highly recommend you to use this. + +Example usage: + +```jsx {3,11} +import React, {useEffect} from 'react'; +import Link from '@docusaurus/Link'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +function Help() { + return ( +
    +

    Browse the docs

    +

    + Learn more about Docusaurus using the{' '} + official documentation +

    +
    + ); +} +``` + +## Modules + +### `ExecutionEnvironment` + +A module which exposes a few boolean variables to check the current rendering environment. Useful if you want to only run certain code on client/server or need to write server-side rendering compatible code. + +```jsx {2} +import React from 'react'; +import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; + +function MyPage() { + const location = ExecutionEnvironment.canUseDOM ? window.href.location : null; + return
    {location}
    ; +} +``` + +| Field | Description | +| --- | --- | +| `ExecutionEnvironment.canUseDOM` | `true` if on client, `false` if SSR. | +| `ExecutionEnvironment.canUseEventListeners` | `true` if on client and has `window.addEventListener`. | +| `ExecutionEnvironment.canUseIntersectionObserver` | `true` if on client and has `IntersectionObserver`. | +| `ExecutionEnvironment.canUseViewport` | `true` if on client and has `window.screen`. | diff --git a/website/versioned_docs/version-2.0.0-alpha.51/docusaurus.config.js.md b/website/versioned_docs/version-2.0.0-alpha.51/docusaurus.config.js.md new file mode 100644 index 000000000000..a3f046d8b22c --- /dev/null +++ b/website/versioned_docs/version-2.0.0-alpha.51/docusaurus.config.js.md @@ -0,0 +1,289 @@ +--- +id: docusaurus.config.js +title: docusaurus.config.js +description: API reference for Docusaurus configuration file. +--- + +## Overview + +`docusaurus.config.js` contains configurations for your site and is placed in the root directory of your site. + +## Required fields + +### `title` + +- Type: `string` + +Title for your website. + +```js title="docusaurus.config.js" +module.exports = { + title: 'Docusaurus', +}; +``` + +### `favicon` + +- Type: `string` + +URL for site favicon. Example: + +```js title="docusaurus.config.js" +module.exports = { + favicon: 'https://v2.docusaurus.io/favicon.ico', +}; +``` + +You can also use the favicon URL relative to the `static` directory of your site. For example, your site has the following directory structure: + +```bash +. +├── README.md +├ # ... other files in root directory +└─ static + └── img + └── favicon.ico +``` + +So you can refer it like below: + +```js title="docusaurus.config.js" +module.exports = { + favicon: 'img/favicon.ico', +}; +``` + +### `url` + +- Type: `string` + +URL for your website. This can also be considered the top-level hostname. For example, `https://facebook.github.io` is the URL of https://facebook.github.io/metro/, and `https://docusaurus.io` is the URL for https://docusaurus.io. This field is related to the [baseUrl](#baseurl) field. + +```js title="docusaurus.config.js" +module.exports = { + url: 'https://docusaurus.io', +}; +``` + +### `baseUrl` + +- Type: `string` + +Base URL for your site. This can also be considered the path after the host. For example, `/metro/` is the baseUrl of https://facebook.github.io/metro/. For URLs that have no path, the baseUrl should be set to `/`. This field is related to the [url](#url) field. + +```js title="docusaurus.config.js" +module.exports = { + baseUrl: '/', +}; +``` + +## Optional fields + +### `tagline` + +- Type: `string` + +The tagline for your website. + +```js title="docusaurus.config.js" +module.exports = { + tagline: + 'Docusaurus makes it easy to maintain Open Source documentation websites.', +}; +``` + +### `organizationName` + +- Type: `string` + +The GitHub user or organization that owns the repository. Used by the deployment command. + +```js title="docusaurus.config.js" +module.exports = { + // Docusaurus' organization is facebook + organizationName: 'facebook', +}; +``` + +### `projectName` + +- Type: `string` + +The name of the GitHub repository. Used by the deployment command. + +```js title="docusaurus.config.js" +module.exports = { + projectName: 'docusaurus', +}; +``` + +### `githubHost` + +- Type: `string` + +The hostname of your server. Useful if you are using GitHub Enterprise. + +```js title="docusaurus.config.js" +module.exports = { + githubHost: 'github.com', +}; +``` + +### `themeConfig` + +- Type: `Object` + + + +An object containing data needed by the theme you use. + +For Docusaurus' default theme _classic_, we use `themeConfig` to customize your navbar and footer links: + +Example: + +```js title="docusaurus.config.js" +module.exports = { + themeConfig: { + navbar: { + title: 'Site Title', + logo: { + alt: 'Site Logo', + src: 'img/logo.svg', + }, + links: [ + { + to: 'docs/docusaurus.config.js', + activeBasePath: 'docs', + label: 'docusaurus.config.js', + position: 'left', + }, + // ... other links + ], + }, + footer: { + style: 'dark', + links: [ + { + title: 'Docs', + items: [ + { + label: 'Docs', + to: 'docs/doc1', + }, + ], + }, + // ... other links + ], + logo: { + alt: 'Facebook Open Source Logo', + src: 'https://docusaurus.io/img/oss_logo.png', + }, + copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc.`, // You can also put own HTML here + }, + }, +}; +``` + +### `plugins` + + + +- Type: `any[]` + +```js title="docusaurus.config.js" +module.exports = { + plugins: [], +}; +``` + +### `themes` + + + +- Type: `any[]` + +```js title="docusaurus.config.js" +module.exports = { + themes: [], +}; +``` + +### `presets` + + + +- Type: `any[]` + +```js title="docusaurus.config.js" +module.exports = { + presets: [], +}; +``` + +### `customFields` + +Docusaurus guards `docusaurus.config.js` from unknown fields. To add a custom field, define it on `customFields` + +- Type: `Object` + +```js title="docusaurus.config.js" +module.exports = { + customFields: { + admin: 'endi', + superman: 'lol', + }, +}; +``` + +Attempting to add unknown field in the config will lead to error in build time: + +```bash +Error: The field(s) 'foo', 'bar' are not recognized in docusaurus.config.js +``` + +### `scripts` + +An array of scripts to load. The values can be either strings or plain objects of attribute-value maps. The ` + <% it.scripts.forEach((script) => { %> + <% }); %> - <%- postBodyTags %> + <%~ it.postBodyTags %> `; diff --git a/packages/docusaurus/src/webpack/base.ts b/packages/docusaurus/src/webpack/base.ts index 775c3676ff38..f2c6a349f65d 100644 --- a/packages/docusaurus/src/webpack/base.ts +++ b/packages/docusaurus/src/webpack/base.ts @@ -61,8 +61,6 @@ export function createBaseConfig( extensions: ['.wasm', '.mjs', '.js', '.jsx', '.ts', '.tsx', '.json'], symlinks: true, alias: { - // https://stackoverflow.com/a/55433680/6072730 - ejs: 'ejs/ejs.min.js', '@site': siteDir, '@generated': generatedFilesDir, '@docusaurus': path.resolve(__dirname, '../client/exports'), diff --git a/yarn.lock b/yarn.lock index f7e3ebbf1d97..68e30243afc8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6194,11 +6194,6 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -ejs@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.0.2.tgz#745b01cdcfe38c1c6a2da3bbb2d9957060a31226" - integrity sha512-IncmUpn1yN84hy2shb0POJ80FWrfGNY0cxO9f4v+/sG7qcBvAtVWUA1IdzY/8EYUmOVhoKJVdJjNd3AZcnxOjA== - electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.322: version "1.3.322" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" @@ -6700,6 +6695,11 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +eta@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/eta/-/eta-1.1.1.tgz#acd575025233488a66870b02223001d4cd467441" + integrity sha512-YRchTAXZZrrJVmlAwmLHuKmlHNJ2hO0uen8LsDqvH5kknRjh0ef+Y9kInENygCgvu7FQNJBpbyDChfMo8f5Qgw== + etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" From dc08f3b416e031e51583de8dcb8dfe9786166475 Mon Sep 17 00:00:00 2001 From: Taylor Reece Date: Fri, 8 May 2020 12:05:46 -0500 Subject: [PATCH 043/106] chore(v2): bump webpack-dev-server to 3.11.0 to address yargs vulnerability (#2728) --- packages/docusaurus/package.json | 2 +- yarn.lock | 181 +++++++++---------------------- 2 files changed, 50 insertions(+), 133 deletions(-) diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 3d0bfca9a29f..628e36a16a01 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -85,7 +85,7 @@ "wait-file": "^1.0.5", "webpack": "^4.41.2", "webpack-bundle-analyzer": "^3.6.1", - "webpack-dev-server": "^3.10.3", + "webpack-dev-server": "^3.11.0", "webpack-merge": "^4.2.2", "webpackbar": "^4.0.0" }, diff --git a/yarn.lock b/yarn.lock index 68e30243afc8..93ed45d175b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4711,15 +4711,6 @@ clipboard@^2.0.6: select "^1.1.2" tiny-emitter "^2.0.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -7527,11 +7518,6 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -8296,10 +8282,10 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= +html-entities@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== html-escaper@^2.0.0: version "2.0.2" @@ -8889,11 +8875,6 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -10101,13 +10082,6 @@ lazy-cache@^2.0.2: dependencies: set-getter "^0.1.0" -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - lerna-changelog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lerna-changelog/-/lerna-changelog-1.0.1.tgz#53090ab7f047730ec88d32087762164626269d3a" @@ -10584,10 +10558,10 @@ logalot@^2.0.0: figures "^1.3.5" squeak "^1.0.0" -loglevel@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" - integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== +loglevel@^1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" + integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== lolex@^5.0.0: version "5.1.2" @@ -10752,13 +10726,6 @@ mamacro@^0.0.3: resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -10908,15 +10875,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -11095,7 +11053,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -12067,15 +12025,6 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-name@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" @@ -12107,11 +12056,6 @@ p-cancelable@^0.4.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-each-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" @@ -12146,11 +12090,6 @@ p-is-promise@^1.1.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -12687,6 +12626,15 @@ portfinder@^1.0.25: debug "^3.1.1" mkdirp "^0.5.1" +portfinder@^1.0.26: + version "1.0.26" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70" + integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -14670,11 +14618,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" integrity sha1-rW8wwTvs15cBDEaK+ndcDAprR/o= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -15339,13 +15282,14 @@ sockjs-client@1.4.0: json3 "^3.3.2" url-parse "^1.4.3" -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== dependencies: faye-websocket "^0.10.0" - uuid "^3.0.1" + uuid "^3.4.0" + websocket-driver "0.6.5" socks-proxy-agent@^4.0.0: version "4.0.2" @@ -15476,10 +15420,10 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" - integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: debug "^4.1.0" handle-thing "^2.0.0" @@ -15661,7 +15605,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -17010,7 +16954,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.0.1, uuid@^3.3.2: +uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -17219,10 +17163,10 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.10.3: - version "3.10.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" - integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== +webpack-dev-server@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -17232,31 +17176,31 @@ webpack-dev-server@^3.10.3: debug "^4.1.1" del "^4.1.1" express "^4.17.1" - html-entities "^1.2.1" + html-entities "^1.3.1" http-proxy-middleware "0.19.1" import-local "^2.0.0" internal-ip "^4.3.0" ip "^1.1.5" is-absolute-url "^3.0.3" killable "^1.0.1" - loglevel "^1.6.6" + loglevel "^1.6.8" opn "^5.5.0" p-retry "^3.0.1" - portfinder "^1.0.25" + portfinder "^1.0.26" schema-utils "^1.0.0" selfsigned "^1.10.7" semver "^6.3.0" serve-index "^1.9.1" - sockjs "0.3.19" + sockjs "0.3.20" sockjs-client "1.4.0" - spdy "^4.0.1" + spdy "^4.0.2" strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" webpack-dev-middleware "^3.7.2" webpack-log "^2.0.0" ws "^6.2.1" - yargs "12.0.5" + yargs "^13.3.2" webpack-log@^2.0.0: version "2.0.0" @@ -17324,6 +17268,13 @@ webpackbar@^4.0.0: text-table "^0.2.0" wrap-ansi "^6.0.0" +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + websocket-driver@>=0.5.1: version "0.7.3" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" @@ -17436,14 +17387,6 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -17612,7 +17555,7 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== @@ -17654,14 +17597,6 @@ yargs-parser@^10.0.0: dependencies: camelcase "^4.1.0" -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -17686,25 +17621,7 @@ yargs-parser@^18.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.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 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@^13.0.0: +yargs@^13.0.0, yargs@^13.3.2: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== From afe70d973f4709f2e7ef8ea112278ca37440b99c Mon Sep 17 00:00:00 2001 From: Jonny Nabors Date: Sun, 10 May 2020 09:01:27 -0400 Subject: [PATCH 044/106] docs(v2): add new community plugin for dotenv support (#2730) * Add new community plugin for dotenv support Adds a link to a new community plugin that introduces support for environment variables managed in `.env` files. * Update resources.md Co-authored-by: Yangshun Tay --- website/docs/resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/resources.md b/website/docs/resources.md index c01a1a903dec..b2da82a2fea3 100644 --- a/website/docs/resources.md +++ b/website/docs/resources.md @@ -30,6 +30,7 @@ See the showcase - [docusaurus-search-local](https://github.com/cmfcmf/docusaurus-search-local) - Offline/local search for Docusaurus v2 - [docusaurus-pdf](https://github.com/KohheePeace/docusaurus-pdf) - Generate documentation into PDF format - [docusaurus-plugin-sass](https://github.com/rlamana/docusaurus-plugin-sass) - Sass/SCSS stylesheets support +- [docusaurus2-dotenv](https://github.com/jonnynabors/docusaurus2-dotenv) - A Docusaurus 2 plugin that supports dotenv and other environment variables ## Enterprise usage From 93b39e674f6be92d10169bc865a96dbcc7772dbe Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sun, 10 May 2020 16:03:45 +0300 Subject: [PATCH 045/106] chore(v2): upgrade Infima to 0.2.0-alpha.10 (#2729) * chore(v2): upgrade Infima to 0.2.0-alpha.10 * Changelog --- CHANGELOG-2.x.md | 15 +++++++++++++++ .../src/theme/BlogListPaginator/index.js | 4 ++-- .../src/theme/BlogPostPaginator/index.js | 4 ++-- packages/docusaurus-theme-classic/package.json | 2 +- .../src/theme/BlogListPaginator/index.js | 8 ++------ .../src/theme/BlogPostPaginator/index.js | 8 ++++---- .../src/theme/DocPaginator/index.js | 8 ++++---- .../src/theme/Tabs/index.js | 4 ++-- yarn.lock | 8 ++++---- 9 files changed, 36 insertions(+), 25 deletions(-) diff --git a/CHANGELOG-2.x.md b/CHANGELOG-2.x.md index e02e6ba90d26..c825092a1943 100644 --- a/CHANGELOG-2.x.md +++ b/CHANGELOG-2.x.md @@ -1,5 +1,20 @@ # Docusaurus 2 Changelog +## 2.0.0-alpha.55 + +#### :boom: Breaking Change + +- `infima` + - The following Infima classes have been renamed for consistency: + + - `page-item` → `pagination__item` + - `pagination-nav__link--label` → `pagination-nav__label` + - `pagination-nav__link--sublabel` → `pagination-nav__sublabel` + - `tab-item` → `tabs__item` + - `tab-item--active` → `tabs__item--active` + + If you have swizzled components, you need to replace these class names. + ## 2.0.0-alpha.54 **HOTFIX for 2.0.0-alpha.53**. diff --git a/packages/docusaurus-theme-bootstrap/src/theme/BlogListPaginator/index.js b/packages/docusaurus-theme-bootstrap/src/theme/BlogListPaginator/index.js index a67289ddb392..a6edbf0f9f36 100644 --- a/packages/docusaurus-theme-bootstrap/src/theme/BlogListPaginator/index.js +++ b/packages/docusaurus-theme-bootstrap/src/theme/BlogListPaginator/index.js @@ -16,14 +16,14 @@ function BlogListPaginator(props) { aria-label="Blog list page navigation" className="my-5 col col-xl-4 offset-xl-4 col-xs-6"> diff --git a/packages/docusaurus-types/src/index.d.ts b/packages/docusaurus-types/src/index.d.ts index 4c2c1cea0fc8..61b34feef36e 100644 --- a/packages/docusaurus-types/src/index.d.ts +++ b/packages/docusaurus-types/src/index.d.ts @@ -105,6 +105,7 @@ export interface Plugin { content: T; actions: PluginContentLoadedActions; }): void; + routesLoaded?(routes: RouteConfig[]): void; postBuild?(props: Props): void; postStart?(props: Props): void; configureWebpack?( diff --git a/packages/docusaurus/src/server/plugins/index.ts b/packages/docusaurus/src/server/plugins/index.ts index 2341ab6b3d34..88c8df6dc9d8 100644 --- a/packages/docusaurus/src/server/plugins/index.ts +++ b/packages/docusaurus/src/server/plugins/index.ts @@ -40,6 +40,12 @@ export function sortConfig(routeConfigs: RouteConfig[]) { return a.path > b.path ? 1 : b.path > a.path ? -1 : 0; }); + + routeConfigs.forEach((routeConfig) => { + routeConfig.routes?.sort((a, b) => { + return a.path > b.path ? 1 : b.path > a.path ? -1 : 0; + }); + }); } export async function loadPlugins({ @@ -100,6 +106,20 @@ export async function loadPlugins({ }), ); + // 4. Plugin Lifecycle - routesLoaded. + // Currently plugins run lifecycle methods in parallel and are not order-dependent. + // We could change this in future if there are plugins which need to + // run in certain order or depend on others for data. + await Promise.all( + plugins.map(async (plugin) => { + if (!plugin.routesLoaded) { + return null; + } + + return await plugin.routesLoaded(pluginsRouteConfigs); + }), + ); + // Sort the route config. This ensures that route with nested // routes are always placed last. sortConfig(pluginsRouteConfigs); diff --git a/website/docs/docs.md b/website/docs/docs.md index d9194d74275f..421b85ec24b4 100644 --- a/website/docs/docs.md +++ b/website/docs/docs.md @@ -29,6 +29,42 @@ id: part1 Lorem ipsum ``` +## Home page docs + +Using the `homePageId` property, you can create a home page of your docs. To do this, you can create a new document, especially for this purpose with the id as `_index`, or you could specify an existing document id. + +```js {8} title="docusaurus.config.js" +module.exports = { + // ... + presets: [ + [ + '@docusaurus/preset-classic', + { + docs: { + homePageId: 'getting-started', // Defaults to `_index` + // ... + }, + }, + ], + ], + // ... +}; +``` + +Given the example above, now when you navigate to the path `/docs` you will see that the document content with id is `getting-started`. This functionality also works for docs with versioning enabled. + +:::important + +The document id of `_index` is reserved exclusively for the home doc page, so it will not work as a standalone route. + +::: + +:::note + +The page `docs` that you created (eg. `src/pages/docs.js`) will take precedence over the route generated via the `homePageId` option. + +::: + ## Sidebar To generate a sidebar to your Docusaurus site, you need to define a file that exports a sidebar object and pass that into the `@docusaurus/plugin-docs` plugin directly or via `@docusaurus/preset-classic`. @@ -258,11 +294,17 @@ module.exports = { ## Docs-only mode -If you just want the documentation feature, you can follow the instructions for a "docs-only mode": +If you just want the documentation feature, you can enable "docs-only mode". -1. Set the `routeBasePath` property of the `docs` object in `@docusaurus/preset-classic` in `docusaurus.config.js` to the root of your site: +To achieve this, set the `routeBasePath` property of the `docs` object in `@docusaurus/preset-classic` in `docusaurus.config.js` to the root of your site, and also in that object set the `homePageId` property with the value of the document ID that you show as root of the docs. -```js {8} title="docusaurus.config.js" +:::note + +More details on functionality of home page for docs can be found in [appropriate section](#home-page-docs). + +::: + +```js {8-9} title="docusaurus.config.js" module.exports = { // ... presets: [ @@ -271,6 +313,7 @@ module.exports = { { docs: { routeBasePath: '/', // Set this value to '/'. + homePageId: 'getting-started', // Set to existing document id. // ... }, }, @@ -280,21 +323,6 @@ module.exports = { }; ``` -2. Set up a redirect to the initial document on the home page in `/src/pages/index.js`, e.g. for the document `getting-started`. This is needed because by default there's no page created for the root of the docs. - -```jsx title="src/pages/index.js" -import React from 'react'; - -import {Redirect} from '@docusaurus/router'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -function Home() { - return ; -} - -export default Home; -``` - Now, when visiting your site, it will show your initial document instead of a landing page. :::tip diff --git a/website/docs/lifecycle-apis.md b/website/docs/lifecycle-apis.md index c841d9770a5b..17725e6166f1 100644 --- a/website/docs/lifecycle-apis.md +++ b/website/docs/lifecycle-apis.md @@ -52,6 +52,10 @@ module.exports = function (context, options) { Plugins should use the data loaded in `loadContent` and construct the pages/routes that consume the loaded data (optional). +## `async routesLoaded(routes)` + +Plugins can modify the routes that were generated by all plugins. `routesLoaded` is called after `contentLoaded` hook. + ### `content` `contentLoaded` will be called _after_ `loadContent` is done, the return value of `loadContent()` will be passed to `contentLoaded` as `content`. @@ -373,6 +377,11 @@ module.exports = function (context, opts) { // actions are set of functional API provided by Docusaurus. e.g: addRoute }, + async routesLoaded(routes) { + // routesLoaded hook is done after contentLoaded hook is done + // This can be useful if you need to change any route. + }, + async postBuild(props) { // after docusaurus finish }, diff --git a/website/docs/using-plugins.md b/website/docs/using-plugins.md index dede1d5e1e63..81f1eed6c584 100644 --- a/website/docs/using-plugins.md +++ b/website/docs/using-plugins.md @@ -236,6 +236,7 @@ module.exports = { * do not include trailing slash */ routeBasePath: 'docs', + homePageId: '_index', // Document id for docs home page. include: ['**/*.md', '**/*.mdx'], // Extensions to include. /** * Path to sidebar configuration for showing a list of markdown pages. diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 31d59dc20ca4..2090e1c94f33 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -36,6 +36,7 @@ module.exports = { '@docusaurus/preset-classic', { docs: { + homePageId: 'introduction', path: 'docs', sidebarPath: require.resolve('./sidebars.js'), editUrl: From a42b66508941e5a5e0b94facc8b4c093cf312a81 Mon Sep 17 00:00:00 2001 From: Fanny Date: Sun, 17 May 2020 06:51:18 -0300 Subject: [PATCH 066/106] feat(v2): bootstrap MDX Components (#2709) * feat(v2): Bootstrap MDX Componnets * feat(v2): Add theme --- .../docusaurus-theme-bootstrap/package.json | 4 +- .../src/theme/BlogPostItem/index.js | 8 +++- .../src/theme/CodeBlock/index.js | 34 +++++++++++++++++ .../src/theme/MDXComponents/index.js | 37 +++++++++++++++++++ 4 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 packages/docusaurus-theme-bootstrap/src/theme/CodeBlock/index.js create mode 100644 packages/docusaurus-theme-bootstrap/src/theme/MDXComponents/index.js diff --git a/packages/docusaurus-theme-bootstrap/package.json b/packages/docusaurus-theme-bootstrap/package.json index 4a5e5aa5cc02..d21c86130e04 100644 --- a/packages/docusaurus-theme-bootstrap/package.json +++ b/packages/docusaurus-theme-bootstrap/package.json @@ -9,7 +9,9 @@ }, "dependencies": { "bootstrap": "^4.4.1", - "reactstrap": "^8.4.1" + "prism-react-renderer": "^1.1.0", + "reactstrap": "^8.4.1", + "@mdx-js/react": "^1.5.8" }, "peerDependencies": { "@docusaurus/core": "^2.0.0", diff --git a/packages/docusaurus-theme-bootstrap/src/theme/BlogPostItem/index.js b/packages/docusaurus-theme-bootstrap/src/theme/BlogPostItem/index.js index a7f81cdba890..07f6a7c72e93 100644 --- a/packages/docusaurus-theme-bootstrap/src/theme/BlogPostItem/index.js +++ b/packages/docusaurus-theme-bootstrap/src/theme/BlogPostItem/index.js @@ -6,6 +6,8 @@ */ import React from 'react'; +import {MDXProvider} from '@mdx-js/react'; +import MDXComponents from '@theme/MDXComponents'; import Link from '@docusaurus/Link'; const MONTHS = [ @@ -49,7 +51,7 @@ function BlogPostItem(props) { const day = parseInt(match[2], 10); return ( -
    +
    {authorImageURL && ( @@ -100,7 +102,9 @@ function BlogPostItem(props) {

    {title}

    -
    {children}
    +
    + {children} +