mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2025-01-30 14:31:40 +03:00
Chore: lint
This commit is contained in:
parent
f44afc3110
commit
effaa0e7ed
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -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)"
|
||||
|
16
.github/workflows/prettier.yml
vendored
16
.github/workflows/prettier.yml
vendored
@ -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
|
||||
|
4
.prettierignore
Normal file
4
.prettierignore
Normal file
@ -0,0 +1,4 @@
|
||||
node_modules/
|
||||
.vuepress/dist
|
||||
.temp/
|
||||
dist/
|
@ -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")] },
|
||||
};
|
||||
|
@ -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>
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
extend: "@vuepress/theme-default"
|
||||
extend: "@vuepress/theme-default",
|
||||
};
|
||||
|
@ -7,8 +7,8 @@ import ParentLayout from "@parent-theme/layouts/Layout.vue";
|
||||
import Vue from "vue";
|
||||
export default Vue.extend({
|
||||
components: {
|
||||
ParentLayout
|
||||
}
|
||||
ParentLayout,
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -21,6 +21,7 @@ sidebar: auto
|
||||
|
||||
## 2021.3.25
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
没错还在变。 -_-
|
||||
|
||||
## 2021.3.15
|
||||
|
@ -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
|
||||
|
||||
用户邮箱,用于区分不同用户的流量(日志、统计)。
|
||||
用户邮箱,用于区分不同用户的流量(日志、统计)。
|
||||
|
@ -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 了。
|
||||
|
||||
|
@ -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 了。
|
||||
|
||||
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
@ -83,5 +83,3 @@ WebSocket 所使用的 HTTP 协议路径,默认值为 `"/"`。
|
||||
- 设置环境变量指定要监听的地址端口,比如 `XRAY_BROWSER_DIALER = 127.0.0.1:8080`。
|
||||
- 先运行 Xray-core,再用任一浏览器访问上面指定的地址端口,还可以 `F12` 看 `Console` 和 `Network`。
|
||||
- 浏览器会限制 WebSocket 连接数,所以建议开启 `Mux.Cool`。
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# 命令参数
|
||||
|
||||
::: tip
|
||||
::: tip
|
||||
Xray 使用 Go 风格的命令及参数
|
||||
:::
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
一、科学上网这件事
|
||||
|
||||
科学上网这件事情,说来已经发展了近二十年(震惊!!!.jpg)。最初,自己稍微动动手即可(改改 host、连一下 ssh)、后来需要找一个网页代理,再后来需要写一个私有协议(比如 Shadowsocks)等等。
|
||||
|
||||
|
||||
随着 GFW 技术这十几年来不断的迭代升级,若要完成【自己动手科学上网】这个目标,需要做的事情已经包括但不限于:
|
||||
|
||||
1. 了解Linux系统基本命令
|
||||
|
@ -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`就可以一键登录了。
|
||||
|
||||
如果你给私钥设置了密码保护,登录时当然还需要输入这个密码才能使用密钥,如下图:
|
||||
|
@ -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",
|
||||
|
10
yarn.lock
10
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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user