diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index bdb1f69..67055ad 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -10,7 +10,7 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v2
         with:
-          fetch-depth: 0         
+          fetch-depth: 0
       - name: Get yarn cache directory path
         id: yarn-cache-dir-path
         run: echo "::set-output name=dir::$(yarn cache dir)"
diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml
index f8bd1b1..a9c3736 100644
--- a/.github/workflows/prettier.yml
+++ b/.github/workflows/prettier.yml
@@ -9,12 +9,12 @@ jobs:
     runs-on: ubuntu-latest
 
     steps:
-    - name: Checkout
-      uses: actions/checkout@v2
+      - name: Checkout
+        uses: actions/checkout@v2
 
-    - name: Prettify code
-      uses: creyD/prettier_action@v3.1
-      with:
-        prettier_options: --write **/*.{js,ts,md,vue}
-        only_changed: true
-        dry: true
+      - name: Prettify code
+        uses: creyD/prettier_action@v3.1
+        with:
+          prettier_options: --write **/*.{js,ts,md,vue}
+          only_changed: true
+          dry: true
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..7e5f626
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,4 @@
+node_modules/
+.vuepress/dist
+.temp/
+dist/
diff --git a/README.md b/README.md
index e5a28b6..b1dfec0 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-# Xray-docs-next
\ No newline at end of file
+# Xray-docs-next
diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js
index 4bcb264..46fac68 100644
--- a/docs/.vuepress/config.js
+++ b/docs/.vuepress/config.js
@@ -5,8 +5,8 @@ module.exports = {
     "/": {
       lang: "zh-CN",
       title: "Project X",
-      description: "Xray 官方文档"
-    }
+      description: "Xray 官方文档",
+    },
   },
   themeConfig: {
     smoothScroll: true,
@@ -30,9 +30,9 @@ module.exports = {
         ariaLabel: "Language Menu",
         items: [
           { text: "简体中文", link: "/" },
-          { text: "English", link: "/en" }
-        ]
-      }
+          { text: "English", link: "/en" },
+        ],
+      },
     ],
     sidebar: {
       "/config/": [
@@ -43,8 +43,8 @@ module.exports = {
             "features/xtls",
             "features/fallback",
             "features/env",
-            "features/multiple"
-          ]
+            "features/multiple",
+          ],
         },
         {
           title: "基础配置",
@@ -60,8 +60,8 @@ module.exports = {
             "reverse",
             "routing",
             "stats",
-            "transport"
-          ]
+            "transport",
+          ],
         },
         {
           title: "入站代理",
@@ -74,8 +74,8 @@ module.exports = {
             "inbounds/socks",
             "inbounds/trojan",
             "inbounds/vless",
-            "inbounds/vmess"
-          ]
+            "inbounds/vmess",
+          ],
         },
         {
           title: "出站代理",
@@ -90,8 +90,8 @@ module.exports = {
             "outbounds/socks",
             "outbounds/trojan",
             "outbounds/vless",
-            "outbounds/vmess"
-          ]
+            "outbounds/vmess",
+          ],
         },
         {
           title: "底层传输",
@@ -103,9 +103,9 @@ module.exports = {
             "transports/mkcp",
             "transports/quic",
             "transports/tcp",
-            "transports/websocket"
-          ]
-        }
+            "transports/websocket",
+          ],
+        },
       ],
       "/document/level-0/": [
         "ch01-preface",
@@ -116,41 +116,41 @@ module.exports = {
         "ch06-certificates",
         "ch07-xray-server",
         "ch08-xray-clients",
-        "ch09-appendix"
+        "ch09-appendix",
       ],
       "/document/level-1/": [
         "fallbacks-lv1",
         "routing-lv1-part1",
         "routing-lv1-part2",
         "work",
-        "fallbacks-with-sni"
+        "fallbacks-with-sni",
       ],
       "/document/level-2/": [
         "transparent_proxy/transparent_proxy",
         "tproxy",
         "iptables_gid",
-        "redirect"
+        "redirect",
       ],
-      "/": "auto"
-    }
+      "/": "auto",
+    },
   },
   markdown: {
     toc: {
-      includeLevel: [2]
+      includeLevel: [2],
     },
-    extendMarkdown: md => {
+    extendMarkdown: (md) => {
       md.use(require("markdown-it-footnote"));
-    }
+    },
   },
-  chainWebpack: config => {
+  chainWebpack: (config) => {
     config.module
       .rule("webp")
       .test(/\.(webp)(\?.*)?$/)
       .use("file-loader")
       .loader("file-loader")
       .options({
-        name: `assets/img/[name].[hash:8].[ext]`
+        name: `assets/img/[name].[hash:8].[ext]`,
       });
   },
-  postcss: { plugins: [require("autoprefixer")] }
+  postcss: { plugins: [require("autoprefixer")] },
 };
diff --git a/docs/.vuepress/theme/components/NavLinks.vue b/docs/.vuepress/theme/components/NavLinks.vue
index f995520..c041afe 100644
--- a/docs/.vuepress/theme/components/NavLinks.vue
+++ b/docs/.vuepress/theme/components/NavLinks.vue
@@ -21,7 +21,7 @@ export default Vue.extend({
   data() {
     return {
       enable: false,
-      text: ""
+      text: "",
     };
   },
   mounted() {
@@ -40,7 +40,7 @@ export default Vue.extend({
       } else {
         html.setAttribute("theme", "light");
       }
-    }
-  }
+    },
+  },
 });
 </script>
diff --git a/docs/.vuepress/theme/index.js b/docs/.vuepress/theme/index.js
index b4eddc0..0fe3d63 100644
--- a/docs/.vuepress/theme/index.js
+++ b/docs/.vuepress/theme/index.js
@@ -1,3 +1,3 @@
 module.exports = {
-  extend: "@vuepress/theme-default"
+  extend: "@vuepress/theme-default",
 };
diff --git a/docs/.vuepress/theme/layouts/Layout.vue b/docs/.vuepress/theme/layouts/Layout.vue
index 6a81373..87d04a7 100644
--- a/docs/.vuepress/theme/layouts/Layout.vue
+++ b/docs/.vuepress/theme/layouts/Layout.vue
@@ -7,8 +7,8 @@ import ParentLayout from "@parent-theme/layouts/Layout.vue";
 import Vue from "vue";
 export default Vue.extend({
   components: {
-    ParentLayout
-  }
+    ParentLayout,
+  },
 });
 </script>
 
diff --git a/docs/about/news.md b/docs/about/news.md
index 1ca40dd..e73b863 100644
--- a/docs/about/news.md
+++ b/docs/about/news.md
@@ -21,6 +21,7 @@ sidebar: auto
 
 ## 2021.3.25
 
+<!-- prettier-ignore -->
 没错还在变。 -_-
 
 ## 2021.3.15
diff --git a/docs/config/inbounds/shadowsocks.md b/docs/config/inbounds/shadowsocks.md
index 1402bbd..d160292 100644
--- a/docs/config/inbounds/shadowsocks.md
+++ b/docs/config/inbounds/shadowsocks.md
@@ -7,17 +7,17 @@
 - 支持 TCP 和 UDP 数据包转发,其中 UDP 可选择性关闭;
 - 推荐的加密方式:
 
-    - AES-256-GCM
-    - AES-128-GCM
-    - ChaCha20-Poly1305 或称 ChaCha20-IETF-Poly1305
-    - none 或 plain
+  - AES-256-GCM
+  - AES-128-GCM
+  - ChaCha20-Poly1305 或称 ChaCha20-IETF-Poly1305
+  - none 或 plain
 
   不推荐的加密方式:
 
-    - AES-256-CFB
-    - AES-128-CFB
-    - ChaCha20
-    - ChaCha20-IETF
+  - AES-256-CFB
+  - AES-128-CFB
+  - ChaCha20
+  - ChaCha20-IETF
 
 ::: danger
 "none" 不加密方式下,服务器端不会验证 "password" 中的密码。为确保安全性, 一般需要加上 TLS 并在传输层使用安全配置,例如 WebSocket 配置较长的 path
@@ -65,10 +65,10 @@
 必填。
 
 - 推荐的加密方式:
-    - AES-256-GCM
-    - AES-128-GCM
-    - ChaCha20-Poly1305 或称 ChaCha20-IETF-Poly1305
-    - none 或 plain
+  - AES-256-GCM
+  - AES-128-GCM
+  - ChaCha20-Poly1305 或称 ChaCha20-IETF-Poly1305
+  - none 或 plain
 
 > `password`: string
 
@@ -84,4 +84,4 @@ Shadowsocks 协议不限制密码长度,但短密码会更可能被破解,
 
 > `email`: string
 
-用户邮箱,用于区分不同用户的流量(日志、统计)。
\ No newline at end of file
+用户邮箱,用于区分不同用户的流量(日志、统计)。
diff --git a/docs/config/outbounds/trojan.md b/docs/config/outbounds/trojan.md
index 91d48b7..0e89752 100644
--- a/docs/config/outbounds/trojan.md
+++ b/docs/config/outbounds/trojan.md
@@ -75,9 +75,8 @@ Trojan 被设计工作在正确配置的加密 TLS 隧道
 
 此外,目前 XTLS 仅支持 TCP、mKCP、DomainSocket 这三种传输方式。
 
-<!-- prettier-ignore-start -->
-::: tip 关于 xtls-rprx-\*-udp443 流控模式 
-<!-- prettier-ignore-end -->
+<!-- prettier-ignore -->
+::: tip 关于 xtls-rprx-\*-udp443 流控模式
 
 启用了 Xray-core 的 XTLS 时,通往 UDP 443 端口的流量默认会被拦截(一般情况下为 QUIC),这样应用就不会使用 QUIC 而会使用 TLS,XTLS 才会真正生效。实际上,QUIC 本身也不适合被代理,因为 QUIC 自带了 TCP 的功能, 它作为 UDP 流量在通过 Trojan 协议传输时,底层协议为 TCP,就相当于两层 TCP 了。
 
diff --git a/docs/config/outbounds/vless.md b/docs/config/outbounds/vless.md
index 25f1b8d..f5b0d84 100644
--- a/docs/config/outbounds/vless.md
+++ b/docs/config/outbounds/vless.md
@@ -113,9 +113,8 @@ VLESS 的用户 ID,可以是任意小于 30 字节的字符串, 也可以是
 此外,目前 XTLS 仅支持 TCP、mKCP、DomainSocket 这三种传输方式。
 :::
 
-<!-- prettier-ignore-start -->
+<!-- prettier-ignore -->
 ::: tip 关于 xtls-rprx-*-udp443 流控模式
-<!-- prettier-ignore-end -->
 
 启用了 Xray-core 的 XTLS 时,通往 UDP 443 端口的流量默认会被拦截(一般情况下为 QUIC),这样应用就不会使用 QUIC 而会使用 TLS,XTLS 才会真正生效。实际上,QUIC 本身也不适合被代理,因为 QUIC 自带了 TCP 的功能,它作为 UDP 流量在通过 VLESS 协议传输时,底层协议为 TCP,就相当于两层 TCP 了。
 
diff --git a/docs/config/reverse.md b/docs/config/reverse.md
index bae37ce..b49fa87 100644
--- a/docs/config/reverse.md
+++ b/docs/config/reverse.md
@@ -114,13 +114,16 @@
 outbound:
 
 ```json
-({
+{
   "tag": "out",
   "protocol": "freedom",
   "settings": {
     "redirect": "127.0.0.1:80" // 将所有流量转发到网页服务器
   }
-},
+}
+```
+
+```json
 {
   "protocol": "vmess",
   "settings": {
@@ -137,32 +140,26 @@ outbound:
     ]
   },
   "tag": "interconn"
-})
+}
 ```
 
 路由配置:
 
 ```json
-"routing": {
-    "rules": [
-        {
-            "type": "field",
-            "inboundTag": [
-                "bridge"
-            ],
-            "domain": [
-                "full:test.xray.com"
-            ],
-            "outboundTag": "interconn"
-        },
-        {
-            "type": "field",
-            "inboundTag": [
-                "bridge"
-            ],
-            "outboundTag": "out"
-        }
-    ]
+{
+  "rules": [
+    {
+      "type": "field",
+      "inboundTag": ["bridge"],
+      "domain": ["full:test.xray.com"],
+      "outboundTag": "interconn"
+    },
+    {
+      "type": "field",
+      "inboundTag": ["bridge"],
+      "outboundTag": "out"
+    }
+  ]
 }
 ```
 
@@ -186,18 +183,21 @@ outbound:
 inbound:
 
 ```json
-({
+{
   "tag": "external",
-  "port": 80, // 开放 80 端口,用于接收外部的 HTTP 访问
+  "port": 80,
   "protocol": "dokodemo-door",
   "settings": {
     "address": "127.0.0.1",
     "port": 80,
     "network": "tcp"
   }
-},
+}
+```
+
+```json
 {
-  "port": 1024, // 用于接收 bridge 的连接
+  "port": 1024,
   "tag": "interconn",
   "protocol": "vmess",
   "settings": {
@@ -207,28 +207,24 @@ inbound:
       }
     ]
   }
-})
+}
 ```
 
 路由配置:
 
 ```json
-"routing": {
-    "rules": [
-        {
-            "type": "field",
-            "inboundTag": [
-                "external"
-            ],
-            "outboundTag": "portal"
-        },
-        {
-            "type": "field",
-            "inboundTag": [
-                "interconn"
-            ],
-            "outboundTag": "portal"
-        }
-    ]
+{
+  "rules": [
+    {
+      "type": "field",
+      "inboundTag": ["external"],
+      "outboundTag": "portal"
+    },
+    {
+      "type": "field",
+      "inboundTag": ["interconn"],
+      "outboundTag": "portal"
+    }
+  ]
 }
 ```
diff --git a/docs/config/transports/websocket.md b/docs/config/transports/websocket.md
index bee23a3..6806749 100644
--- a/docs/config/transports/websocket.md
+++ b/docs/config/transports/websocket.md
@@ -83,5 +83,3 @@ WebSocket 所使用的 HTTP 协议路径,默认值为 `"/"`。
 - 设置环境变量指定要监听的地址端口,比如 `XRAY_BROWSER_DIALER = 127.0.0.1:8080`。
 - 先运行 Xray-core,再用任一浏览器访问上面指定的地址端口,还可以 `F12` 看 `Console` 和 `Network`。
 - 浏览器会限制 WebSocket 连接数,所以建议开启 `Mux.Cool`。
-
-
diff --git a/docs/document/command.md b/docs/document/command.md
index 6e61707..143f560 100644
--- a/docs/document/command.md
+++ b/docs/document/command.md
@@ -1,6 +1,6 @@
 # 命令参数
 
-::: tip 
+::: tip
 Xray 使用 Go 风格的命令及参数
 :::
 
diff --git a/docs/document/level-0/ch01-preface.md b/docs/document/level-0/ch01-preface.md
index 11b2d44..9323bc0 100644
--- a/docs/document/level-0/ch01-preface.md
+++ b/docs/document/level-0/ch01-preface.md
@@ -29,7 +29,7 @@
 一、科学上网这件事
 
 科学上网这件事情,说来已经发展了近二十年(震惊!!!.jpg)。最初,自己稍微动动手即可(改改 host、连一下 ssh)、后来需要找一个网页代理,再后来需要写一个私有协议(比如 Shadowsocks)等等。
-  
+
 随着 GFW 技术这十几年来不断的迭代升级,若要完成【自己动手科学上网】这个目标,需要做的事情已经包括但不限于:
 
     1. 了解Linux系统基本命令
diff --git a/docs/document/level-0/ch04-security.md b/docs/document/level-0/ch04-security.md
index 0d73b81..d3aee33 100644
--- a/docs/document/level-0/ch04-security.md
+++ b/docs/document/level-0/ch04-security.md
@@ -77,10 +77,9 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
    - 删除 `22` 并改成 `9753`
    - 说明:如果这一行开头有个`#`,证明这一行【不生效】(被注释掉了),你可像我一样在文件最后写一个不带`#`的,或者把`#`删掉就好。
 
-
-    ::: warning 注意
-    本文以`9753`为例,就意味着随着本文的发布,这个端口会变成一个不大不小的特征,也许会被攻击者优先尝试、也许被GFW干扰、阻断。所以我强烈建议你用一个自己想到的其他端口,毕竟,你有6万多个端口可以自由选择。
-    :::
+   ::: warning
+   注意 本文以`9753`为例,就意味着随着本文的发布,这个端口会变成一个不大不小的特征,也许会被攻击者优先尝试、也许被 GFW 干扰、阻断。所以我强烈建议你用一个自己想到的其他端口,毕竟,你有 6 万多个端口可以自由选择。
+   :::
 
 6. 我们要做的第三件事,是【保存文件并退出】
 
@@ -121,16 +120,16 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
    # adduser vpsadmin
    ```
 
-    执行命令后,根据提示操作即可。请务必设置一个用户密码(别忘记设置密码时你时看不到 `******` 的)。之后系统会询问你一些用户的附加信息,这些就可以无视,一路回车即可。
+   执行命令后,根据提示操作即可。请务必设置一个用户密码(别忘记设置密码时你时看不到 `******` 的)。之后系统会询问你一些用户的附加信息,这些就可以无视,一路回车即可。
 
-    ![建立新用户](./ch04-img03-adduser.png)
+   ![建立新用户](./ch04-img03-adduser.png)
 
 ::: warning 注意
 本文以`vpsadmin`为例,就意味着随着本文的发布,这个用户名也会变成一个不大不小的特征,也许会被攻击者优先尝试。所以和端口一样,我强烈建议你用一个自己想到的其他用户名。
 :::
 
 4. 完整流程演示如下:
-   
+
    ![建立新用户](./ch04-img04-adduser-full.gif)
 
 5. 我们要做的第二件事,是【安装`sudo`功能】(`sudo` 就是在关键时刻,让普通账户临时获得 `root` 的神力,战力全开拯救世界)
@@ -139,7 +138,8 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
    # apt update && apt install sudo
    ```
 
-   聪明的你大概已经发现,这一行命令其实是两个命令。前一半 `apt update` 你之前已经见过并且用过了,是去服务器刷新软件版本信息。后面的 `apt install` 就是这一次要用到的【安装命令】。两条连接在一起,就是让系统去【刷新可用的最新软件,然后安装最新版的`sudo`程序】。 `&&` 则是把两个命令连起来执行的意思。
+   聪明的你大概已经发现,这一行命令其实是两个命令。前一半 `apt update` 你之前已经见过并且用过了,是去服务器刷新软件版本信息。后面的 `apt install`
+   就是这一次要用到的【安装命令】。两条连接在一起,就是让系统去【刷新可用的最新软件,然后安装最新版的`sudo`程序】。 `&&` 则是把两个命令连起来执行的意思。
 
 6. 我们要做的第三件事,是【把`vpsadmin`用户加入`sudo`名单里,让他有资格借用`root`的神力】
 
@@ -149,15 +149,15 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
 
    在 `User Privilege Specification` 下加入一行 `vpsadmin ALL=(ALL) NOPASSWD: ALL` 即可。
 
+   ::: warning 注意 我要特别说明的是`NOPASSWD`这个设置,它的意思是`vpsadmin`用户临时使用`root`权限时,不用额外输入密码。**这与一般的安全建议相反**
+   。我之所以如此推荐,是因为很多新人不顾危险坚持使用`root`账号就是因为用`root`时不用重复输入密码、觉得轻松。“两害相权取其轻”,我认为【直接用`root`用户的风险】大于【使用`sudo`
+   时不用输密码的风险】,所以做了以上的建议。
 
-    ::: warning 注意
-    我要特别说明的是`NOPASSWD`这个设置,它的意思是`vpsadmin`用户临时使用`root`权限时,不用额外输入密码。**这与一般的安全建议相反**。我之所以如此推荐,是因为很多新人不顾危险坚持使用`root`账号就是因为用`root`时不用重复输入密码、觉得轻松。“两害相权取其轻”,我认为【直接用`root`用户的风险】大于【使用`sudo`时不用输密码的风险】,所以做了以上的建议。
-
-    如果你希望遵守传统习惯、每次使用`sudo`时需要输入密码,那么这一行改成 `vpsadmin ALL=(ALL:ALL) ALL` 即可。
-    :::
+   如果你希望遵守传统习惯、每次使用`sudo`时需要输入密码,那么这一行改成 `vpsadmin ALL=(ALL:ALL) ALL` 即可。
+   :::
 
 7. 完整流程演示如下:
-   
+
    ![建立新用户](./ch04-img05-sudo-full.gif)
 
 ## 4.6 禁用 root 用户 SSH 远程登录
@@ -185,7 +185,7 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
    ```
 
 5. 完整流程演示如下:
-  
+
    ![禁用root用户SSH远程登录](./ch04-img06-ssh-no-root-full.gif)
 
 6. 下次通过 PuTTY 远程 SSH 登录的时候,`root`用户已无法连接,用户名就要换成`vpsadmin`了!方便起见,我们可以在 PuTTY 中把`vpsadmin`设置成默认登录用户名。(啰嗦君:别忘了保存 Session)
@@ -251,7 +251,7 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
       ![本地和远程文件夹](./ch04-img12-winscp-locations.png)
 
    6. 在右边(VPS 中)点击右键并新建文件夹,起名`.ssh` (注意有一个`.`)
-      
+
       ![在VPS中建立放置公钥的文件夹](./ch04-img13-winscp-newfolder-key.png)
 
    7. 将【公钥】`authorized_keys`上传到`.ssh`文件夹内
@@ -299,14 +299,13 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
       ```
 
    8. 完整流程如下:
-      
+
       ![SSH开启密钥验证并禁用密码验证](./ch04-img17-rsa-login-full.gif)
 
 4. VPS 端已经设置好了公钥,现在要给 PuTTY 指定私钥位置供登录时使用(啰嗦君:别忘了保存 Session)
 
    ![PuTTY指定私钥位置](./ch04-img18-putty-privatekey-location.png)
 
-
 5. 至此,【密钥登录】已成功开启、【密码验证】已成功关闭、并且还给 PuTTY 保存了默认的登录用户名和私钥。未来使用 PuTTY 登录时,载入`VPS-SERVER`配置后,点击`Open`就可以一键登录了。
 
    如果你给私钥设置了密码保护,登录时当然还需要输入这个密码才能使用密钥,如下图:
diff --git a/package.json b/package.json
index 9ca8ac7..5ec1564 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
     "@types/bootstrap": "^5.0.11",
     "@types/jquery": "^3.5.5",
     "@vuepress/plugin-back-to-top": "^1.8.2",
+    "prettier": "^2.2.1",
     "sass": "^1.32.8",
     "sass-loader": "^8.0.2",
     "vue-property-decorator": "^9.1.2",
@@ -16,7 +17,8 @@
   },
   "scripts": {
     "docs:dev": "vuepress dev docs",
-    "docs:build": "vuepress build docs"
+    "docs:build": "vuepress build docs",
+    "lint": "prettier --write ."
   },
   "dependencies": {
     "@popperjs/core": "^2.9.1",
diff --git a/yarn.lock b/yarn.lock
index d963d23..95e876f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6398,6 +6398,11 @@ prettier@^1.18.2:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
   integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
 
+prettier@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
+  integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==
+
 pretty-error@^2.0.2:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6"
@@ -8103,11 +8108,6 @@ vuepress-plugin-smooth-scroll@^0.0.3:
   dependencies:
     smoothscroll-polyfill "^0.4.3"
 
-vuepress-theme-default-prefers-color-scheme@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/vuepress-theme-default-prefers-color-scheme/-/vuepress-theme-default-prefers-color-scheme-2.0.0.tgz#c5d305b1b4d10d0915b4bb413e554966d5171b25"
-  integrity sha512-4sA3DCiaIIHVjcIC5+mF00mf29IU27KSH97Ga4xb4nUwwlC6eYHg2qchEVOgV25XogCtGgpZ/DCrTkywxvuBcg==
-
 vuepress@^1.8.2:
   version "1.8.2"
   resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.8.2.tgz#97e8bf979630611fc7b621fc4cc35b798ee5e847"