Skip to content

Commit 9ce2fa9

Browse files
committed
Add rehype-twoslash
1 parent f8afb57 commit 9ce2fa9

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

generate/pipeline/article.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import assert from 'node:assert/strict'
66
import fs from 'node:fs/promises'
7+
import {fileURLToPath} from 'node:url'
78
import {unified} from 'unified'
89
import remarkParse from 'remark-parse'
910
import remarkGfm from 'remark-gfm'
@@ -15,6 +16,8 @@ import rehypeAutolinkHeadings from 'rehype-autolink-headings'
1516
import sourceGitignore from '@wooorm/starry-night/source.gitignore'
1617
import {common} from '@wooorm/starry-night'
1718
import rehypeStarryNight from 'rehype-starry-night'
19+
import rehypeTwoslash from 'rehype-twoslash'
20+
import typescript from 'typescript'
1821
import rehypeLink from '../plugin/rehype-link.js'
1922
import rehypeRewriteUrls from '../plugin/rehype-rewrite-urls.js'
2023
import rehypeAbbreviate from '../plugin/rehype-abbreviate.js'
@@ -26,6 +29,28 @@ const packageJson = JSON.parse(packageValue)
2629
const origin = packageJson.homepage
2730
assert(typeof origin === 'string')
2831

32+
const configPath = typescript.findConfigFile(
33+
fileURLToPath(import.meta.url),
34+
typescript.sys.fileExists,
35+
'tsconfig.json'
36+
)
37+
assert(configPath)
38+
const commandLine = typescript.getParsedCommandLineOfConfigFile(
39+
configPath,
40+
undefined,
41+
{
42+
fileExists: typescript.sys.fileExists,
43+
getCurrentDirectory: typescript.sys.getCurrentDirectory,
44+
onUnRecoverableConfigFileDiagnostic(x) {
45+
console.warn('Unrecoverable diagnostic', x)
46+
},
47+
readDirectory: typescript.sys.readDirectory,
48+
readFile: typescript.sys.readFile,
49+
useCaseSensitiveFileNames: typescript.sys.useCaseSensitiveFileNames
50+
}
51+
)
52+
assert(commandLine)
53+
2954
export const article = unified()
3055
.use(remarkParse)
3156
.use(remarkGfm)
@@ -36,6 +61,7 @@ export const article = unified()
3661
grammars: [...common, sourceGitignore],
3762
plainText: ['txt']
3863
})
64+
.use(rehypeTwoslash, {twoslash: {compilerOptions: commandLine.options}})
3965
.use(rehypeSlug)
4066
.use(rehypeAutolinkHeadings, {
4167
behavior: 'prepend',

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
"rehype-slug": "^6.0.0",
5353
"rehype-starry-night": "^2.0.0",
5454
"rehype-stringify": "^10.0.0",
55+
"rehype-twoslash": "^1.0.0",
5556
"remark-cli": "^12.0.0",
5657
"remark-frontmatter": "^5.0.0",
5758
"remark-gemoji": "^8.0.0",

0 commit comments

Comments
 (0)