vuejs / vitepress

Vite & Vue powered static site generator.
https://vitepress.dev
MIT License
13.11k stars 2.11k forks source link

@include markdown and code files from an arbitrary public URL #3349

Open hkong-mitre opened 11 months ago

hkong-mitre commented 11 months ago

Is your feature request related to a problem? Please describe.

My project spans several repositories under a single GitHub user. I'm building a vitepress project (which is in its own repository) for documentation and API reference for all my repositories because they are all related to each other. I like to include Markdown and code snippets from each of the repositories.

I've tried this for including files from my vitepress repository, like this

<!--@include: ./setup.md-->

and it works nicely, but

<!--@include: https://github.com/CVEProject/cvelistV5/blob/main/README.md#reporting-issues -->

does not work.

It would be very helpful to be able to include arbitrary markdown and code into my vitepress project. Is there a way to do this?

Describe the solution you'd like

It would be very helpful to be able to include arbitrary markdown and code into my vitepress project.

Sections from a Markdown file:

<!--@include: https://github.com/CVEProject/cvelistV5/blob/main/README.md#reporting-issues -->

Lines from a JSON (or any source code) file:

<!--@include:  https://github.com/CVEProject/cvelistV5/blob/main/cves/1999/0xxx/CVE-1999-0001.json{123,131} -->

Is there a way to do this?

Describe alternatives you've considered

One possible alternative to doing it in vitepress' markdown extension is to write a Vue component that reads in the file and displays that, but having it as a feature of vitepress so others can use it would be more useful to the vitepress community.

Additional context

I think this feature would be useful for writing Guides and API References, but also other documentation (e.g., a full tutorial for using Vue and vitepress in a Docker container, in a section for how to set up the development environment) where it would be even more important so that the doc is always up-to-date with its dependent projects.

Validations

arthurfiorette commented 5 months ago

Hey @brc-dd, how's going?

Is there a way to define documentation across multiple packages in multiple github repositories, while having a single repository for documentation, but keep each package's documentation in their own repo?

This PR might solve this use case, but I'm not sure...

brc-dd commented 5 months ago

Is there a way to define documentation across multiple packages in multiple github repositories, while having a single repository for documentation, but keep each package's documentation in their own repo?

You probably can use git submodules + rewrites for that. I don't think this will help with that because with this you'll need to create a bunch of md files in your docs repo with just an @include: directive.

clabnet commented 5 months ago

@brc-dd Very interesting. But how can I link a file on my repo ?
Using this syntax the file is not included :o(

:::code-group
```bash [Dockerfile]
<!-- @include: https://dev.azure.com/xxxxxxxxxxxx/_git/horizon-fe?path=/Dockerfile -->
davestewart commented 2 months ago

I'm looking for something similar.