diff --git a/CHANGELOG-2.x.md b/CHANGELOG-2.x.md index 48de207165..f53367bb2c 100644 --- a/CHANGELOG-2.x.md +++ b/CHANGELOG-2.x.md @@ -2,6 +2,7 @@ ## Unreleased +- Add `truncateMarker` option to blog plugin, support string or regex. - Webpack `optimization.removeAvailableModules` is now disabled for performance gain. See https://github.com/webpack/webpack/releases/tag/v4.38.0 for more context. ## 2.0.0-alpha.24 diff --git a/packages/docusaurus-plugin-content-blog/src/index.js b/packages/docusaurus-plugin-content-blog/src/index.js index 7d8b867ecc..13433dbb09 100644 --- a/packages/docusaurus-plugin-content-blog/src/index.js +++ b/packages/docusaurus-plugin-content-blog/src/index.js @@ -31,6 +31,7 @@ const DEFAULT_OPTIONS = { blogTagsPostsComponent: '@theme/BlogTagsPostsPage', remarkPlugins: [], rehypePlugins: [], + truncateMarker: //, // string or regex }; module.exports = function(context, opts) { @@ -340,7 +341,7 @@ module.exports = function(context, opts) { }, configureWebpack(config, isServer, {getBabelLoader, getCacheLoader}) { - const {rehypePlugins, remarkPlugins} = options; + const {rehypePlugins, remarkPlugins, truncateMarker} = options; return { module: { rules: [ @@ -359,6 +360,9 @@ module.exports = function(context, opts) { }, { loader: path.resolve(__dirname, './markdownLoader.js'), + options: { + truncateMarker, + }, }, ].filter(Boolean), }, diff --git a/packages/docusaurus-plugin-content-blog/src/markdownLoader.js b/packages/docusaurus-plugin-content-blog/src/markdownLoader.js index e7b7577d5f..ac530f33cf 100644 --- a/packages/docusaurus-plugin-content-blog/src/markdownLoader.js +++ b/packages/docusaurus-plugin-content-blog/src/markdownLoader.js @@ -5,20 +5,25 @@ * LICENSE file in the root directory of this source tree. */ -const {parseQuery} = require('loader-utils'); - -const TRUNCATE_MARKER = //; +const {parseQuery, getOptions} = require('loader-utils'); module.exports = async function(fileString) { const callback = this.async(); + const {truncateMarker} = getOptions(this); + let finalContent = fileString; // Truncate content if requested (e.g: file.md?truncated=true) const {truncated} = this.resourceQuery && parseQuery(this.resourceQuery); - if (truncated && TRUNCATE_MARKER.test(fileString)) { + if ( + truncated && + (typeof truncateMarker === 'string' + ? fileString.includes(truncateMarker) + : truncateMarker.test(fileString)) + ) { // eslint-disable-next-line - finalContent = fileString.split(TRUNCATE_MARKER)[0]; + finalContent = fileString.split(truncateMarker)[0]; } return callback(null, finalContent); };