mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-10 15:47:23 +02:00
feat(v2): truncate marker as blog option (#1706)
* feat(v2): allowed more as truncate marker * feat(v2): blog support truncateMarker option * feat(v2): blog support truncateMarker option
This commit is contained in:
parent
e38373ac9b
commit
d17a1ea9e3
3 changed files with 16 additions and 6 deletions
|
@ -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
|
||||
|
|
|
@ -31,6 +31,7 @@ const DEFAULT_OPTIONS = {
|
|||
blogTagsPostsComponent: '@theme/BlogTagsPostsPage',
|
||||
remarkPlugins: [],
|
||||
rehypePlugins: [],
|
||||
truncateMarker: /<!--\s*(truncate)\s*-->/, // 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),
|
||||
},
|
||||
|
|
|
@ -5,20 +5,25 @@
|
|||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
const {parseQuery} = require('loader-utils');
|
||||
|
||||
const TRUNCATE_MARKER = /<!--\s*truncate\s*-->/;
|
||||
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);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue