-
Notifications
You must be signed in to change notification settings - Fork 7.6k
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
fix(docs): prevent mdx from transforming -- into – for commands #7622
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Size changes📦 Next.js Bundle Analysis for react-devThis analysis was generated by the Next.js Bundle Analysis action. 🤖 This PR introduced no changes to the JavaScript bundle! 🙌 |
@@ -33,7 +33,7 @@ The first step is to install a build tool like `vite`, `parcel`, or `rsbuild`. T | |||
[Vite](https://vite.dev/) is a build tool that aims to provide a faster and leaner development experience for modern web projects. | |||
|
|||
<TerminalBlock> | |||
npm create vite@latest my-app -- --template react | |||
{`npm create vite@latest my-app -- --template react`} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I dont think we should do this (making it string) We might want to check if this was working before and fix the root cause in TerminalBlock component. This component is in a lot of places.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your comment, you are right to ask about the root cause and implications of this component being used in a lot of places so I've done more research into this.
not a bug but a feature ?
Actually it seems to be a feature of a markdown plugin that's causing this.
The plugin name is "retext-smartypants" and is implementing the smartypants syntax which transforms :
Dashes (“--” and “---”) into en- and em-dash entities
source (smartypant syntax docs) : daringfireball.net/projects/smartypants
The text inside the component gets treated as normal text because it's not put between {` `} or {" "} so it modifies the string before it gets to the TerminalBlock component.
Disabling this feature of the plugin might not be an option as this feature seem to be used in normal text across the docs.
Fast and Simple Solution
Putting the code between {` `} or {" "} makes the component receive the raw string.
This change doesn't need to be done everywhere, only when needed like here.
Using {` `} or {" "} or {' '} is something common in React's JSX syntax (the docs are written in MDX which is based on JSX) used for making sure certain characters are escaped when used as childrens of a component or html tag.
Alternative solution
The other alternative is to stop using the component directly but rather use markdown code blocks :
```bash
```
and maybe configure mdx to replace every code block with the TerminalBlock component. But this can require a lot more effort and impact many other pages.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tldr :
- root cause doesn't seem to be the TerminalBlock component but the retext-smartypants markdown plugin which transforms any text
- this feature of the plugin seems to be used across the docs and disabling it doesn't seem to be an option
- possibles solutions are
- using curly braces (common in React) to escape characters
- never using a React component for commands and using basic markdown codeblocks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah the fix makes sense, we can fix it in terminal block if needed later
Co-authored-by: elitalpa <[email protected]>
Thanks, merged this into #7624. If you have a chance, it would be nice to audit all of the other usages to see if they have issues. |
* [Blog + Docs] Updates from feedback * Merge in changes from #7618 Co-authored-by: Mark Erikson <[email protected]> * Say the words "Vite", "Parcel", and "Rsbuild" * Tweaks from feedback * re-apply #7615 * merge in #7622 Co-authored-by: elitalpa <[email protected]> --------- Co-authored-by: Mark Erikson <[email protected]> Co-authored-by: elitalpa <[email protected]>
From what I noticed, other commands are not using the TerminalBlock component but a markdown code block like : So this explains why there wasn't an issue like this previously. Or -D is used instead of --save-dev : ✅ Checked all the other usages, there seems to be no issue. |
Overview
Apparently any text in markdown gets processed and double dashes transformed.
If a command contains
--
and we want it to be treated as a string, it should be put between {` and `} or between {" and "}.Fixes #7616