Skip to content

Commit

Permalink
fix(v2): use remark-admonitions separately in each plugin instead of …
Browse files Browse the repository at this point in the history
…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 <tay.yang.shun@gmail.com>
  • Loading branch information
lex111 and yangshun authored Apr 24, 2020
1 parent 3c27e23 commit 9e1f816
Show file tree
Hide file tree
Showing 11 changed files with 75 additions and 37 deletions.
3 changes: 2 additions & 1 deletion packages/docusaurus-plugin-content-blog/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
19 changes: 19 additions & 0 deletions packages/docusaurus-plugin-content-blog/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -45,6 +46,7 @@ const DEFAULT_OPTIONS: PluginOptions = {
rehypePlugins: [],
editUrl: undefined,
truncateMarker: /<!--\s*(truncate)\s*-->/, // Regex.
admonitions: {},
};

function assertFeedTypes(val: any): asserts val is FeedType {
Expand Down Expand Up @@ -72,6 +74,13 @@ export default function pluginContentBlog(
opts: Partial<PluginOptions>,
): Plugin<BlogContent | null> {
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(
Expand All @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion packages/docusaurus-plugin-content-blog/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -40,6 +40,7 @@ export interface PluginOptions {
language?: string;
};
editUrl?: string;
admonitions: any;
}

export interface BlogTags {
Expand Down
13 changes: 13 additions & 0 deletions packages/docusaurus-plugin-content-blog/types.d.ts
Original file line number Diff line number Diff line change
@@ -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;
}
1 change: 1 addition & 0 deletions packages/docusaurus-plugin-content-docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
19 changes: 19 additions & 0 deletions packages/docusaurus-plugin-content-docs/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -57,13 +58,21 @@ const DEFAULT_OPTIONS: PluginOptions = {
rehypePlugins: [],
showLastUpdateTime: false,
showLastUpdateAuthor: false,
admonitions: {},
};

export default function pluginContentDocs(
context: LoadContext,
opts: Partial<PluginOptions>,
): Plugin<LoadedContent | null> {
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 = {};
Expand Down Expand Up @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion packages/docusaurus-plugin-content-docs/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down
13 changes: 13 additions & 0 deletions packages/docusaurus-plugin-content-docs/types.d.ts
Original file line number Diff line number Diff line change
@@ -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;
}
3 changes: 1 addition & 2 deletions packages/docusaurus-preset-classic/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
34 changes: 3 additions & 31 deletions packages/docusaurus-preset-classic/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,49 +5,21 @@
* 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],
// Don't add this if algolia config is not defined.
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',
Expand Down
1 change: 0 additions & 1 deletion packages/docusaurus-theme-classic/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'),
];
Expand Down

0 comments on commit 9e1f816

Please sign in to comment.