mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-07 05:12:31 +02:00
chore(v2): fix remarkplugin unnecessary extra divs
This commit is contained in:
parent
9862a6821a
commit
e15ab76542
1 changed files with 31 additions and 15 deletions
|
@ -23,11 +23,17 @@ const convertNpmToYarn = npmCode => {
|
||||||
const transformNode = node => {
|
const transformNode = node => {
|
||||||
const npmCode = node.value;
|
const npmCode = node.value;
|
||||||
const yarnCode = convertNpmToYarn(node.value);
|
const yarnCode = convertNpmToYarn(node.value);
|
||||||
node.children = [
|
return [
|
||||||
{
|
{
|
||||||
type: 'jsx',
|
type: 'jsx',
|
||||||
value:
|
value:
|
||||||
"<Tabs\n defaultValue=\"npm\"\n values={[\n { label: 'npm', value: 'npm', },\n { label: 'yarn', value: 'yarn', },\n ]\n}>\n<TabItem value=\"npm\">",
|
`<Tabs defaultValue="npm" ` +
|
||||||
|
`values={[
|
||||||
|
{ label: 'npm', value: 'npm', },
|
||||||
|
{ label: 'yarn', value: 'yarn', },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<TabItem value="npm">`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: node.type,
|
type: node.type,
|
||||||
|
@ -48,28 +54,38 @@ const transformNode = node => {
|
||||||
value: '</TabItem>\n</Tabs>',
|
value: '</TabItem>\n</Tabs>',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
node.type = 'element';
|
};
|
||||||
delete node.lang;
|
|
||||||
delete node.meta;
|
const matchNode = node => node.type === 'code' && node.meta === 'npm2yarn';
|
||||||
delete node.value;
|
const nodeForImport = {
|
||||||
|
type: 'import',
|
||||||
|
value:
|
||||||
|
"import Tabs from '@theme/Tabs';\nimport TabItem from '@theme/TabItem';",
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = () => {
|
module.exports = () => {
|
||||||
let transformed = false;
|
let transformed = false;
|
||||||
const transformer = node => {
|
const transformer = node => {
|
||||||
if (node.type === 'code' && node.meta === 'npm2yarn') {
|
if (matchNode(node)) {
|
||||||
transformNode(node);
|
|
||||||
transformed = true;
|
transformed = true;
|
||||||
} else if (Array.isArray(node.children)) {
|
return transformNode(node);
|
||||||
node.children.forEach(transformer);
|
}
|
||||||
|
if (Array.isArray(node.children)) {
|
||||||
|
let index = 0;
|
||||||
|
while (index < node.children.length) {
|
||||||
|
const result = transformer(node.children[index]);
|
||||||
|
if (result) {
|
||||||
|
node.children.splice(index, 1, ...result);
|
||||||
|
index += result.length;
|
||||||
|
} else {
|
||||||
|
index += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (node.type === 'root' && transformed) {
|
if (node.type === 'root' && transformed) {
|
||||||
node.children.unshift({
|
node.children.unshift(nodeForImport);
|
||||||
type: 'import',
|
|
||||||
value:
|
|
||||||
"import Tabs from '@theme/Tabs';\nimport TabItem from '@theme/TabItem';",
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
};
|
};
|
||||||
return transformer;
|
return transformer;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue