Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(npm-to-yarn): add support for PnPm and custom converters #8690

Merged
merged 10 commits into from
Feb 24, 2023
2 changes: 1 addition & 1 deletion packages/docusaurus-remark-plugin-npm2yarn/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
},
"license": "MIT",
"dependencies": {
"npm-to-yarn": "^1.2.1",
"npm-to-yarn": "^2.0.0",
"tslib": "^2.4.1",
"unist-util-visit": "^2.0.3"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,62 @@ exports[`npm2yarn plugin does not re-import tabs components when already importe
import TabItem from '@theme/TabItem';

<Tabs>

<TabItem value="npm">

\`\`\`bash
$ npm install --global docusaurus
\`\`\`

</TabItem>

<TabItem value="yarn" label="Yarn">

\`\`\`bash
$ yarn add --global docusaurus
$ yarn global add docusaurus
\`\`\`

</TabItem>

<TabItem value="pnpm" label="pnpm">

\`\`\`bash
$ pnpm add --global docusaurus
\`\`\`

</TabItem>

</Tabs>
"
`;

exports[`npm2yarn plugin does not re-import tabs components when already imported below 1`] = `
"<Tabs>

<TabItem value="npm">

\`\`\`bash
$ npm install --global docusaurus
\`\`\`

</TabItem>

<TabItem value="yarn" label="Yarn">

\`\`\`bash
$ yarn add --global docusaurus
$ yarn global add docusaurus
\`\`\`

</TabItem>

<TabItem value="pnpm" label="pnpm">

\`\`\`bash
$ pnpm add --global docusaurus
\`\`\`

</TabItem>

</Tabs>

import Tabs from '@theme/Tabs';
Expand All @@ -63,25 +85,126 @@ npm install --save docusaurus-plugin-name
"
`;

exports[`npm2yarn plugin work with custom converter 1`] = `
"import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

## Installing a plugin

A plugin is usually a npm package, so you install them like other npm packages using npm.

<Tabs>

<TabItem value="npm">

\`\`\`bash
npm install --save docusaurus-plugin-name
\`\`\`

</TabItem>

<TabItem value="Turbo">

\`\`\`bash
turbo install --save docusaurus-plugin-name
\`\`\`

</TabItem>

</Tabs>
"
`;

exports[`npm2yarn plugin work with pnpm converter 1`] = `
"import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

## Installing a plugin

A plugin is usually a npm package, so you install them like other npm packages using npm.

<Tabs>

<TabItem value="npm">

\`\`\`bash
npm install --save docusaurus-plugin-name
\`\`\`

</TabItem>

<TabItem value="pnpm" label="pnpm">

\`\`\`bash
pnpm add docusaurus-plugin-name
\`\`\`

</TabItem>

</Tabs>
"
`;

exports[`npm2yarn plugin work with yarn converter 1`] = `
"import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

## Installing a plugin

A plugin is usually a npm package, so you install them like other npm packages using npm.

<Tabs>

<TabItem value="npm">

\`\`\`bash
npm install --save docusaurus-plugin-name
\`\`\`

</TabItem>

<TabItem value="yarn" label="Yarn">

\`\`\`bash
yarn add docusaurus-plugin-name
\`\`\`

</TabItem>

</Tabs>
"
`;

exports[`npm2yarn plugin works on installation file 1`] = `
"import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

<Tabs>

<TabItem value="npm">

\`\`\`bash
$ npm install --global docusaurus
\`\`\`

</TabItem>

<TabItem value="yarn" label="Yarn">

\`\`\`bash
$ yarn add --global docusaurus
$ yarn global add docusaurus
\`\`\`

</TabItem>

<TabItem value="pnpm" label="pnpm">

\`\`\`bash
$ pnpm add --global docusaurus
\`\`\`

</TabItem>

</Tabs>
"
`;
Expand All @@ -95,20 +218,31 @@ import TabItem from '@theme/TabItem';
A plugin is usually a npm package, so you install them like other npm packages using npm.

<Tabs>

<TabItem value="npm">

\`\`\`bash
npm install --save docusaurus-plugin-name
\`\`\`

</TabItem>

<TabItem value="yarn" label="Yarn">

\`\`\`bash
yarn add docusaurus-plugin-name
\`\`\`

</TabItem>

<TabItem value="pnpm" label="pnpm">

\`\`\`bash
pnpm add docusaurus-plugin-name
\`\`\`

</TabItem>

</Tabs>
"
`;
Expand All @@ -122,20 +256,31 @@ import TabItem from '@theme/TabItem';
A plugin is usually a npm package, so you install them like other npm packages using npm.

<Tabs groupId="npm2yarn">

<TabItem value="npm">

\`\`\`bash
npm install --save docusaurus-plugin-name
\`\`\`

</TabItem>

<TabItem value="yarn" label="Yarn">

\`\`\`bash
yarn add docusaurus-plugin-name
\`\`\`

</TabItem>

<TabItem value="pnpm" label="pnpm">

\`\`\`bash
pnpm add docusaurus-plugin-name
\`\`\`

</TabItem>

</Tabs>
"
`;
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ import mdx from 'remark-mdx';
import remark from 'remark';
import npm2yarn from '../index';

const processFixture = async (name: string, options?: {sync?: boolean}) => {
const processFixture = async (
name: string,
options?: Parameters<typeof npm2yarn>[0],
) => {
const filePath = path.join(__dirname, '__fixtures__', `${name}.md`);
const file = await vfile.read(filePath);
const result = await remark().use(mdx).use(npm2yarn, options).process(file);
Expand Down Expand Up @@ -55,4 +58,24 @@ describe('npm2yarn plugin', () => {

expect(result).toMatchSnapshot();
});

it('work with yarn converter', async () => {
const result = await processFixture('plugin', {converters: ['yarn']});

expect(result).toMatchSnapshot();
});
armano2 marked this conversation as resolved.
Show resolved Hide resolved

it('work with pnpm converter', async () => {
const result = await processFixture('plugin', {converters: ['pnpm']});

expect(result).toMatchSnapshot();
});

it('work with custom converter', async () => {
const result = await processFixture('plugin', {
converters: [['Turbo', (code) => code.replace(/npm/g, 'turbo')]],
});

expect(result).toMatchSnapshot();
});
});