Skip to content

Commit

Permalink
feat: add plugin-markdown-include
Browse files Browse the repository at this point in the history
  • Loading branch information
Mister-Hope committed Oct 24, 2024
1 parent 54b692e commit 94d7578
Show file tree
Hide file tree
Showing 8 changed files with 150 additions and 0 deletions.
55 changes: 55 additions & 0 deletions plugins/markdown/plugin-markdown-include/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"name": "@vuepress/plugin-markdown-include",
"version": "2.0.0-rc.56",
"description": "VuePress plugin - markdown include",
"keywords": [
"vuepress-plugin",
"vuepress",
"plugin",
"markdown",
"include"
],
"homepage": "https://ecosystem.vuejs.press/plugins/markdown/markdown-include.html",
"bugs": {
"url": "https://github.com/vuepress/ecosystem/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/vuepress/ecosystem.git",
"directory": "plugins/markdown/plugin-markdown-include"
},
"license": "MIT",
"author": {
"name": "Mr.Hope",
"email": "mister-hope@outlook.com",
"url": "https://mister-hope.com"
},
"type": "module",
"exports": {
".": "./lib/node/index.js",
"./figure.css": "./lib/client/styles/figure.css",
"./mark.css": "./lib/client/styles/mark.css",
"./package.json": "./package.json"
},
"main": "./lib/node/index.js",
"types": "./lib/node/index.d.ts",
"files": [
"lib"
],
"scripts": {
"build": "tsc -b tsconfig.build.json",
"bundle": "rollup -c rollup.config.ts --configPlugin esbuild",
"clean": "rimraf --glob ./lib ./*.tsbuildinfo"
},
"dependencies": {
"@mdit/plugin-include": "^0.13.1",
"@types/markdown-it": "^14.1.2",
"@vuepress/helper": "workspace:*"
},
"peerDependencies": {
"vuepress": "2.0.0-rc.18"
},
"publishConfig": {
"access": "public"
}
}
5 changes: 5 additions & 0 deletions plugins/markdown/plugin-markdown-include/rollup.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { rollupBundle } from '../../../scripts/rollup.js'

export default rollupBundle('node/index', {
external: ['@mdit/plugin-include'],
})
2 changes: 2 additions & 0 deletions plugins/markdown/plugin-markdown-include/src/node/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './markdownIncludePlugin.js'
export type * from './options.js'
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import type { IncludeEnv } from '@mdit/plugin-include'
import { include } from '@mdit/plugin-include'
import type { Plugin } from 'vuepress/core'
import type { MarkdownEnv } from 'vuepress/markdown'
import { path } from 'vuepress/utils'
import type { MarkdownIncludePluginOptions } from './options.js'

export const markdownIncludePlugin =
(options: MarkdownIncludePluginOptions): Plugin =>
(app) => {
const source = app.dir.source()

return {
name: '@vuepress/plugin-markdown-include',

extendsMarkdown: (md) => {
md.use(include, {
currentPath: (env: MarkdownEnv) => env.filePath,
...options,
})
},
extendsPage: (page): void => {
const { markdownEnv, frontmatter, filePathRelative } = page
const { includedFiles = [] } = markdownEnv as IncludeEnv

// mark included files as page deps
page.deps.push(...includedFiles)

// add included files as git deps
;((frontmatter.gitInclude as string[] | undefined) ??= []).push(
...includedFiles.map((file) =>
path.relative(
path.resolve(source, filePathRelative, '..'),
path.resolve(source, filePathRelative, file),
),
),
)
},
}
}
6 changes: 6 additions & 0 deletions plugins/markdown/plugin-markdown-include/src/node/options.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import type { MarkdownItIncludeOptions } from '@mdit/plugin-include'

export type MarkdownIncludePluginOptions = Omit<
MarkdownItIncludeOptions,
'currentPath'
>
9 changes: 9 additions & 0 deletions plugins/markdown/plugin-markdown-include/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../../tsconfig.build.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./lib"
},
"include": ["./src"],
"references": [{ "path": "../../../tools/helper/tsconfig.build.json" }]
}
30 changes: 30 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@
"path": "./plugins/markdown/plugin-markdown-hint/tsconfig.build.json"
},
{ "path": "./plugins/markdown/plugin-markdown-image/tsconfig.build.json" },
{
"path": "./plugins/markdown/plugin-markdown-include/tsconfig.build.json"
},
{ "path": "./plugins/markdown/plugin-markdown-math/tsconfig.build.json" },
{
"path": "./plugins/markdown/plugin-markdown-stylize/tsconfig.build.json"
Expand Down

0 comments on commit 94d7578

Please sign in to comment.