Skip to content

Commit

Permalink
feat(v2): add support for sync to npm2yarn tabs
Browse files Browse the repository at this point in the history
  • Loading branch information
lex111 committed Nov 6, 2020
1 parent 5aca1d7 commit cbf2139
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
12 changes: 9 additions & 3 deletions packages/docusaurus-remark-plugin-npm2yarn/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,15 @@ module.exports = {
{
docs: {
// ...
remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')],
remarkPlugins: [[require('@docusaurus/remark-plugin-npm2yarn'), {sync: true}]],
},
blog: {
// ...
remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')],
remarkPlugins: [[require('@docusaurus/remark-plugin-npm2yarn'), {sync: true}]],
},
pages: {
// ...
remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')],
remarkPlugins: [[require('@docusaurus/remark-plugin-npm2yarn'), {sync: true}]],
},
// ...
},
Expand All @@ -51,3 +51,9 @@ module.exports = {
// ...
};
```

## Options

| Property | Type | Default | Description |
|----------|-----------|---------|---------------------------------------------------------------------------------------------------------------------------|
| `sync` | `boolean` | `false` | Syncing tab choices (yarn and npm). See https://v2.docusaurus.io/docs/markdown-features/#syncing-tab-choices for details. |
10 changes: 6 additions & 4 deletions packages/docusaurus-remark-plugin-npm2yarn/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,15 @@ const npmToYarn = require('npm-to-yarn');
// E.g. global install: 'npm i' -> 'yarn'
const convertNpmToYarn = (npmCode) => npmToYarn(npmCode, 'yarn');

const transformNode = (node) => {
const transformNode = (node, isSync) => {
const groupIdProp = isSync ? 'groupId="npm2yarn" ' : '';
const npmCode = node.value;
const yarnCode = convertNpmToYarn(node.value);
return [
{
type: 'jsx',
value:
`<Tabs defaultValue="npm" ` +
`<Tabs defaultValue="npm" ${groupIdProp}` +
`values={[
{ label: 'npm', value: 'npm', },
{ label: 'Yarn', value: 'yarn', },
Expand Down Expand Up @@ -53,12 +54,13 @@ const nodeForImport = {
"import Tabs from '@theme/Tabs';\nimport TabItem from '@theme/TabItem';",
};

module.exports = () => {
module.exports = (options = {}) => {
const {sync = false} = options;
let transformed = false;
const transformer = (node) => {
if (matchNode(node)) {
transformed = true;
return transformNode(node);
return transformNode(node, sync);
}
if (Array.isArray(node.children)) {
let index = 0;
Expand Down
4 changes: 3 additions & 1 deletion website/docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,9 @@ module.exports = {
'https://github.com/facebook/docusaurus/edit/master/website/',
showLastUpdateAuthor: true,
showLastUpdateTime: true,
remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')],
remarkPlugins: [
[require('@docusaurus/remark-plugin-npm2yarn'), {sync: true}],
],
disableVersioning: isVersioningDisabled,
lastVersion: 'current',
onlyIncludeVersions:
Expand Down

0 comments on commit cbf2139

Please sign in to comment.