The Devbook Docusaurus code video plugin allows you to add a video to a code block in your docs and highlight code lines as the video plays.
- YouTube
Do you want more video sources? Please open an issue!
Install the package:
npm install @devbookhq/docusaurus-code-video-plugin
or
yarn add @devbookhq/docusaurus-code-video-plugin
Add plugin to docusaurus.config.js
:
module.exports = {
plugins: ['@devbookhq/docusaurus-code-video-plugin'],
}
Add youtubeID
attribute to a code block:
```js youtubeID=MnrJzXM7a6o
function main() {
console.log(1);
console.log(2);
}
```
Usage with CodeBlock
(.mdx
, .tsx
, .jsx
)
Add the youtubeID
prop to the component:
import CodeBlock from '@theme/CodeBlock';
import MyComponentSource from '!!raw-loader!./myComponent';
<CodeBlock
youtubeID="MnrJzXM7a6o"
language="jsx"
>
{MyComponentSource}
</CodeBlock>
Pass the YouTube video ID, not the full URL. The youtubeID
is part of the regular Youtube video URL - https://www.youtube.com/watch?v=[youtubeID]
, or the embed video URL - https://www.youtube.com/embed/[youtubeID]
.
The plugin allows you to highlight different code lines (and ranges of code lines) at different timestamps.
Add the highlight attributes to the code block in Markdown:
```js youtubeID=MnrJzXM7a6o 0:10-1:00=(1) 1:10-1:20=(1,2-4)
function main() {
console.log(1);
console.log(2);
}
```
Or if you are using the CodeBlock
component add the highlight attributes as props:
import CodeBlock from '@theme/CodeBlock';
import MyComponentSource from '!!raw-loader!./myComponent';
<CodeBlock
language="jsx"
youtubeID="MnrJzXM7a6o"
{...{ ["0:10-1:00"]: "(1)", ["1:10-1:20"]: "(1,2-4)" }}
>
{MyComponentSource}
</CodeBlock>
Both examples above will highlight a code line number 1
from the time 0:10
until 1:00
. Then highlights code lines 1
, 2
, 3
, and 4
from the time 1:10
to the time 1:20
.
The code line highlights are in the format videoStartTime-videoEndTime=(codeLinesRange)
.
The start and the end timestamps are in the H:M:S
format. Hours are optional (M:S
).
The highlight range format is the same as in the Docusaurus code blocks, just with the
()
parentheses instead of the{}
parentheses.
You can change the code lines' highlight style by customizing the docusaurus-highlight-code-line
class - the same way you would change the default Docusaurus highlight style.