Unverified Commit 0ccb5108 authored by Angel_Kitty's avatar Angel_Kitty Committed by GitHub
Browse files

Merge pull request #1872 from Anti-Li/master

feat(intro/wsl): add content. fix format.
parents 1f4c170f c82524be
Loading
Loading
Loading
Loading
+53.7 KiB (121 KiB)
Loading image diff...
+254 KiB (310 KiB)
Loading image diff...
+74 −37
Original line number Diff line number Diff line
author: Anti-Li

![头图](./images/WSL1.png)

* * *
@@ -8,7 +10,6 @@
![NOI 竞赛的环境要求](./images/WSL2.png)

<div align='center'> NOI 竞赛的环境要求 </div>

或许大家对自己 Windows 环境下的 Dev-C++ 等都已熟识,但是当场景突然切换到 Linux 的时候,你会不会不知所措?

> 「想用<kbd>Ctrl</kbd>+<kbd>C</kbd>复制,结果退出了程序」  
@@ -17,48 +18,81 @@
![平台差异(转自百度文库”NOIP 标准评测系统及相关问题“)](./images/WSL3.png)

<div align='center'> 平台差异(转自百度文库“NOIP 标准评测系统及相关问题”) </div>
    
为了防止考场上出现此类尴尬情况,我们必须要提前熟悉下 Linux 系统的操作方法。

虽然在 NOI 的官网已经放出了 NOI Linux 的 ISO 镜像,但是如果跑虚拟机的话,配置也相当麻烦,包括激活 VMware,用 VMware 装系统开虚拟机等步骤,且 NOI Linux 默认自带图形界面,两个系统一起运行是低配党的噩梦。

Windows 10 作为微软的新一代操作系统,紧跟时代潮流,在一周年更新时推出了 Linux 子系统(WSL),可以供装不起 VMware 等虚拟机的同学食用。  
缺点是没有 NOI 评测用的 **Arbiter** ,但是在各大 OJ 背书的情况下谁在乎呢……
???+ note "补充资料:何为 Linux 子系统(WSL)?(via 百度百科)"
     Windows Subsystem for Linux(简称 WSL)是一个为在 Windows 10 上能够原生运行 Linux 二进制可执行文件(ELF 格式)的兼容层。它是由微软与 Canonical 公司合作开发,目标是使纯正的 Ubuntu, OpenSUSE, Kali Linux 和 Debian 映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。  
WSL 提供了一个微软开发的 Linux 兼容内核接口(不包含 Linux 代码),来自 Linux 的用户模式二进制文件在其上运行。  
此子系统起源于命运多舛的 Astoria 项目,其目的是允许 Android 应用运行在 Windows 10 Mobile 上。此功能组件从 Windows 10 Insider Preview build 14316 开始可用。
???+ note "补充资料:何为 Linux 子系统(WSL)?(via 维基百科)"
    适用于 Linux 的 Windows 子系统(英语:Windows Subsystem for Linux,简称 WSL)是一个为在 Windows 10 和 Windows Server 2019 上能够原生运行 Linux 二进制可执行文件(ELF 格式)的兼容层。

    WSL提供了一个由微软开发的Linux兼容的内核接口(不包含Linux内核代码),然后可以在其上运行GNU用户空间,例如Ubuntu,openSUSE,SUSE Linux Enterprise Server,Debian和Kali Linux。这样的用户空间可能包含Bash shell和命令语言,使用本机GNU/Linux命令行工具(sed,awk等),编程语言解释器(Ruby,Python等),甚至是图形应用程序(使用主机端的X窗口系统)。

    WSL仅在版本1607之后的64位版本的Windows 10中可用。它也可在Windows Server 2019中使用。

* * *

## 准备
## 启用 WSL

???+ warning
    本部分适用于 Windows 10 Fall Creators Update(也即内部版本 16215)和更高版本。

在安装适用于 WSL 的任何 Linux 分发版之前,你必须在下述两种方法中选择一种,以确保启用“适用于 Linux 的 Windows 子系统”可选功能:

### 使用 Powershell

1.  以管理员身份打开 PowerShell 并运行:
    ```powershell
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    ```
2.  出现提示时,重启计算机。

### 使用 GUI

![](./images/WSL4.png)

1.  打开“控制面板”

首先,你需要一个最新的 Windows 10 操作系统,这点不必多说。  
其次,你需要配置一下开发人员模式环境。
2.  访问“程序和功能”子菜单“打开或关闭 Windows 功能”

1.  设置 -> 更新与安全 -> 开发人员模式框选 -> 是![来,跟着箭头走](./images/WSL4.png)<br /><div align='center'>来,跟着箭头走</div>
2.  控制面板 -> 程序 -> 启用和关闭 Windows 功能 -> 框选“适用于 Linux 的 Windows 子系统”-> 确定 -> 重启![自行忽略乱码](./images/WSL5.png)给系统盘留下足够的空间,毕竟装好的 Linux 没法迁移。
    这次演示我们会安装 Ubuntu,因为 NOI Linux 正是 Ubuntu 的修改版。
    只要学会了方法,你也可照葫芦画瓢,安装 Windows 应用商店中的其他子系统。
3.  选择“适用于 Linux 的 Windows 子系统”

## 开搞
4.  点击确定

去 Windows 自带的应用商店,搜索 "Ubuntu",然后选第一个安装。  
5.  重启

## 使用 Ubuntu

这次演示我们使用 Ubuntu,因为 NOI Linux 正是基于 Ubuntu 14.04 LTS 的 Linux 发行版。

只要学会了方法,你也可照葫芦画瓢,安装其他 Linux 发行版。

### 安装

![](./images/WSL5.png)进入 Microsoft Store,搜索 "Ubuntu",然后选第一个安装。  
亦可打开 <https://www.microsoft.com/zh-cn/p/ubuntu/9nblggh4msv6> 

???+ warning
    Windows 10 商店的第一个 Ubuntu 随着 Ubuntu 的更新而更新,因此内容可能会有所改变。
    可使用 `sudo lsb_release -a` 查看自己的 Ubuntu 版本。
    也可安装带有版本号的旧 Linux 版本(如本次演示使用了 **16.04** )。
安装完后,打开 Ubuntu,等待一段时间,让其自己配置,不久就会提示你设置用户名和密码。  
(这里看你喜好,推荐设置短点,毕竟 **本地环境不怕攻击**
    Microsoft Store 的 Ubuntu 随着 Ubuntu 的更新而更新,因此内容可能会有所改变。
    
 **Linux 区分大小写!** 
    如果你想获取稳定的 Ubuntu 长期支持版,可以在 Microsoft Store 安装 Ubuntu 的 LTS 版本。
    
![](./images/WSL6.png)这样之后,一个纯净的 Ubuntu 系统安装完成了!
    如本次演示中使用的是 **Ubuntu 16.04 LTS**

## 基础配置
### 运行 Ubuntu

 **以下命令均可直接右键复制粘贴进窗口哦!** 
打开“开始”菜单找到 Ubuntu 并启动,或使用 wsl 命令从 Windows 命令行启动。

可以为 Ubuntu 创建应用程序磁贴或固定至任务栏,以在下次方便地打开。

### 初始化

第一次运行 Ubuntu,需要完成初始化。

等待一两分钟时间,系统会提示创建新的用户帐户及其密码,请确保选择一个容易记住的密码。![](./images/WSL6.png)

## 基础配置

![](./images/WSL7.png)正如图片所示,这个系统纯净到连个编译器都没有,所以这一节来看看基础的环境配置。

@@ -69,7 +103,7 @@ Ubuntu 默认的软件源在国外,我们可以换为国内的加快速度,
可以访问 [TUNA 的页面](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/) 来获得国内源的信息。

???+ warning  
     **请在页面中寻找与自己系统版本相配的源(可使用 `sudo lsb_release -a` 查看,具体详见 `0x03` )**  **除非你知道你在做什么,否则不要使用与自己的系统版本不匹配的源!** 
     **请在页面中寻找与自己系统版本相配的源(可使用 `sudo lsb_release -a` 查看 Ubuntu 版本)**  **除非你知道你在做什么,否则不要使用与自己的系统版本不匹配的源!** 

使用的命令

@@ -204,7 +238,6 @@ xfce4-session
![](./images/WSL20.png)

<div align='center'> 达成成就:Windows+Linux 二合一 </div>

### 与 Windows 内原硬盘分区交互

硬盘分区作为文件夹在 `/mnt/` 里放着,因此可以直接交互,比如说直接编译个二进制文件,或者往 Ubuntu 里传文件什么的……  
@@ -231,16 +264,20 @@ xfce4-session

这里列举了文中提到的链接,以便查阅。

1.   [NOIP 标准评测系统及相关问题,smart0326, 2014-05-19, 百度文库](https://wenku.baidu.com/view/8246d96cdd36a32d72758143.html) 
2.   [WSL, 百度百科](https://baike.baidu.com/item/wsl/20359185) 
3.   [Run Bash on Ubuntu on Windows, Mike Harsh, 2016-05-30, Windows Blog](https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/#cie8WdR3uSjgR5Ru.97) 
4.   [Windows Subsystem for Linux Documentation, MSDN](https://docs.microsoft.com/zh-cn/windows/wsl/about) 
5.   [NOI 系列活动标准竞赛环境,2016-11-08, NOI 官网](http://www.noi.cn/2016-11-08-03-42-01) 
6.   [购买 Ubuntu, Microsoft Store](https://www.microsoft.com/zh-cn/p/ubuntu/9nblggh4msv6) 
7.   [Ubuntu 镜像使用帮助,清华 TUNA](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/) 
8.   [Ubuntu 的 man 命令帮助如何设置中文版,Frank 看庐山,2017-06-09](https://blog.csdn.net/qq_14989227/article/details/72954523) 
9.   [Xming X Server for Windows, SourceForge](https://sourceforge.net/projects/xming/) 
10.  [Sudo, Wikipedia](https://zh.wikipedia.org/wiki/Sudo) 
1.   [适用于 Linux 的 Windows 子系统安装指南 (Windows 10), Microsoft Docs](https://docs.microsoft.com/zh-cn/windows/wsl/install-win10) 
2.   [适用于 Linux 的 Windows 子系统,Wikipedia](https://zh.wikipedia.org/zh-hans/%E9%80%82%E7%94%A8%E4%BA%8E_Linux_%E7%9A%84_Windows_%E5%AD%90%E7%B3%BB%E7%BB%9F) 
3.   [WSL-Ubuntu 维基,ubuntu wiki](https://wiki.ubuntu.com/WSL) 
4.   [Windows 10 版本 1803 中命令行的新增功能,Microsoft Devblogs](https://devblogs.microsoft.com/commandline/windows10v1803/) 
5.   [NOIP 标准评测系统及相关问题,smart0326, 2014-05-19, 百度文库](https://wenku.baidu.com/view/8246d96cdd36a32d72758143.html) 
6.   [WSL, 百度百科](https://baike.baidu.com/item/wsl/20359185) 
7.   [Run Bash on Ubuntu on Windows, Mike Harsh, 2016-05-30, Windows Blog](https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/#cie8WdR3uSjgR5Ru.97) 
8.   [Windows Subsystem for Linux Documentation, MSDN](https://docs.microsoft.com/zh-cn/windows/wsl/about) 
9.   [NOI 系列活动标准竞赛环境,2016-11-08, NOI 官网](http://www.noi.cn/2016-11-08-03-42-01) 
10.  [购买 Ubuntu, Microsoft Store](https://www.microsoft.com/zh-cn/p/ubuntu/9nblggh4msv6) 
11.  [Ubuntu 镜像使用帮助,清华 TUNA](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/) 
12.  [Ubuntu 的 man 命令帮助如何设置中文版,Frank 看庐山,2017-06-09](https://blog.csdn.net/qq_14989227/article/details/72954523) 
13.  [Xming X Server for Windows, SourceForge](https://sourceforge.net/projects/xming/) 
14.  [Sudo, Wikipedia](https://zh.wikipedia.org/wiki/Sudo) 

## 延伸内容

+143 −18
Original line number Diff line number Diff line
@@ -1706,7 +1706,8 @@
        },
        "ansi-regex": {
          "version": "2.1.1",
          "bundled": true
          "bundled": true,
          "optional": true
        },
        "aproba": {
          "version": "1.2.0",
@@ -1724,11 +1725,13 @@
        },
        "balanced-match": {
          "version": "1.0.0",
          "bundled": true
          "bundled": true,
          "optional": true
        },
        "brace-expansion": {
          "version": "1.1.11",
          "bundled": true,
          "optional": true,
          "requires": {
            "balanced-match": "^1.0.0",
            "concat-map": "0.0.1"
@@ -1741,15 +1744,18 @@
        },
        "code-point-at": {
          "version": "1.1.0",
          "bundled": true
          "bundled": true,
          "optional": true
        },
        "concat-map": {
          "version": "0.0.1",
          "bundled": true
          "bundled": true,
          "optional": true
        },
        "console-control-strings": {
          "version": "1.1.0",
          "bundled": true
          "bundled": true,
          "optional": true
        },
        "core-util-is": {
          "version": "1.0.2",
@@ -1852,7 +1858,8 @@
        },
        "inherits": {
          "version": "2.0.3",
          "bundled": true
          "bundled": true,
          "optional": true
        },
        "ini": {
          "version": "1.3.5",
@@ -1862,6 +1869,7 @@
        "is-fullwidth-code-point": {
          "version": "1.0.0",
          "bundled": true,
          "optional": true,
          "requires": {
            "number-is-nan": "^1.0.0"
          }
@@ -1874,17 +1882,20 @@
        "minimatch": {
          "version": "3.0.4",
          "bundled": true,
          "optional": true,
          "requires": {
            "brace-expansion": "^1.1.7"
          }
        },
        "minimist": {
          "version": "0.0.8",
          "bundled": true
          "bundled": true,
          "optional": true
        },
        "minipass": {
          "version": "2.3.5",
          "bundled": true,
          "optional": true,
          "requires": {
            "safe-buffer": "^5.1.2",
            "yallist": "^3.0.0"
@@ -1901,6 +1912,7 @@
        "mkdirp": {
          "version": "0.5.1",
          "bundled": true,
          "optional": true,
          "requires": {
            "minimist": "0.0.8"
          }
@@ -1973,7 +1985,8 @@
        },
        "number-is-nan": {
          "version": "1.0.1",
          "bundled": true
          "bundled": true,
          "optional": true
        },
        "object-assign": {
          "version": "4.1.1",
@@ -1983,6 +1996,7 @@
        "once": {
          "version": "1.4.0",
          "bundled": true,
          "optional": true,
          "requires": {
            "wrappy": "1"
          }
@@ -2058,7 +2072,8 @@
        },
        "safe-buffer": {
          "version": "5.1.2",
          "bundled": true
          "bundled": true,
          "optional": true
        },
        "safer-buffer": {
          "version": "2.1.2",
@@ -2088,6 +2103,7 @@
        "string-width": {
          "version": "1.0.2",
          "bundled": true,
          "optional": true,
          "requires": {
            "code-point-at": "^1.0.0",
            "is-fullwidth-code-point": "^1.0.0",
@@ -2105,6 +2121,7 @@
        "strip-ansi": {
          "version": "3.0.1",
          "bundled": true,
          "optional": true,
          "requires": {
            "ansi-regex": "^2.0.0"
          }
@@ -2143,11 +2160,13 @@
        },
        "wrappy": {
          "version": "1.0.2",
          "bundled": true
          "bundled": true,
          "optional": true
        },
        "yallist": {
          "version": "3.0.3",
          "bundled": true
          "bundled": true,
          "optional": true
        }
      }
    },
@@ -3343,6 +3362,14 @@
        "kind-of": "^6.0.2"
      }
    },
    "map-age-cleaner": {
      "version": "0.1.3",
      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
      "requires": {
        "p-defer": "^1.0.0"
      }
    },
    "map-cache": {
      "version": "0.2.2",
      "resolved": "http://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz",
@@ -3551,6 +3578,11 @@
      "resolved": "http://registry.npm.taobao.org/next-tick/download/next-tick-1.0.0.tgz",
      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
    },
    "nice-try": {
      "version": "1.0.5",
      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
    },
    "no-case": {
      "version": "2.3.2",
      "resolved": "http://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz",
@@ -3783,11 +3815,21 @@
        "mem": "^1.1.0"
      }
    },
    "p-defer": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww="
    },
    "p-finally": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
    },
    "p-is-promise": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg=="
    },
    "p-limit": {
      "version": "1.3.0",
      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
@@ -4636,9 +4678,9 @@
      }
    },
    "remark-details": {
      "version": "1.7.0",
      "resolved": "https://registry.npmjs.org/remark-details/-/remark-details-1.7.0.tgz",
      "integrity": "sha512-BtFq5Ih+8Io5ueayB0BraLStmyBUiob65GvsdwEYL7Uz0fwyPhyiAPm+1n5XB7YK1uDSRljPpB9mCdiGC03x4g=="
      "version": "1.8.0",
      "resolved": "https://registry.npmjs.org/remark-details/-/remark-details-1.8.0.tgz",
      "integrity": "sha512-O8kGnRneRV3Y8zD6UKjhXB1K/X8VkeGg3uQvz3reRgMvv8REJfF15etmqXLo84L8OvmvKFycOLR+ZtmdIpzmWw=="
    },
    "remark-lint": {
      "version": "6.0.2",
@@ -6443,15 +6485,15 @@
      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
    },
    "yargs": {
      "version": "11.1.0",
      "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
      "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
      "version": "11.1.1",
      "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz",
      "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==",
      "requires": {
        "cliui": "^4.0.0",
        "decamelize": "^1.1.1",
        "find-up": "^2.1.0",
        "get-caller-file": "^1.0.1",
        "os-locale": "^2.0.0",
        "os-locale": "^3.1.0",
        "require-directory": "^2.1.1",
        "require-main-filename": "^1.0.1",
        "set-blocking": "^2.0.0",
@@ -6459,6 +6501,89 @@
        "which-module": "^2.0.0",
        "y18n": "^3.2.1",
        "yargs-parser": "^9.0.2"
      },
      "dependencies": {
        "cross-spawn": {
          "version": "6.0.5",
          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
          "requires": {
            "nice-try": "^1.0.4",
            "path-key": "^2.0.1",
            "semver": "^5.5.0",
            "shebang-command": "^1.2.0",
            "which": "^1.2.9"
          }
        },
        "execa": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
          "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
          "requires": {
            "cross-spawn": "^6.0.0",
            "get-stream": "^4.0.0",
            "is-stream": "^1.1.0",
            "npm-run-path": "^2.0.0",
            "p-finally": "^1.0.0",
            "signal-exit": "^3.0.0",
            "strip-eof": "^1.0.0"
          }
        },
        "get-stream": {
          "version": "4.1.0",
          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
          "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
          "requires": {
            "pump": "^3.0.0"
          }
        },
        "invert-kv": {
          "version": "2.0.0",
          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
          "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
        },
        "lcid": {
          "version": "2.0.0",
          "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
          "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
          "requires": {
            "invert-kv": "^2.0.0"
          }
        },
        "mem": {
          "version": "4.3.0",
          "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
          "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
          "requires": {
            "map-age-cleaner": "^0.1.1",
            "mimic-fn": "^2.0.0",
            "p-is-promise": "^2.0.0"
          }
        },
        "mimic-fn": {
          "version": "2.1.0",
          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
        },
        "os-locale": {
          "version": "3.1.0",
          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
          "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
          "requires": {
            "execa": "^1.0.0",
            "lcid": "^2.0.0",
            "mem": "^4.0.0"
          }
        },
        "pump": {
          "version": "3.0.0",
          "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
          "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
          "requires": {
            "end-of-stream": "^1.1.0",
            "once": "^1.3.1"
          }
        }
      }
    },
    "yargs-parser": {
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@
    "mathjax-node-page": "^3.0.1",
    "remark-clang-format": "^1.0.1",
    "remark-copywriting-correct": "^0.5.0",
    "remark-details": "^1.7.0",
    "remark-details": "^1.8.0",
    "remark-lint-final-newline": "^1.0.2",
    "remark-lint-no-tabs": "^1.0.2",
    "remark-math": "^1.0.5",