From 138b4c997541df1a39eb3547c1dcdf73dd345d88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 24 Jun 2021 18:50:28 +0200 Subject: [PATCH] fix(v2): allow undefined favicon (#5054) * fix(v2): allow undefined favicon * fix snapshots --- .../src/blogUtils.ts | 2 +- packages/docusaurus-types/src/index.d.ts | 2 +- .../__snapshots__/config.test.ts.snap | 6 +-- .../configValidation.test.ts.snap | 1 - .../server/__tests__/configValidation.test.ts | 3 +- .../docusaurus/src/server/configValidation.ts | 2 +- website/docs/api/docusaurus.config.js.md | 45 ++++++------------- 7 files changed, 20 insertions(+), 41 deletions(-) diff --git a/packages/docusaurus-plugin-content-blog/src/blogUtils.ts b/packages/docusaurus-plugin-content-blog/src/blogUtils.ts index b675a9684a..9064bac01a 100644 --- a/packages/docusaurus-plugin-content-blog/src/blogUtils.ts +++ b/packages/docusaurus-plugin-content-blog/src/blogUtils.ts @@ -99,7 +99,7 @@ export async function generateBlogFeed( language: feedOptions.language, link: blogBaseUrl, description: feedOptions.description || `${siteConfig.title} Blog`, - favicon: normalizeUrl([siteUrl, baseUrl, favicon]), + favicon: favicon ? normalizeUrl([siteUrl, baseUrl, favicon]) : undefined, copyright: feedOptions.copyright, }); diff --git a/packages/docusaurus-types/src/index.d.ts b/packages/docusaurus-types/src/index.d.ts index 642482ad78..673c9d2f72 100644 --- a/packages/docusaurus-types/src/index.d.ts +++ b/packages/docusaurus-types/src/index.d.ts @@ -26,7 +26,7 @@ export type ThemeConfig = { export interface DocusaurusConfig { baseUrl: string; baseUrlIssueBanner: boolean; - favicon: string; + favicon?: string; tagline?: string; title: string; url: string; diff --git a/packages/docusaurus/src/server/__tests__/__snapshots__/config.test.ts.snap b/packages/docusaurus/src/server/__tests__/__snapshots__/config.test.ts.snap index 27a2e819d1..af70e49573 100644 --- a/packages/docusaurus/src/server/__tests__/__snapshots__/config.test.ts.snap +++ b/packages/docusaurus/src/server/__tests__/__snapshots__/config.test.ts.snap @@ -1,14 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`loadConfig website with incomplete siteConfig 1`] = ` -"\\"favicon\\" is required -\\"url\\" is required +"\\"url\\" is required " `; exports[`loadConfig website with useless field (wrong field) in siteConfig 1`] = ` -"\\"favicon\\" is required -These field(s) (\\"useLessField\\",) are not recognized in docusaurus.config.js. +"These field(s) (\\"useLessField\\",) are not recognized in docusaurus.config.js. If you still want these fields to be in your configuration, put them in the \\"customFields\\" field. See https://docusaurus.io/docs/docusaurus.config.js/#customfields" `; diff --git a/packages/docusaurus/src/server/__tests__/__snapshots__/configValidation.test.ts.snap b/packages/docusaurus/src/server/__tests__/__snapshots__/configValidation.test.ts.snap index 75fa0a3c0b..23e5755f7d 100644 --- a/packages/docusaurus/src/server/__tests__/__snapshots__/configValidation.test.ts.snap +++ b/packages/docusaurus/src/server/__tests__/__snapshots__/configValidation.test.ts.snap @@ -7,7 +7,6 @@ exports[`normalizeConfig should throw error for baseUrl without trailing \`/\` 1 exports[`normalizeConfig should throw error for required fields 1`] = ` "\\"baseUrl\\" is required -\\"favicon\\" is required \\"title\\" is required \\"url\\" is required \\"themes\\" must be an array diff --git a/packages/docusaurus/src/server/__tests__/configValidation.test.ts b/packages/docusaurus/src/server/__tests__/configValidation.test.ts index acd4e24650..5a9645e7b2 100644 --- a/packages/docusaurus/src/server/__tests__/configValidation.test.ts +++ b/packages/docusaurus/src/server/__tests__/configValidation.test.ts @@ -12,9 +12,8 @@ import { } from '../configValidation'; import {DocusaurusConfig} from '@docusaurus/types'; -const baseConfig = { +const baseConfig: DocusaurusConfig = { baseUrl: '/', - favicon: 'some.ico', title: 'my site', url: 'https://mysite.com', }; diff --git a/packages/docusaurus/src/server/configValidation.ts b/packages/docusaurus/src/server/configValidation.ts index 08aa8dd1cc..7f181622b0 100644 --- a/packages/docusaurus/src/server/configValidation.ts +++ b/packages/docusaurus/src/server/configValidation.ts @@ -127,7 +127,7 @@ export const ConfigSchema = Joi.object({ .regex(new RegExp('/$', 'm')) .message('{{#label}} must be a string with a trailing slash.'), baseUrlIssueBanner: Joi.boolean().default(DEFAULT_CONFIG.baseUrlIssueBanner), - favicon: Joi.string().required(), + favicon: Joi.string().optional(), title: Joi.string().required(), url: SiteUrlSchema, trailingSlash: Joi.boolean(), // No default value! undefined = retrocompatible legacy behavior! diff --git a/website/docs/api/docusaurus.config.js.md b/website/docs/api/docusaurus.config.js.md index 76d023de7b..c2204357ed 100644 --- a/website/docs/api/docusaurus.config.js.md +++ b/website/docs/api/docusaurus.config.js.md @@ -24,37 +24,6 @@ module.exports = { }; ``` -### `favicon` {#favicon} - -- Type: `string` - -URL for site favicon. Example: - -```js title="docusaurus.config.js" -module.exports = { - favicon: 'https://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` {#url} - Type: `string` @@ -81,6 +50,20 @@ module.exports = { ## Optional fields {#optional-fields} +### `favicon` {#favicon} + +- Type: `string | undefined` + +Path to your site favicon + +Example, if your favicon is in `static/img/favicon.ico`: + +```js title="docusaurus.config.js" +module.exports = { + favicon: '/img/favicon.ico', +}; +``` + ### `trailingSlash` {#trailing-slash} - Type: `boolean | undefined`