.json` and add your plugin to **the end of** proper list.
13 |
14 | If you believe you are building a powerful theme or plugin that can be list in multiple categories, you can add theme in multiple places.
15 |
16 |
17 | These contents should be included in your PR body
18 |
19 | - [x] My work is open source and licensed under MIT or Apache-2.0.
20 | - [x] My work is a plugin or theme for VuePress 2, or tools related with VuePress 2.
21 | - [x] My work is workable with latest VuePress 2 version now, and I will keep supporting later VuePress 2 versions. I promise if I abandon my project, I will open another PR to remove it.
22 |
23 |
24 |
25 | For more details, see [Contributing Guide](https://marketplace.vuejs.press/reference/contributing.html)
26 |
27 | ## Requesting vuejs.press domain
28 |
29 | You are free to request a `vuejs.press` subdomain for your plugin or theme.
30 |
31 | You can apply a `vuejs.press` subdomain as long as you agree with the following rules:
32 |
33 | 1. Your work should be **open source** and licensed under MIT or Apache-2.0.
34 | 1. Your work should be plugin or theme for VuePress 2, or tools related with VuePress 2.
35 | 1. Your work should be workable with **latest VuePress 2 version** unless the latest VuePress 2 version **was released less than 30 days ago**.
36 | 1. Only documentation content is allowed at your subdomain. **No other content** is allowed, including any **political, religious, or other controversial content**.
37 |
38 | You should add a new line in `config/vuejs.press.zone`, and we will sync that file with DNS provider manually.
39 |
40 |
41 | These contents should be included in your PR body
42 |
43 | - [x] My work is open source and licensed under MIT or Apache-2.0.
44 | - [x] My work is a plugin or theme for VuePress 2, or tools related with VuePress 2.
45 | - [x] My work is workable with latest VuePress 2 version now, and I will keep supporting later VuePress 2 versions. I promise if I abandon my project, I will open another PR to remove it.
46 | - [x] I promise only documentation content is served at subdomain I apply to.
47 |
48 |
49 |
50 | If you need algolia docsearch, you should modify `config/crawler.config` to add your plugin of theme.
51 |
52 | For details, see [Contributing Guide](https://marketplace.vuejs.press/reference/contributing.html)
53 |
54 | ## License
55 |
56 |
57 |
58 |
59 |
61 |
62 |
63 |
64 | To the extent possible under law,
65 |
67 | Mister-Hope
68 | has waived all copyright and related or neighboring rights to
69 | VuePress MarketPlace.
70 | This work is published from:
71 |
73 | China Mainland.
74 |
75 |
--------------------------------------------------------------------------------
/config/plugins/blog.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "header": {
4 | "/": "Blog Related",
5 | "/zh/": "博客相关"
6 | },
7 | "items": [
8 | {
9 | "name": "@vuepress/blog",
10 | "icon": "blog",
11 | "recommend": true,
12 | "desc": {
13 | "/": "VuePress blog plugin",
14 | "/zh/": "VuePress 博客插件"
15 | },
16 | "source": "vuepress/ecosystem/tree/main/plugins/blog/plugin-blog",
17 | "url": {
18 | "/": "ecosystem.vuejs.press/plugins/blog/blog/",
19 | "/zh/": "ecosystem.vuejs.press/zh/plugins/blog/blog/"
20 | }
21 | }
22 | ]
23 | },
24 | {
25 | "header": {
26 | "/": "Subscribe",
27 | "/zh/": "订阅"
28 | },
29 | "items": [
30 | {
31 | "name": "@vuepress/feed",
32 | "icon": "rss",
33 | "recommend": true,
34 | "desc": {
35 | "/": "Feed plugin supporting atom, json and rss syntax feeds",
36 | "/zh/": "支持 atom、json 和 rss 格式的订阅流插件"
37 | },
38 | "source": "vuepress/ecosystem/tree/main/plugins/blog/plugin-feed",
39 | "url": {
40 | "/": "ecosystem.vuejs.press/plugins/blog/feed/",
41 | "/zh/": "ecosystem.vuejs.press/zh/plugins/blog/feed/"
42 | }
43 | }
44 | ]
45 | },
46 | {
47 | "header": {
48 | "/": "Share",
49 | "/zh/": "分享"
50 | },
51 | "items": [
52 | {
53 | "name": "social-share",
54 | "icon": "share",
55 | "recommend": true,
56 | "desc": {
57 | "/": "Social media sharing plugin",
58 | "/zh/": "社交媒体分享插件"
59 | },
60 | "source": "ntnyq/vuepress-plugin-social-share",
61 | "url": "social-share.ntnyq.com"
62 | }
63 | ]
64 | },
65 | {
66 | "header": {
67 | "/": "Comment",
68 | "/zh/": "评论"
69 | },
70 | "items": [
71 | {
72 | "name": "@vuepress/comment",
73 | "icon": "comment-dots",
74 | "recommend": true,
75 | "desc": {
76 | "/": "Comment plugin supporting Giscus, Twikoo, Waline and Artalk",
77 | "/zh/": "支持 Giscus, Twikoo, Waline 和 Artalk 的评论插件"
78 | },
79 | "source": "vuepress/ecosystem/tree/main/plugins/blog/plugin-comment",
80 | "url": {
81 | "/": "ecosystem.vuejs.press/plugins/blog/comment/",
82 | "/zh/": "ecosystem.vuejs.press/zh/plugins/blog/comment/"
83 | }
84 | }
85 | ]
86 | },
87 | {
88 | "header": {
89 | "/": "Auto generation",
90 | "/zh/": "自动生成"
91 | },
92 | "items": [
93 | {
94 | "name": "@vuepress/catalog",
95 | "icon": "network-wired",
96 | "recommend": true,
97 | "desc": {
98 | "/": "Plugins to generate catalog page automatically",
99 | "/zh/": "自动生成目录页面的插件"
100 | },
101 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-catalog",
102 | "url": {
103 | "/": "ecosystem.vuejs.press/plugins/features/catalog.html",
104 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/catalog.html"
105 | }
106 | },
107 | {
108 | "name": "@vuepress/reading-time",
109 | "icon": "book-open",
110 | "desc": {
111 | "/": "Count words and generate reading time for articles",
112 | "/zh/": "统计文章字数并生成阅读时间"
113 | },
114 | "source": "vuepress/ecosystem/tree/main/plugins/development/plugin-reading-time",
115 | "url": {
116 | "/": "ecosystem.vuejs.press/plugins/development/reading-time/",
117 | "/zh/": "ecosystem.vuejs.press/zh/plugins/development/reading-time/"
118 | }
119 | }
120 | ]
121 | },
122 | {
123 | "header": {
124 | "/": "Copyright Information",
125 | "/zh/": "版权信息"
126 | },
127 | "items": [
128 | {
129 | "name": "@vuepress/copyright",
130 | "icon": "circle-info",
131 | "recommend": true,
132 | "desc": {
133 | "/": "Append copyright information while copying, while supports preventing selection and copy",
134 | "/zh/": "复制时附加版权信息,同时支持阻止选择和复制"
135 | },
136 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-copyright",
137 | "url": {
138 | "/": "ecosystem.vuejs.press/plugins/features/copyright.html",
139 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/copyright.html"
140 | }
141 | },
142 | {
143 | "name": "@vuepress/watermark",
144 | "icon": "xmarks-lines",
145 | "recommend": true,
146 | "desc": {
147 | "/": "Add watermark to pages",
148 | "/zh/": "为页面添加水印"
149 | },
150 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-watermark",
151 | "url": {
152 | "/": "ecosystem.vuejs.press/plugins/features/watermark.html",
153 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/watermark.html"
154 | }
155 | }
156 | ]
157 | },
158 | {
159 | "header": {
160 | "/": "Poster Girl",
161 | "/zh/": "看板娘"
162 | },
163 | "items": [
164 | {
165 | "name": "oh-my-live2d",
166 | "icon": "child-dress",
167 | "recommend": true,
168 | "tag": "latest",
169 | "desc": {
170 | "/": "Live2D poster girl",
171 | "/zh/": "live2d 看板娘插件"
172 | },
173 | "source": "oh-my-live2d/oh-my-live2d",
174 | "url": {
175 | "/": "oml2d.com/guide/vuepress.html",
176 | "/zh/": "oml2d.com/guide/vuepress.html"
177 | }
178 | }
179 | ]
180 | }
181 | ]
182 |
--------------------------------------------------------------------------------
/config/plugins/manage.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "header": {
4 | "/": "Site Analyze",
5 | "/zh/": "站点分析"
6 | },
7 | "items": [
8 | {
9 | "name": "@vuepress/google-analytics",
10 | "icon": "magnifying-glass-chart",
11 | "recommend": true,
12 | "desc": {
13 | "/": "Integrate Google Analytics into VuePress.",
14 | "/zh/": "将 Google Analytics 集成到 VuePress"
15 | },
16 | "source": "vuepress/ecosystem/tree/main/plugins/analytics/plugin-google-analytics/",
17 | "url": {
18 | "/": "ecosystem.vuejs.press/plugins/analytics/google-analytics.html",
19 | "/zh/": "ecosystem.vuejs.press/zh/plugins/analytics/google-analytics.html"
20 | }
21 | },
22 | {
23 | "name": "@vuepress/baidu-analytics",
24 | "icon": "magnifying-glass-chart",
25 | "recommend": true,
26 | "desc": {
27 | "/": "Integrate baidu analytics",
28 | "/zh/": "集成百度统计"
29 | },
30 | "source": "vuepress/ecosystem/tree/main/plugins/analytics/plugin-baidu-analytics/",
31 | "url": {
32 | "/": "ecosystem.vuejs.press/plugins/analytics/baidu-analytics.html",
33 | "/zh/": "ecosystem.vuejs.press/zh/plugins/analytics/baidu-analytics.html"
34 | }
35 | },
36 | {
37 | "name": "@vuepress/umami-analytics",
38 | "icon": "magnifying-glass-chart",
39 | "recommend": true,
40 | "desc": {
41 | "/": "Integrate Umami analytics",
42 | "/zh/": "集成 Umami 分析"
43 | },
44 | "source": "vuepress/ecosystem/tree/main/plugins/analytics/plugin-umami-analytics/",
45 | "url": {
46 | "/": "ecosystem.vuejs.press/plugins/analytics/umami-analytics.html",
47 | "/zh/": "ecosystem.vuejs.press/zh/plugins/analytics/umami-analytics.html"
48 | }
49 | },
50 | {
51 | "name": "china-search-console",
52 | "icon": "sitemap",
53 | "tag": "latest",
54 | "desc": {
55 | "/": "SEO Enhancement for China mainland, include baidu tongji (analytics), baidu auto push, 360 autopush, tiaotiao(ByteDance) autopush.",
56 | "/zh/": "中国大陆 SEO 增强,包括百度统计,百度自动推送,360 自动推送,抖音自动推送。"
57 | },
58 | "source": "Zhengqbbb/vuepress-plugin/tree/main/packages/plugin-china-search-console",
59 | "url": "vuepress.qbb.sh/china-search-console/"
60 | }
61 | ]
62 | },
63 | {
64 | "header": {
65 | "/": "SEO",
66 | "/zh/": "SEO"
67 | },
68 | "items": [
69 | {
70 | "name": "@vuepress/seo",
71 | "icon": "wrench",
72 | "recommend": true,
73 | "desc": {
74 | "/": "Auto-generating OGP and JSON-LD tags to enhance SEO",
75 | "/zh/": "自动生成 OGP 和 JSON-LD 标签以增强 SEO"
76 | },
77 | "source": "vuepress/ecosystem/tree/main/plugins/plugin-seo/",
78 | "url": {
79 | "/": "ecosystem.vuejs.press/plugins/seo/",
80 | "/zh/": "ecosystem.vuejs.press/zh/plugins/seo/"
81 | }
82 | },
83 | {
84 | "name": "@vuepress/sitemap",
85 | "icon": "sitemap",
86 | "recommend": true,
87 | "desc": {
88 | "/": "Sitemap generator",
89 | "/zh/": "Sitemap 生成器"
90 | },
91 | "source": "vuepress/ecosystem/tree/main/plugins/plugin-sitemap/",
92 | "url": {
93 | "/": "ecosystem.vuejs.press/plugins/sitemap/",
94 | "/zh/": "ecosystem.vuejs.press/zh/plugins/sitemap/"
95 | }
96 | },
97 | {
98 | "name": "china-search-console",
99 | "icon": "sitemap",
100 | "recommend": true,
101 | "tag": "latest",
102 | "desc": {
103 | "/": "SEO Enhancement for China mainland, include baidu tongji (analytics), baidu auto push, 360 autopush, tiaotiao(ByteDance) autopush.",
104 | "/zh/": "中国大陆 SEO 增强,包括百度统计,百度自动推送,360 自动推送,抖音自动推送。"
105 | },
106 | "source": "Zhengqbbb/vuepress-plugin/tree/main/packages/plugin-china-search-console",
107 | "url": "https://vuepress.qbb.sh/china-search-console/"
108 | },
109 | {
110 | "name": "@vuepress/redirect",
111 | "icon": "fas fa-eject fa-rotate-90",
112 | "recommend": true,
113 | "desc": {
114 | "/": "Performing automatically redirects from old links to new ones",
115 | "/zh/": "自动从旧链接重定向到新链接"
116 | },
117 | "source": "vuepress/ecosystem/tree/main/plugins/tools/plugin-redirect/",
118 | "url": {
119 | "/": "ecosystem.vuejs.press/plugins/tools/redirect.html",
120 | "/zh/": "ecosystem.vuejs.press/zh/plugins/tools/redirect.html"
121 | }
122 | },
123 | {
124 | "name": "open-graph",
125 | "icon": "wrench",
126 | "tag": "latest",
127 | "desc": {
128 | "/": "Generating open graph meta tags to improve SEO.",
129 | "/zh/": "生成 Open Graph Meta 标签以改进 SEO。"
130 | },
131 | "source": "azat-io/vuepress-plugin-open-graph",
132 | "url": "github.com/azat-io/vuepress-plugin-open-graph"
133 | }
134 | ]
135 | },
136 | {
137 | "header": "PWA",
138 | "items": [
139 | {
140 | "name": "@vuepress/pwa",
141 | "icon": "mobile-screen",
142 | "desc": {
143 | "/": "Make your VuePress site a Progressive Web Application (PWA).",
144 | "/zh/": "使你的 VuePress 网站成为 Progressive Web Application (PWA)"
145 | },
146 | "source": "vuepress/ecosystem/tree/main/plugins/pwa/plugin-pwa/",
147 | "url": {
148 | "/": "ecosystem.vuejs.press/plugins/pwa/pwa.html",
149 | "/zh/": "ecosystem.vuejs.press/zh/plugins/pwa/pwa.html"
150 | }
151 | },
152 | {
153 | "name": "@vuepress/remove-pwa",
154 | "icon": "mobile-screen",
155 | "desc": {
156 | "/": "Correctly remove existing PWA configuration",
157 | "/zh/": "正确删除现有的 PWA 配置"
158 | },
159 | "source": "vuepress/ecosystem/tree/main/plugins/pwa/plugin-remove-pwa/",
160 | "url": {
161 | "/": "ecosystem.vuejs.press/plugins/pwa/remove-pwa.html",
162 | "/zh/": "ecosystem.vuejs.press/zh/plugins/pwa/remove-pwa.html"
163 | }
164 | }
165 | ]
166 | }
167 | ]
168 |
--------------------------------------------------------------------------------
/src/.vuepress/components/ProjectDetail.vue:
--------------------------------------------------------------------------------
1 |
97 |
98 |
99 |
127 |
128 |
129 |
251 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | # Creative Commons Legal Code
2 |
3 | ## CC0 1.0 Universal
4 |
5 | Official translations of this legal tool are available
6 |
7 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER.
8 |
9 | ## Statement of Purpose
10 |
11 | The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").
12 |
13 | Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
14 |
15 | For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
16 |
17 | 1. **Copyright and Related Rights.** A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:
18 |
19 | 1. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
20 | 1. moral rights retained by the original author(s) and/or performer(s);
21 | 1. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
22 | 1. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
23 | 1. rights protecting the extraction, dissemination, use and reuse of data in a Work;
24 | 1. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
25 | 1. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
26 |
27 | 2. **Waiver.** To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.
28 |
29 | 3. **Public License Fallback.** Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.
30 |
31 | 4. **Limitations and Disclaimers.**
32 |
33 | - No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
34 | - Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
35 | - Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
36 | - Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
37 |
--------------------------------------------------------------------------------
/config/plugins/developer.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "header": {
4 | "/": "Tools targeting plugins",
5 | "/zh/": "面向插件的工具"
6 | },
7 | "items": [
8 | {
9 | "name": "@vuepress/helper",
10 | "packageName": "@vuepress/helper",
11 | "recommend": true,
12 | "icon": "toolbox",
13 | "desc": {
14 | "/": "Useful VuePress2 util functions for developers",
15 | "/zh/": "面向开发者的 VuePress2 实用工具函数"
16 | },
17 | "source": "vuepress/ecosystem/tree/main/tools/helper",
18 | "url": {
19 | "/": "ecosystem.vuejs.press/tools/helper/",
20 | "/zh/": "ecosystem.vuejs.press/zh/tools/helper/"
21 | }
22 | },
23 | {
24 | "name": "@vuepress/sass-palette",
25 | "icon": "palette",
26 | "recommend": true,
27 | "desc": {
28 | "/": "Palette plugin for sass, an improved edition over the official one.",
29 | "/zh/": "Sass 调色板插件,比官方的更好用。"
30 | },
31 | "source": "vuepress/ecosystem/tree/main/plugins/development/plugin-sass-palette",
32 | "url": {
33 | "/": "ecosystem.vuejs.press/plugins/development/sass-palette/",
34 | "/zh/": "ecosystem.vuejs.press/plugins/development/sass-palette/"
35 | }
36 | }
37 | ]
38 | },
39 | {
40 | "header": {
41 | "/": "Tools targeting theme",
42 | "/zh/": "面向主题的工具插件"
43 | },
44 | "items": [
45 | {
46 | "name": "@vuepress/helper",
47 | "packageName": "@vuepress/helper",
48 | "recommend": true,
49 | "icon": "toolbox",
50 | "desc": {
51 | "/": "Useful VuePress2 util functions for developers",
52 | "/zh/": "面向开发者的 VuePress2 实用工具函数"
53 | },
54 | "source": "vuepress/ecosystem/tree/main/tools/helper/",
55 | "url": {
56 | "/": "ecosystem.vuejs.press/tools/helper/",
57 | "/zh/": "ecosystem.vuejs.press/zh/tools/helper/"
58 | }
59 | },
60 | {
61 | "name": "@vuepress/active-header-links",
62 | "icon": "heading",
63 | "recommend": true,
64 | "desc": {
65 | "/": "Update route hash when scrolling pages",
66 | "/zh/": "滚动页面时更新路由 Hash"
67 | },
68 | "source": "vuepress/ecosystem/tree/main/plugins/development/plugin-active-header-links",
69 | "url": {
70 | "/": "ecosystem.vuejs.press/plugins/development/active-header-links.html",
71 | "/zh/": "ecosystem.vuejs.press/zh/plugins/development/active-header-links.html"
72 | }
73 | },
74 | {
75 | "name": "@vuepress/git",
76 | "icon": "fab fa-git-alt",
77 | "recommend": true,
78 | "desc": {
79 | "/": "Collect git information of your pages, including the created and updated time, the contributors, etc.",
80 | "/zh/": "收集页面的 Git 信息,包括创建和更新时间,贡献者等"
81 | },
82 | "source": "vuepress/ecosystem/tree/main/plugins/development/plugin-git",
83 | "url": {
84 | "/": "ecosystem.vuejs.press/plugins/development/git.html",
85 | "/zh/": "ecosystem.vuejs.press/zh/plugins/development/git.html"
86 | }
87 | },
88 | {
89 | "name": "@vuepress/reading-time",
90 | "icon": "book-open",
91 | "recommend": true,
92 | "desc": {
93 | "/": "Count words and generate reading time for articles",
94 | "/zh/": "统计文章字数并生成阅读时间"
95 | },
96 | "source": "vuepress/ecosystem/tree/main/plugins/development/plugin-reading-time",
97 | "url": {
98 | "/": "ecosystem.vuejs.press/plugins/development/reading-time/",
99 | "/zh/": "ecosystem.vuejs.press/zh/plugins/development/reading-time/"
100 | }
101 | },
102 | {
103 | "name": "@vuepress/sass-palette",
104 | "icon": "palette",
105 | "recommend": true,
106 | "desc": {
107 | "/": "Palette plugin for sass, an improved edition over the official one.",
108 | "/zh/": "Sass 调色板插件,比官方的更好用。"
109 | },
110 | "source": "vuepress/ecosystem/tree/main/plugins/development/plugin-sass-palette",
111 | "url": {
112 | "/": "ecosystem.vuejs.press/plugins/development/sass-palette/",
113 | "/zh/": "ecosystem.vuejs.press/plugins/development/sass-palette/"
114 | }
115 | },
116 | {
117 | "name": "@vuepress/theme-data",
118 | "icon": "diagram-project",
119 | "recommend": true,
120 | "desc": {
121 | "/": "Provide client data for your theme, with VuePress I18n support.",
122 | "/zh/": "为你的主题提供客户端数据,支持 VuePress 多语言。"
123 | },
124 | "source": "vuepress/ecosystem/tree/main/plugins/development/plugin-theme-data",
125 | "url": {
126 | "/": "ecosystem.vuejs.press/plugins/development/theme-data.html",
127 | "/zh/": "ecosystem.vuejs.press/zh/plugins/development/theme-data.html"
128 | }
129 | },
130 | {
131 | "name": "@vuepress/toc",
132 | "icon": "network-wired",
133 | "recommend": true,
134 | "desc": {
135 | "/": "Provide a table-of-contents (TOC) component.",
136 | "/zh/": "提供一个目录组件。"
137 | },
138 | "source": "vuepress/ecosystem/tree/main/plugins/development/plugin-toc",
139 | "url": {
140 | "/": "ecosystem.vuejs.press/plugins/development/toc.html",
141 | "/zh/": "ecosystem.vuejs.press/zh/plugins/development/toc.html"
142 | }
143 | },
144 | {
145 | "name": "iconify",
146 | "icon": "icons",
147 | "tag": "latest",
148 | "desc": {
149 | "/": "Use icons in VuePress",
150 | "/zh/": "在 VuePress 中使用图标"
151 | },
152 | "source": "ntnyq/vuepress-plugin-iconify",
153 | "url": "vuepress-plugin-iconify.ntnyq.com/"
154 | },
155 | {
156 | "name": "@vuepress/palette",
157 | "icon": "palette",
158 | "desc": {
159 | "/": " Provide palette support for your theme.",
160 | "/zh/": "为你的主题提供调色板支持。"
161 | },
162 | "source": "vuepress/ecosystem/tree/main/plugins/development/plugin-palette",
163 | "url": {
164 | "/": "ecosystem.vuejs.press/plugins/development/palette.html",
165 | "/zh/": "ecosystem.vuejs.press/zh/plugins/development/palette.html"
166 | }
167 | },
168 | {
169 | "name": "use-pages",
170 | "icon": "file",
171 | "tag": "latest",
172 | "desc": {
173 | "/": " Use pages data in your docs.
Not recommended as it will have serious performance impact on large sites.
",
174 | "/zh/": "在你的文档中使用页面数据。
不推荐,因为它会对大型站点产生严重的性能影响。
"
175 | },
176 | "source": "monsat/vuepress-plugin-use-pages",
177 | "url": "github.com/monsat/vuepress-plugin-use-pages"
178 | }
179 | ]
180 | }
181 | ]
182 |
--------------------------------------------------------------------------------
/config/crawler.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Crawler config
3 | *
4 | * You should edit the following config if you want to use docsearch as crawler while you apply vuejs.press subdomain.
5 | *
6 | * @property {boolean|string} sitemap [false]
7 | * Whether the plugin has sitemap or it's sitemap location. Default location is '/sitemap.xml'
8 | *
9 | * @property {'vuepress/default'|'hope'|Function} recordExtractor ['vuepress/default']
10 | * Record extractor function, built-in support added for `@vuepress/theme-default` and `vuepress-theme-hope` so you can use `vuepress/default` and `hope` keywords.
11 | *
12 | * @property {Object} initialIndexSettings Additional initialIndexSettings you want
13 | */
14 | const crawlerConfig = {
15 | "plugin-auto-catalog": {
16 | sitemap: true,
17 | recordExtractor: "hope",
18 | },
19 | "plugin-blog2": {
20 | sitemap: true,
21 | recordExtractor: "hope",
22 | },
23 | "plugin-comment2": {
24 | sitemap: true,
25 | recordExtractor: "hope",
26 | },
27 | "plugin-components": {
28 | sitemap: true,
29 | recordExtractor: "hope",
30 | },
31 | "plugin-copyright2": {
32 | sitemap: true,
33 | recordExtractor: "hope",
34 | },
35 | "plugin-lightgallery": {
36 | sitemap: true,
37 | recordExtractor: "hope",
38 | },
39 | "plugin-md-enhance": {
40 | sitemap: true,
41 | recordExtractor: "hope",
42 | },
43 | "plugin-photo-swipe": {
44 | sitemap: true,
45 | recordExtractor: "hope",
46 | },
47 | "plugin-pwa2": {
48 | sitemap: true,
49 | recordExtractor: "hope",
50 | },
51 | "plugin-reading-time2": {
52 | sitemap: true,
53 | recordExtractor: "hope",
54 | },
55 | "plugin-redirect": {
56 | sitemap: true,
57 | recordExtractor: "hope",
58 | },
59 | "plugin-remove-pwa": {
60 | sitemap: true,
61 | recordExtractor: "hope",
62 | },
63 | "plugin-sass-palette": {
64 | sitemap: true,
65 | recordExtractor: "hope",
66 | },
67 |
68 | "theme-hope": {
69 | sitemap: true,
70 | recordExtractor: "hope",
71 | },
72 | };
73 |
74 | /*
75 | * ====================================================
76 | *
77 | * Below are scripts which generate the correct crawler
78 | * Normally you should NOT edit them in PR
79 | *
80 | * ====================================================
81 | */
82 |
83 | const commonInitialIndexSettings = {
84 | attributesForFaceting: ["type", "lang"],
85 | attributesToRetrieve: ["hierarchy", "content", "anchor", "url"],
86 | attributesToHighlight: ["hierarchy", "hierarchy_camel", "content"],
87 | attributesToSnippet: ["content:10"],
88 | camelCaseAttributes: ["hierarchy", "hierarchy_radio", "content"],
89 | searchableAttributes: [
90 | "unordered(hierarchy_radio_camel.lvl0)",
91 | "unordered(hierarchy_radio.lvl0)",
92 | "unordered(hierarchy_radio_camel.lvl1)",
93 | "unordered(hierarchy_radio.lvl1)",
94 | "unordered(hierarchy_radio_camel.lvl2)",
95 | "unordered(hierarchy_radio.lvl2)",
96 | "unordered(hierarchy_radio_camel.lvl3)",
97 | "unordered(hierarchy_radio.lvl3)",
98 | "unordered(hierarchy_radio_camel.lvl4)",
99 | "unordered(hierarchy_radio.lvl4)",
100 | "unordered(hierarchy_radio_camel.lvl5)",
101 | "unordered(hierarchy_radio.lvl5)",
102 | "unordered(hierarchy_radio_camel.lvl6)",
103 | "unordered(hierarchy_radio.lvl6)",
104 | "unordered(hierarchy_camel.lvl0)",
105 | "unordered(hierarchy.lvl0)",
106 | "unordered(hierarchy_camel.lvl1)",
107 | "unordered(hierarchy.lvl1)",
108 | "unordered(hierarchy_camel.lvl2)",
109 | "unordered(hierarchy.lvl2)",
110 | "unordered(hierarchy_camel.lvl3)",
111 | "unordered(hierarchy.lvl3)",
112 | "unordered(hierarchy_camel.lvl4)",
113 | "unordered(hierarchy.lvl4)",
114 | "unordered(hierarchy_camel.lvl5)",
115 | "unordered(hierarchy.lvl5)",
116 | "unordered(hierarchy_camel.lvl6)",
117 | "unordered(hierarchy.lvl6)",
118 | "content",
119 | ],
120 | distinct: true,
121 | attributeForDistinct: "url",
122 | customRanking: [
123 | "desc(weight.pageRank)",
124 | "desc(weight.level)",
125 | "asc(weight.position)",
126 | ],
127 | ranking: [
128 | "words",
129 | "filters",
130 | "typo",
131 | "attribute",
132 | "proximity",
133 | "exact",
134 | "custom",
135 | ],
136 | highlightPreTag: '',
137 | highlightPostTag: "",
138 | minWordSizefor1Typo: 3,
139 | minWordSizefor2Typos: 7,
140 | allowTyposOnNumericTokens: false,
141 | minProximity: 1,
142 | ignorePlurals: true,
143 | advancedSyntax: true,
144 | attributeCriteriaComputedByMinProximity: true,
145 | removeWordsIfNoResults: "allOptional",
146 | };
147 |
148 | export const recordExtractorMap = {
149 | "vuepress/default": ({ helpers }) =>
150 | helpers.docsearch({
151 | recordProps: {
152 | lvl0: {
153 | selectors: ".sidebar-heading.active",
154 | defaultValue: "Documentation",
155 | },
156 | lvl1: ".theme-default-content h1",
157 | lvl2: ".theme-default-content h2",
158 | lvl3: ".theme-default-content h3",
159 | lvl4: ".theme-default-content h4",
160 | lvl5: ".theme-default-content h5",
161 | lvl6: ".theme-default-content h6",
162 | content: ".theme-default-content p, .theme-default-content li",
163 | },
164 | indexHeadings: true,
165 | }),
166 | hope: ({ helpers }) =>
167 | helpers.docsearch({
168 | recordProps: {
169 | lvl0: {
170 | selectors: ".sidebar-heading.active",
171 | defaultValue: "Documentation",
172 | },
173 | lvl1: ".theme-hope-content h1",
174 | lvl2: ".theme-hope-content h2",
175 | lvl3: ".theme-hope-content h3",
176 | lvl4: ".theme-hope-content h4",
177 | lvl5: ".theme-hope-content h5",
178 | lvl6: ".theme-hope-content h6",
179 | content: ".theme-hope-content p, .theme-hope-content li",
180 | },
181 | indexHeadings: true,
182 | }),
183 | };
184 |
185 | const getUrl = (name) => `https://${name}.vuejs.press`;
186 |
187 | export default {
188 | appId: "4H91G9D3GD",
189 | apiKey: "34532f86a6941fc826504e55118c1844",
190 | rateLimit: 25,
191 | maxDepth: 10,
192 | startUrls: [
193 | "https://marketplace.vuejs.press",
194 | ...Object.entries(crawlerConfig).map(([name]) => getUrl(name)),
195 | ],
196 | renderJavaScript: false,
197 | sitemaps: [
198 | "https://marketplace.vuejs.press/sitemap.xml",
199 | ...Object.entries(crawlerConfig)
200 | .filter(([, { sitemap }]) => Boolean(sitemap))
201 | .map(
202 | ([name, { sitemap }]) =>
203 | `${getUrl(name)}/${
204 | typeof sitemap === "string" ? sitemap : "sitemap.xml"
205 | }}`,
206 | ),
207 | ],
208 | ignoreCanonicalTo: false,
209 | discoveryPatterns: [
210 | "https://marketplace.vuejs.press/**",
211 | ...Object.keys(crawlerConfig).map((name) => `${getUrl(name)}/**`),
212 | ],
213 | schedule: "at 20:00 every 1 day",
214 | actions: [
215 | {
216 | indexName: "vuejs-press",
217 | pathsToMatch: ["https://marketplace.vuejs.press/**"],
218 | recordExtractor: recordExtractorMap.hope,
219 | },
220 | ...Object.entries(crawlerConfig).map(
221 | ([name, { recordExtractor = "vuepress/default" }]) => {
222 | return {
223 | indexName: name,
224 | pathsToMatch: [`${getUrl(name)}/**`],
225 | recordExtractor:
226 | typeof recordExtractor === "function"
227 | ? recordExtractor
228 | : recordExtractorMap[recordExtractor] ||
229 | recordExtractorMap["vuepress/default"],
230 | };
231 | },
232 | ),
233 | ],
234 | initialIndexSettings: {
235 | "vuejs-press": commonInitialIndexSettings,
236 | ...Object.fromEntries(
237 | Object.entries(crawlerConfig).map(
238 | ([name, { initialIndexSettings = {} }]) => [
239 | name,
240 | { ...commonInitialIndexSettings, ...initialIndexSettings },
241 | ],
242 | ),
243 | ),
244 | },
245 | };
246 |
--------------------------------------------------------------------------------
/config/plugins/feature.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "header": {
4 | "/": "Image preview",
5 | "/zh/": "图片预览"
6 | },
7 | "items": [
8 | {
9 | "name": "@vuepress/photo-swipe",
10 | "icon": "images",
11 | "recommend": true,
12 | "desc": {
13 | "/": "Image preview plugin based on photo-swipe",
14 | "/zh/": "基于 photo-swipe 的图片预览插件"
15 | },
16 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-photo-swipe",
17 | "url": {
18 | "/": "ecosystem.vuejs.press/plugins/features/photo-swipe.html",
19 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/photo-swipe.html"
20 | }
21 | },
22 | {
23 | "name": "lightgallery",
24 | "icon": "images",
25 | "tag": "latest",
26 | "desc": {
27 | "/": "Image preview plugin based on lightgallery",
28 | "/zh/": "基于 lightgallery 的图片预览插件"
29 | },
30 | "source": "vuepress-theme-hope/vuepress-theme-hope/tree/main/packages/lightgallery",
31 | "url": {
32 | "/": "plugin-lightgallery.vuejs.press",
33 | "/zh/": "plugin-lightgallery.vuejs.press/zh/"
34 | }
35 | },
36 | {
37 | "name": "@vuepress/medium-zoom",
38 | "icon": "images",
39 | "desc": {
40 | "/": "Integrate medium-zoom into VuePress.",
41 | "/zh/": "将 medium-zoom 集成到VuePress。"
42 | },
43 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-medium-zoom",
44 | "url": {
45 | "/": "ecosystem.vuejs.press/plugins/features/medium-zoom.html",
46 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/medium-zoom.html"
47 | }
48 | }
49 | ]
50 | },
51 |
52 | {
53 | "header": {
54 | "/": "Comment",
55 | "/zh/": "评论"
56 | },
57 | "items": [
58 | {
59 | "name": "@vuepress/comment",
60 | "icon": "comment-dots",
61 | "recommend": true,
62 | "desc": {
63 | "/": "Comment plugin supporting Giscus, Twikoo, Waline and Artalk",
64 | "/zh/": "支持 Giscus, Twikoo, Waline 和 Artalk 的评论插件"
65 | },
66 | "source": "vuepress/ecosystem/tree/main/plugins/blog/plugin-comment",
67 | "url": {
68 | "/": "ecosystem.vuejs.press/plugins/blog/comment/",
69 | "/zh/": "ecosystem.vuejs.press/zh/plugins/blog/comment/"
70 | }
71 | }
72 | ]
73 | },
74 | {
75 | "header": {
76 | "/": "New Features",
77 | "/zh/": "新功能"
78 | },
79 | "items": [
80 | {
81 | "name": "@vuepress/back-to-top",
82 | "icon": "square-caret-up",
83 | "recommend": true,
84 | "desc": {
85 | "/": "Back to top button",
86 | "/zh/": "返回顶部按钮"
87 | },
88 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-back-to-top",
89 | "url": {
90 | "/": "ecosystem.vuejs.press/plugins/features/back-to-top.html",
91 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/back-to-top.html"
92 | }
93 | },
94 | {
95 | "name": "@vuepress/catalog",
96 | "icon": "network-wired",
97 | "recommend": true,
98 | "desc": {
99 | "/": "Plugins to generate catalog page automatically",
100 | "/zh/": "自动生成目录页面的插件"
101 | },
102 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-catalog",
103 | "url": {
104 | "/": "ecosystem.vuejs.press/plugins/features/catalog.html",
105 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/catalog.html"
106 | }
107 | },
108 | {
109 | "name": "@vuepress/copy-code",
110 | "icon": "copy",
111 | "recommend": true,
112 | "desc": {
113 | "/": "Provide copy button for code blocks.",
114 | "/zh/": "为代码块提供复制按钮"
115 | },
116 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-copy-code",
117 | "url": {
118 | "/": "ecosystem.vuejs.press/plugins/features/copy-code.html",
119 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/copy-code.html"
120 | }
121 | },
122 | {
123 | "name": "@vuepress/notice",
124 | "icon": "bell",
125 | "recommend": true,
126 | "desc": {
127 | "/": "Add notice to website",
128 | "/zh/": "网站添加通知公告"
129 | },
130 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-notice",
131 | "url": {
132 | "/": "ecosystem.vuejs.press/plugins/features/notice.html",
133 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/notice.html"
134 | }
135 | },
136 | {
137 | "name": "components",
138 | "icon": "puzzle-piece",
139 | "recommend": true,
140 | "tag": "latest",
141 | "desc": {
142 | "/": "Useful components in markdown",
143 | "/zh/": "一些在 Markdown 中使用的组件"
144 | },
145 | "source": "vuepress-theme-hope/vuepress-theme-hope/tree/main/packages/components/",
146 | "url": {
147 | "/": "plugin-components.vuejs.press",
148 | "/zh/": "plugin-components.vuejs.press/zh/"
149 | }
150 | },
151 | {
152 | "name": "anchor-right",
153 | "icon": "anchor",
154 | "tag": "latest",
155 | "desc": {
156 | "/": "Generate right toc anchor",
157 | "/zh/": "生成右侧导航目录锚点"
158 | },
159 | "source": "dingshaohua-cn/vuepress-plugin-anchor-right",
160 | "url": {
161 | "/": "github.com/dingshaohua-cn/vuepress-plugin-anchor-right/blob/main/README-en.md",
162 | "/zh/": "github.com/dingshaohua-cn/vuepress-plugin-anchor-right"
163 | }
164 | }
165 | ]
166 | },
167 | {
168 | "header": {
169 | "/": "Copyright Information",
170 | "/zh/": "版权信息"
171 | },
172 | "items": [
173 | {
174 | "name": "@vuepress/copyright",
175 | "icon": "circle-info",
176 | "recommend": true,
177 | "desc": {
178 | "/": "Append copyright information while copying, while supports preventing selection and copy",
179 | "/zh/": "复制时附加版权信息,同时支持阻止选择和复制"
180 | },
181 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-copyright",
182 | "url": {
183 | "/": "ecosystem.vuejs.press/plugins/features/copyright.html",
184 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/copyright.html"
185 | }
186 | },
187 | {
188 | "name": "@vuepress/watermark",
189 | "icon": "xmarks-lines",
190 | "recommend": true,
191 | "desc": {
192 | "/": "Add watermark to pages",
193 | "/zh/": "为页面添加水印"
194 | },
195 | "source": "vuepress/ecosystem/tree/main/plugins/features/plugin-watermark",
196 | "url": {
197 | "/": "ecosystem.vuejs.press/plugins/features/watermark.html",
198 | "/zh/": "ecosystem.vuejs.press/zh/plugins/features/watermark.html"
199 | }
200 | }
201 | ]
202 | },
203 | {
204 | "header": {
205 | "/": "Tools",
206 | "/zh/": "工具"
207 | },
208 | "items": [
209 | {
210 | "name": "@vuepress/append-date",
211 | "icon": "calendar",
212 | "recommend": true,
213 | "desc": {
214 | "/": "Appending date to frontmatter based on git info",
215 | "/zh/": "基于 Git 信息追加时间到 frontmatter"
216 | },
217 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-append-date",
218 | "url": {
219 | "/": "ecosystem.vuejs.press/plugins/markdown/append-date.html",
220 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/append-date.html"
221 | }
222 | },
223 | {
224 | "name": "@vuepress/register-components",
225 | "icon": "puzzle-piece",
226 | "recommend": true,
227 | "desc": {
228 | "/": "Register Vue components from component files or directory automatically.",
229 | "/zh/": "自动从组件文件或目录中注册 Vue 组件。"
230 | },
231 | "source": "vuepress/ecosystem/tree/main/plugins/tools/plugin-register-components",
232 | "url": {
233 | "/": "ecosystem.vuejs.press/plugins/tools/register-components.html",
234 | "/zh/": "ecosystem.vuejs.press/zh/plugins/tools/register-components.html"
235 | }
236 | },
237 | {
238 | "name": "@vuepress/redirect",
239 | "icon": "fas fa-eject fa-rotate-90",
240 | "recommend": true,
241 | "desc": {
242 | "/": "Performing automatically redirects from old links to new ones",
243 | "/zh/": "自动从旧链接重定向到新链接"
244 | },
245 | "source": "vuepress/ecosystem/tree/main/plugins/tools/plugin-redirect/",
246 | "url": {
247 | "/": "ecosystem.vuejs.press/plugins/tools/redirect.html",
248 | "/zh/": "ecosystem.vuejs.press/zh/plugins/tools/redirect.html"
249 | }
250 | },
251 | {
252 | "name": "@vuepress/rtl",
253 | "icon": "arrow-right",
254 | "recommend": true,
255 | "desc": {
256 | "/": "RTL layout support",
257 | "/zh/": "RTL 布局支持"
258 | },
259 | "source": "vuepress/ecosystem/tree/main/plugins/development/plugin-rtl/",
260 | "url": {
261 | "/": "ecosystem.vuejs.press/plugins/development/rtl.html",
262 | "/zh/": "ecosystem.vuejs.press/zh/plugins/development/rtl.html"
263 | }
264 | },
265 | {
266 | "name": "@condorhero/export-pdf-v2",
267 | "icon": "file-pdf",
268 | "tag": "latest",
269 | "desc": {
270 | "/": "Export site to a PDF file",
271 | "/zh/": "将网站导出为 PDF 文件"
272 | },
273 | "source": "condorheroblog/vuepress-plugin/tree/main/packages/vuepress-plugin-export-pdf-v2",
274 | "url": "https://github.com/condorheroblog/vuepress-plugin/tree/main/packages/vuepress-plugin-export-pdf-v2"
275 | }
276 | ]
277 | }
278 | ]
279 |
--------------------------------------------------------------------------------
/config/plugins/markdown.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "header": {
4 | "/": "Markdown Highlighter",
5 | "/zh/": "Markdown 高亮器"
6 | },
7 | "items": [
8 | {
9 | "name": "@vuepress/shiki",
10 | "icon": "code",
11 | "recommend": true,
12 | "desc": {
13 | "/": " Enable syntax highlighting for markdown code fence with Shiki",
14 | "/zh/": "使用 Shiki 为 Markdown 代码块启用语法高亮"
15 | },
16 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-shiki",
17 | "url": {
18 | "/": "ecosystem.vuejs.press/plugins/markdown/shiki.html",
19 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/shiki.html"
20 | }
21 | },
22 | {
23 | "name": "@vuepress/prismjs",
24 | "icon": "code",
25 | "desc": {
26 | "/": " Enable syntax highlighting for markdown code fence with Prism.js",
27 | "/zh/": "使用 Prism.js 为 Markdown 代码块启用语法高亮"
28 | },
29 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-prismjs/",
30 | "url": {
31 | "/": "ecosystem.vuejs.press/plugins/markdown/prismjs.html",
32 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/prismjs.html"
33 | }
34 | }
35 | ]
36 | },
37 | {
38 | "header": {
39 | "/": "Markdown Stylizer",
40 | "/zh/": "Markdown 样式化"
41 | },
42 | "items": [
43 | {
44 | "name": "@vuepress/markdown-hint",
45 | "icon": "lightbulb",
46 | "recommend": true,
47 | "desc": {
48 | "/": "Add hint containers in markdown",
49 | "/zh/": "在 Markdown 中添加提示容器"
50 | },
51 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-markdown-hint",
52 | "url": {
53 | "/": "ecosystem.vuejs.press/plugins/markdown/markdown-hint.html",
54 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/markdown-hint.html"
55 | }
56 | },
57 | {
58 | "name": "@vuepress/markdown-image",
59 | "icon": "image",
60 | "recommend": true,
61 | "desc": {
62 | "/": "Support image size, render as figure and image lazyloading",
63 | "/zh/": "支持图片尺寸语法,将图片显示为 figure 并实现图片懒加载"
64 | },
65 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-markdown-image",
66 | "url": {
67 | "/": "ecosystem.vuejs.press/plugins/markdown/markdown-image.html",
68 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/markdown-image.html"
69 | }
70 | },
71 | {
72 | "name": "@vuepress/markdown-stylize",
73 | "icon": "table-columns",
74 | "recommend": true,
75 | "desc": {
76 | "/": "Stylize contents in markdown",
77 | "/zh/": "在 Markdown 中样式化内容"
78 | },
79 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-markdown-stylize",
80 | "url": {
81 | "/": "ecosystem.vuejs.press/plugins/markdown/markdown-stylize.html",
82 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/markdown-stylize.html"
83 | }
84 | }
85 | ]
86 | },
87 | {
88 | "header": {
89 | "/": "Markdown Syntax Extension",
90 | "/zh/": "Markdown 语法扩展"
91 | },
92 | "items": [
93 | {
94 | "name": "@vuepress/markdown-ext",
95 | "icon": "table-columns",
96 | "recommend": true,
97 | "desc": {
98 | "/": "Official markdown extension that supports gfm and others",
99 | "/zh/": "官方支持 GFM 等的 Markdown 扩展"
100 | },
101 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-markdown-ext",
102 | "url": {
103 | "/": "ecosystem.vuejs.press/plugins/markdown/markdown-ext.html",
104 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/markdown-ext.html"
105 | }
106 | },
107 | {
108 | "name": "@vuepress/markdown-tab",
109 | "icon": "table-columns",
110 | "recommend": true,
111 | "desc": {
112 | "/": "Add code tabs or tabs in Markdown",
113 | "/zh/": "在 Markdown 中添加代码选项卡与选项卡"
114 | },
115 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-markdown-tab",
116 | "url": {
117 | "/": "ecosystem.vuejs.press/plugins/markdown/markdown-tab.html",
118 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/markdown-tab.html"
119 | }
120 | },
121 | {
122 | "name": "@vuepress/markdown-math",
123 | "icon": "square-root-variable",
124 | "recommend": true,
125 | "desc": {
126 | "/": "Render tex equations with katex or mathjax",
127 | "/zh/": "使用 katex 或 mathjax 渲染 tex 公式"
128 | },
129 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-markdown-math",
130 | "url": {
131 | "/": "ecosystem.vuejs.press/plugins/markdown/markdown-math.html",
132 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/markdown-math.html"
133 | }
134 | },
135 | {
136 | "name": "@vuepress/markdown-include",
137 | "icon": "at",
138 | "recommend": true,
139 | "desc": {
140 | "/": "Import common markdown snippet into contents",
141 | "/zh/": "将公共的 Markdown 片段导入到内容中"
142 | },
143 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-markdown-include",
144 | "url": {
145 | "/": "ecosystem.vuejs.press/plugins/markdown/markdown-include.html",
146 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/markdown-include.html"
147 | }
148 | },
149 | {
150 | "name": "@vuepress/markdown-container",
151 | "icon": "box-open",
152 | "recommend": true,
153 | "desc": {
154 | "/": "Register markdown custom containers in your VuePress site",
155 | "/zh/": "在你的 VuePress 站点中注册 markdown 自定义容器"
156 | },
157 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-markdown-container",
158 | "url": {
159 | "/": "ecosystem.vuejs.press/plugins/markdown/markdown-container.html",
160 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/markdown-container.html"
161 | }
162 | },
163 | {
164 | "name": "components",
165 | "icon": "puzzle-piece",
166 | "recommend": true,
167 | "tag": "latest",
168 | "desc": {
169 | "/": "Useful components in markdown",
170 | "/zh/": "一些在 Markdown 中使用的组件"
171 | },
172 | "source": "vuepress-theme-hope/vuepress-theme-hope/tree/main/packages/components/",
173 | "url": {
174 | "/": "plugin-components.vuejs.press",
175 | "/zh/": "plugin-components.vuejs.press/zh/"
176 | }
177 | },
178 | {
179 | "name": "netabare-switch",
180 | "icon": "toggle-on",
181 | "tag": "latest",
182 | "desc": {
183 | "/": " VuePress2 plugin to add toggle switch for spoilers.",
184 | "/zh/": "VuePress2 插件,用于添加剧透开关。"
185 | },
186 | "source": "monsat/vuepress-plugin-netabare-switch",
187 | "url": "https://github.com/monsat/vuepress-plugin-netabare-switch"
188 | },
189 | {
190 | "name": "@snippetors/tabs",
191 | "icon": "table-columns",
192 | "tag": "latest",
193 | "desc": {
194 | "/": " VuePress2 plugin which renders custom markdown containers as tabs, for vuepress v2.x",
195 | "/zh/": "VuePress2 插件,将自定义的 markdown 容器渲染为选项卡,适用于 vuepress v2.x"
196 | },
197 | "source": "Snippetors/snippets/tree/main/packages/%40snippetors/vuepress-plugin-tabs",
198 | "url": "https://snippetors.github.io/plugins/vuepress-plugin-tabs.html"
199 | }
200 | ]
201 | },
202 | {
203 | "header": {
204 | "/": "Features Integrations",
205 | "/zh/": "功能集成"
206 | },
207 | "items": [
208 | {
209 | "name": "md-enhance",
210 | "title": "ECharts",
211 | "icon": "chart-area",
212 | "recommend": true,
213 | "tag": "latest",
214 | "desc": {
215 | "/": "Integrate ECharts to display charts in Markdown",
216 | "/zh/": "在 Markdown 中集成 ECharts 以显示图表"
217 | },
218 | "source": "vuepress-theme-hope/vuepress-theme-hope/tree/main/packages/md-enhance",
219 | "url": {
220 | "/": "plugin-md-enhance.vuejs.press/guide/chart/echarts.html",
221 | "/zh/": "plugin-md-enhance.vuejs.press/zh/guide/chart/echarts.html"
222 | }
223 | },
224 | {
225 | "name": "md-enhance",
226 | "title": "Mermaid",
227 | "icon": "chart-pie",
228 | "tag": "latest",
229 | "recommend": true,
230 | "desc": {
231 | "/": "Integrate Mermaid to display diagrams in Markdown",
232 | "/zh/": "在 Markdown 中集成 Mermaid 以显示图表"
233 | },
234 | "source": "vuepress-theme-hope/vuepress-theme-hope/tree/main/packages/md-enhance",
235 | "url": {
236 | "/": "plugin-md-enhance.vuejs.press/guide/chart/mermaid.html",
237 | "/zh/": "plugin-md-enhance.vuejs.press/zh/guide/chart/mermaid.html"
238 | }
239 | },
240 | {
241 | "name": "md-enhance",
242 | "title": "Vue Playground",
243 | "icon": "fab fa-vuejs",
244 | "tag": "latest",
245 | "recommend": true,
246 | "desc": {
247 | "/": "Integrate Vue Playground in Markdown",
248 | "/zh/": "在 Markdown 中集成 Vue Playground"
249 | },
250 | "source": "vuepress-theme-hope/vuepress-theme-hope/tree/main/packages/md-enhance",
251 | "url": {
252 | "/": "plugin-md-enhance.vuejs.press/guide/code/vue-playground.html",
253 | "/zh/": "plugin-md-enhance.vuejs.press/zh/guide/code/vue-playground.html"
254 | }
255 | },
256 | {
257 | "name": "@vuepress/revealjs",
258 | "icon": "person-chalkboard",
259 | "recommend": true,
260 | "desc": {
261 | "/": "Integrate slides with Reveal.js in Markdown",
262 | "/zh/": "在 Markdown 中通过 Reveal.js 集成幻灯片"
263 | },
264 | "source": "vuepress/ecosystem/tree/main/plugins/markdown/plugin-revealjs",
265 | "url": {
266 | "/": "ecosystem.vuejs.press/plugins/markdown/revealjs/",
267 | "/zh/": "ecosystem.vuejs.press/zh/plugins/markdown/revealjs/"
268 | }
269 | },
270 |
271 | {
272 | "name": "md-enhance",
273 | "title": "Chart.js",
274 | "icon": "chart-simple",
275 | "tag": "latest",
276 | "desc": {
277 | "/": "Integrate Chart.js to display charts in Markdown",
278 | "/zh/": "在 Markdown 中集成 Chart.js 以显示图表"
279 | },
280 | "source": "vuepress-theme-hope/vuepress-theme-hope/tree/main/packages/md-enhance",
281 | "url": {
282 | "/": "plugin-md-enhance.vuejs.press/guide/chart/chartjs.html",
283 | "/zh/": "plugin-md-enhance.vuejs.press/zh/guide/chart/chartjs.html"
284 | }
285 | },
286 | {
287 | "name": "md-enhance",
288 | "title": "Flowchart",
289 | "icon": "route",
290 | "tag": "latest",
291 | "desc": {
292 | "/": "Integrate flowchart.js to display flowcharts in Markdown",
293 | "/zh/": "在 Markdown 集成 flowchart.js 中以显示流程图"
294 | },
295 | "source": "vuepress-theme-hope/vuepress-theme-hope/tree/main/packages/md-enhance",
296 | "url": {
297 | "/": "plugin-md-enhance.vuejs.press/guide/chart/flowchart.html",
298 | "/zh/": "plugin-md-enhance.vuejs.press/zh/guide/chart/flowchart.html"
299 | }
300 | },
301 | {
302 | "name": "md-enhance",
303 | "title": "Code demo",
304 | "icon": "splotch",
305 | "tag": "latest",
306 | "desc": {
307 | "/": "Run and show code snippets in Markdown",
308 | "/zh/": "在 Markdown 中运行并展示代码片段"
309 | },
310 | "source": "vuepress-theme-hope/vuepress-theme-hope/tree/main/packages/md-enhance",
311 | "url": {
312 | "/": "plugin-md-enhance.vuejs.press/guide/dode/demo/",
313 | "/zh/": "plugin-md-enhance.vuejs.press/zh/guide/code/demo/"
314 | }
315 | },
316 | {
317 | "name": "md-enhance",
318 | "title": "Playground",
319 | "icon": "code",
320 | "tag": "latest",
321 | "desc": {
322 | "/": "Integrate external playground services in Markdown",
323 | "/zh/": "在 Markdown 中集成外部 playground 服务"
324 | },
325 | "source": "vuepress-theme-hope/vuepress-theme-hope/tree/main/packages/md-enhance",
326 | "url": {
327 | "/": "plugin-md-enhance.vuejs.press/guide/code/playground.html",
328 | "/zh/": "plugin-md-enhance.vuejs.press/zh/guide/code/playground.html"
329 | }
330 | }
331 | ]
332 | },
333 | {
334 | "header": {
335 | "/": "Helpers",
336 | "/zh/": "辅助工具"
337 | },
338 | "items": [
339 | {
340 | "name": "markdown-define2",
341 | "icon": "anchor",
342 | "tag": "latest",
343 | "desc": {
344 | "/": "Define variables in markdown",
345 | "/zh/": "在 markdown 中定义变量"
346 | },
347 | "source": "justforuse/vuepress-plugin-markdown-define2",
348 | "url": "https://github.com/justforuse/vuepress-plugin-markdown-define2"
349 | }
350 | ]
351 | }
352 | ]
353 |
--------------------------------------------------------------------------------