From 4760e1225bef5fe77dd66ab0cab62c0e2fff9278 Mon Sep 17 00:00:00 2001 From: Fanny Date: Thu, 15 Oct 2020 14:30:12 -0300 Subject: [PATCH] feat(v2): Extract npm2yarn plugin (#3469) * chore(v2): add dependency * test(v2): Add npm2yarn tests * feat(v2): Move npm2yarn to a new remark plugin * remark npm2yarn plugin => ready to release Co-authored-by: slorber --- packages/docusaurus-mdx-loader/package.json | 1 + .../README.md | 53 +++++++++++++ .../example.png | Bin 0 -> 18970 bytes .../package.json | 25 ++++++ .../__snapshots__/index.test.js.snap | 74 ++++++++++++++++++ .../src/__tests__/fixtures/installation.md | 3 + .../src/__tests__/fixtures/plugin.md | 7 ++ .../fixtures/syntax-not-properly-set.md | 11 +++ .../src/__tests__/index.test.js | 53 +++++++++++++ .../src/index.js | 2 +- website/docusaurus.config.js | 4 +- website/package.json | 1 + yarn.lock | 2 +- 13 files changed, 232 insertions(+), 4 deletions(-) create mode 100644 packages/docusaurus-remark-plugin-npm2yarn/README.md create mode 100644 packages/docusaurus-remark-plugin-npm2yarn/example.png create mode 100644 packages/docusaurus-remark-plugin-npm2yarn/package.json create mode 100644 packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/__snapshots__/index.test.js.snap create mode 100644 packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/installation.md create mode 100644 packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/plugin.md create mode 100644 packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/syntax-not-properly-set.md create mode 100644 packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.js rename website/src/plugins/remark-npm2yarn.js => packages/docusaurus-remark-plugin-npm2yarn/src/index.js (96%) diff --git a/packages/docusaurus-mdx-loader/package.json b/packages/docusaurus-mdx-loader/package.json index 5510268a9e..d0cb4153a9 100644 --- a/packages/docusaurus-mdx-loader/package.json +++ b/packages/docusaurus-mdx-loader/package.json @@ -17,6 +17,7 @@ "@docusaurus/utils": "2.0.0-alpha.65", "@mdx-js/mdx": "^1.5.8", "@mdx-js/react": "^1.5.8", + "npm-to-yarn": "^1.0.0-2", "escape-html": "^1.0.3", "file-loader": "^6.0.0", "fs-extra": "^8.1.0", diff --git a/packages/docusaurus-remark-plugin-npm2yarn/README.md b/packages/docusaurus-remark-plugin-npm2yarn/README.md new file mode 100644 index 0000000000..b93d73da21 --- /dev/null +++ b/packages/docusaurus-remark-plugin-npm2yarn/README.md @@ -0,0 +1,53 @@ +# Remark plugin npm2yarn + +## Motivation: + +Transforms npm bash command code blocks to Docusaurus tabs: + +The following (remove the `//`): + +````bash +// ```bash npm2yarn +// npm run build +// ``` +```` + +Becomes: + +![npm2yarn tabs example](./example.png) + +**Note**: it only works when used with Docusaurus themes that have the `Tabs` and `TabItems` components. + +## Install + +```bash +npm install @docusaurus/remark-plugin-npm2yarn` +``` + +It is a Remark plugin, **not a Docusaurus plugin**, so you have to install it as a Remark plugin in the config of your Docusaurus plugins. + +```js +module.exports = { + presets: [ + [ + '@docusaurus/preset-classic', + { + docs: { + // ... + remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')], + }, + blog: { + // ... + remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')], + }, + pages: { + // ... + remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')], + }, + // ... + }, + ], + ], + // ... +}; +``` diff --git a/packages/docusaurus-remark-plugin-npm2yarn/example.png b/packages/docusaurus-remark-plugin-npm2yarn/example.png new file mode 100644 index 0000000000000000000000000000000000000000..a007c1ddd76130d2bea8fedc1d71d65c4c1df7ef GIT binary patch literal 18970 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 literal 0 HcmV?d00001 diff --git a/packages/docusaurus-remark-plugin-npm2yarn/package.json b/packages/docusaurus-remark-plugin-npm2yarn/package.json new file mode 100644 index 0000000000..65860934dd --- /dev/null +++ b/packages/docusaurus-remark-plugin-npm2yarn/package.json @@ -0,0 +1,25 @@ +{ + "name": "@docusaurus/remark-plugin-npm2yarn", + "version": "2.0.0-alpha.65", + "description": "Remark plugin for convert npm commands to yarn as tabs", + "main": "src/index.js", + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "dependencies": { + "npm-to-yarn": "^1.0.1" + }, + "devDependencies": { + "remark": "^12.0.0", + "remark-mdx": "^1.5.8", + "to-vfile": "^6.0.0" + }, + "peerDependencies": { + "react": "^16.8.4", + "react-dom": "^16.8.4" + }, + "engines": { + "node": ">=10.15.1" + } + } diff --git a/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/__snapshots__/index.test.js.snap b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/__snapshots__/index.test.js.snap new file mode 100644 index 0000000000..735aeb451f --- /dev/null +++ b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/__snapshots__/index.test.js.snap @@ -0,0 +1,74 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`npm2yarn plugin test: installation file 1`] = ` +"import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +\`\`\`bash + $ npm install --global docusaurus +\`\`\` + + + + +\`\`\`bash + $ yarn add --global docusaurus +\`\`\` + + + +" +`; + +exports[`npm2yarn plugin test: language was not setted 1`] = ` +"\`\`\`npm2yarn +npm install --save docusaurus-plugin-name +\`\`\` + +\`\`\`bash +npm install --save docusaurus-plugin-name +\`\`\` + +\`\`\`shell +npm install --save docusaurus-plugin-name +\`\`\` +" +`; + +exports[`npm2yarn plugin test: plugin file 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. + + + + +\`\`\`bash +npm install --save docusaurus-plugin-name +\`\`\` + + + + +\`\`\`bash +yarn add docusaurus-plugin-name +\`\`\` + + + +" +`; diff --git a/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/installation.md b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/installation.md new file mode 100644 index 0000000000..68ce57629e --- /dev/null +++ b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/installation.md @@ -0,0 +1,3 @@ +```bash npm2yarn + $ npm install --global docusaurus +``` diff --git a/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/plugin.md b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/plugin.md new file mode 100644 index 0000000000..903c335d29 --- /dev/null +++ b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/plugin.md @@ -0,0 +1,7 @@ +## Installing a plugin + +A plugin is usually a npm package, so you install them like other npm packages using npm. + +```bash npm2yarn +npm install --save docusaurus-plugin-name +``` diff --git a/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/syntax-not-properly-set.md b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/syntax-not-properly-set.md new file mode 100644 index 0000000000..c4bebceed9 --- /dev/null +++ b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/fixtures/syntax-not-properly-set.md @@ -0,0 +1,11 @@ +```npm2yarn +npm install --save docusaurus-plugin-name +``` + +```bash +npm install --save docusaurus-plugin-name +``` + +```shell +npm install --save docusaurus-plugin-name +``` diff --git a/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.js b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.js new file mode 100644 index 0000000000..d504331c52 --- /dev/null +++ b/packages/docusaurus-remark-plugin-npm2yarn/src/__tests__/index.test.js @@ -0,0 +1,53 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* eslint-disable no-param-reassign */ + +import remark from 'remark'; +import npm2yarn from '../index'; +import vfile from 'to-vfile'; +import {join, relative} from 'path'; +import mdx from 'remark-mdx'; + +const staticDir = `./${relative(process.cwd(), join(__dirname, 'fixtures'))}`; + +const processFixture = async (name, options) => { + const path = join(__dirname, 'fixtures', `${name}.md`); + const file = await vfile.read(path); + const result = await remark() + .use(mdx) + .use(npm2yarn, {...options, filePath: path}) + .process(file); + + return result.toString(); +}; + +describe('npm2yarn plugin', () => { + test('test: installation file', async () => { + const result = await processFixture('installation', { + staticDir, + }); + + expect(result).toMatchSnapshot(); + }); + + test('test: plugin file', async () => { + const result = await processFixture('plugin', { + staticDir, + }); + + expect(result).toMatchSnapshot(); + }); + + test('test: language was not setted', async () => { + const result = await processFixture('syntax-not-properly-set', { + staticDir, + }); + + expect(result).toMatchSnapshot(); + }); +}); diff --git a/website/src/plugins/remark-npm2yarn.js b/packages/docusaurus-remark-plugin-npm2yarn/src/index.js similarity index 96% rename from website/src/plugins/remark-npm2yarn.js rename to packages/docusaurus-remark-plugin-npm2yarn/src/index.js index 02118ec6d4..3fb7dc6627 100644 --- a/website/src/plugins/remark-npm2yarn.js +++ b/packages/docusaurus-remark-plugin-npm2yarn/src/index.js @@ -17,7 +17,7 @@ const transformNode = (node) => { { type: 'jsx', value: - `