feat: 添加站点文档

This commit is contained in:
neo 2021-01-25 19:03:15 +08:00
parent b6ba2389a7
commit 6cf7c394a8
25 changed files with 1332 additions and 1206 deletions

View File

@ -0,0 +1,10 @@
@import (reference) '../style/variables.less';
.@{prefix}-center {
text-align: center;
margin: 16px 0;
h2 > a::after {
display: none !important;
}
}

View File

@ -0,0 +1,6 @@
import React from 'react';
import './Center.less';
export default (props: any) => (
<div className="__dumi-default-center" {...props} />
);

128
.dumi/theme/layout.tsx Normal file
View File

@ -0,0 +1,128 @@
import React, { useContext, useState, useEffect } from 'react';
import { IRouteComponentProps } from '@umijs/types';
import { context, Link } from 'dumi/theme';
import Navbar from 'dumi-theme-default/src/components/Navbar';
import SideMenu from 'dumi-theme-default/src/components/SideMenu';
import SlugList from 'dumi-theme-default/src/components/SlugList';
import SearchBar from 'dumi-theme-default/src/components/SearchBar';
import './style/layout.less';
const Hero = hero => (
<>
<div className="__dumi-default-layout-hero">
{hero.image && <img src={hero.image} />}
<h1>{hero.title}</h1>
<div dangerouslySetInnerHTML={{ __html: hero.desc }} />
{hero.actions &&
hero.actions.map(action => (
<Link to={action.link} key={action.text}>
<button type="button">{action.text}</button>
</Link>
))}
</div>
</>
);
const Features = features => (
<div className="__dumi-default-layout-features">
{features.map(feat => (
<dl
key={feat.title}
style={{ backgroundImage: feat.icon ? `url(${feat.icon})` : undefined }}
>
{feat.link ? (
<Link to={feat.link}>
<dt>{feat.title}</dt>
</Link>
) : (
<dt>{feat.title}</dt>
)}
<dd dangerouslySetInnerHTML={{ __html: feat.desc }} />
</dl>
))}
</div>
);
const Layout: React.FC<IRouteComponentProps> = ({ children, location }) => {
const {
config: { mode, repository },
meta,
locale,
} = useContext(context);
const { url: repoUrl, branch, platform } = repository;
const [menuCollapsed, setMenuCollapsed] = useState<boolean>(true);
const isSiteMode = mode === 'site';
const showHero = isSiteMode && meta.hero;
const showFeatures = isSiteMode && meta.features;
const showSideMenu =
meta.sidemenu !== false && !showHero && !showFeatures && !meta.gapless;
const showSlugs =
!showHero &&
!showFeatures &&
Boolean(meta.slugs?.length) &&
(meta.toc === 'content' || meta.toc === undefined) &&
!meta.gapless;
const isCN = /^zh|cn$/i.test(locale);
const updatedTime: any = new Date(meta.updatedTime).toLocaleString([], {
hour12: false,
});
const repoPlatform =
{ github: 'GitHub', gitlab: 'GitLab' }[
(repoUrl || '').match(/(github|gitlab)/)?.[1] || 'nothing'
] || platform;
return (
<div
className="__dumi-default-layout"
data-route={location.pathname}
data-show-sidemenu={String(showSideMenu)}
data-show-slugs={String(showSlugs)}
data-site-mode={isSiteMode}
data-gapless={String(!!meta.gapless)}
onClick={() => {
if (menuCollapsed) return;
setMenuCollapsed(true);
}}
>
<Navbar
location={location}
navPrefix={<SearchBar />}
onMobileMenuClick={ev => {
setMenuCollapsed(val => !val);
ev.stopPropagation();
}}
/>
<SideMenu mobileMenuCollapsed={menuCollapsed} location={location} />
{showSlugs && (
<SlugList slugs={meta.slugs} className="__dumi-default-layout-toc" />
)}
{showHero && Hero(meta.hero)}
{showFeatures && Features(meta.features)}
<div className="__dumi-default-layout-content">
{children}
{!showHero && !showFeatures && meta.filePath && !meta.gapless && (
<div className="__dumi-default-layout-footer-meta">
{repoPlatform && (
<Link to={`${repoUrl}/edit/${branch}/${meta.filePath}`}>
{isCN
? `${repoPlatform} 上编辑此页`
: `Edit this doc on ${repoPlatform}`}
</Link>
)}
<span data-updated-text={isCN ? '最后更新时间:' : 'Last update: '}>
{updatedTime}
</span>
</div>
)}
{(showHero || showFeatures) && meta.footer && (
<div
className="__dumi-default-layout-footer"
dangerouslySetInnerHTML={{ __html: meta.footer }}
/>
)}
</div>
</div>
);
};
export default Layout;

View File

@ -0,0 +1,316 @@
@import './markdown.less';
@import './variables.less';
@s-toc-width: 136px;
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, PingFang SC,
Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica, Arial,
sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
font-variant: tabular-nums;
font-feature-settings: 'tnum';
}
.@{prefix}-layout {
box-sizing: border-box;
min-height: 100vh;
padding: 16px (@s-content-margin + @s-toc-width) 50px @s-menu-width +
@s-content-margin;
@media @mobile {
padding-top: 66px !important;
padding-left: 16px !important;
padding-right: 16px !important;
}
&[data-gapless='true'] {
padding-top: @s-nav-height !important;
padding-right: 0 !important;
padding-left: 0 !important;
padding-bottom: 0;
@media @mobile {
padding-top: @s-mobile-nav-height !important;
}
}
&[data-show-sidemenu='false'] {
padding-left: @s-content-margin;
}
&[data-show-slugs='false'] {
padding-right: @s-content-margin;
}
&[data-site-mode='true'] {
padding-top: @s-nav-height + 50px;
&[data-show-sidemenu='true'] {
padding-left: @s-site-menu-width + 50px;
}
&[data-show-slugs='true'] {
padding-right: @s-content-margin + @s-toc-width + 14;
}
.@{prefix}-layout-content > .markdown:first-child > *:first-child {
margin-top: 0;
}
.@{prefix}-layout-toc {
top: 114px;
max-height: calc(90vh - 144px);
}
}
&-hero {
margin: -50px -58px 0;
padding: 100px 0;
text-align: center;
background-color: #f5f6f8;
@media @mobile {
margin: -16px -16px 0;
padding: 48px 0;
}
img {
max-width: 100%;
max-height: 128px;
margin-bottom: 1rem;
}
h1 {
margin: 0 0 16px;
font-size: 48px;
font-weight: 600;
line-height: 56px;
color: #080e29;
+ div {
margin: 16px 0 32px;
opacity: 0.78;
.markdown {
font-size: 16px;
}
}
}
button {
margin-right: 16px;
padding: 0 32px;
height: 44px;
color: @c-primary;
font-size: 16px;
background: transparent;
border: 1px solid @c-primary;
border-radius: 22px;
box-sizing: border-box;
cursor: pointer;
outline: none;
transition: all 0.3s;
&:hover {
opacity: 0.8;
}
&:active {
opacity: 0.9;
}
}
a:last-child button {
margin-right: 0;
color: #fff;
background: @c-primary;
}
}
&-features {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-column-gap: 96px;
grid-row-gap: 56px;
padding: 72px 0;
> dl {
flex: 1;
margin: 0;
text-align: center;
background: no-repeat center top / auto 48px;
&[style*='background-image'] {
padding-top: 64px;
}
dt {
margin-bottom: 12px;
font-size: 20px;
line-height: 1;
color: @c-heading;
}
a dt {
color: @c-link;
transition: opacity 0.2s;
&:hover {
opacity: 0.7;
text-decoration: underline;
}
&:active {
opacity: 0.9;
}
}
dd {
margin: 0;
.markdown {
color: @c-secondary;
font-size: 14px;
line-height: 22px;
> p:first-child {
margin-top: 0;
}
> p:last-child {
margin-bottom: 0;
}
}
}
}
@media @mobile {
display: block;
padding: 40px 0;
> dl {
text-align: left;
background-position: left top;
&[style*='background-image'] {
padding: 0 0 0 60px;
}
+ dl {
margin-top: 32px;
}
}
}
}
&-features,
&-features + &-content,
&-hero + &-content {
margin-left: auto;
margin-right: auto;
max-width: 960px;
}
&-toc {
list-style: none;
position: fixed;
z-index: 10;
top: 50px;
right: 0;
width: @s-toc-width;
max-height: calc(90vh - 80px);
margin: 0;
padding: 0 24px 0 0;
background-color: #fff;
box-shadow: 0 0 16px 16px #fff;
box-sizing: content-box;
overflow: auto;
@media @mobile {
display: none;
}
li {
position: relative;
margin: 0;
padding: 4px 0 4px 6px;
text-indent: 12px;
font-size: 13px;
line-height: 1.40625;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
a {
color: @c-text;
text-decoration: none;
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
bottom: 0;
display: inline-block;
width: 2px;
background: @c-border;
}
&:hover {
color: lighten(@c-primary, 5%);
}
&:active {
color: lighten(@c-primary, 3%);
}
&.active {
color: @c-primary;
&::before {
background: @c-primary;
}
}
}
}
}
&-footer-meta {
margin-top: 40px;
padding-top: 24px;
display: flex;
color: @c-secondary;
font-size: 14px;
justify-content: space-between;
border-top: 1px solid @c-border;
@media only screen and (max-width: 960px) {
display: block;
}
> a {
margin-bottom: 4px;
display: block;
color: @c-primary;
text-decoration: none;
}
> span:last-child {
&::before {
content: attr(data-updated-text);
color: @c-primary;
}
}
}
}
.__dumi-default-layout-footer {
margin: 72px 0 -32px;
padding-top: 24px;
border-top: 1px solid @c-border;
text-align: center;
.markdown {
color: #b0b1ba;
}
}

View File

@ -0,0 +1,196 @@
@import (reference) './variables.less';
.markdown {
color: @c-text;
font-size: 15px;
line-height: 1.60625;
&:not(:first-child):empty {
min-height: 32px;
}
// titles
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 42px 0 18px;
color: @c-heading;
font-weight: 500;
line-height: 1.40625;
// anchor link
&:hover > a[aria-hidden] {
float: left;
margin-top: 0.06em;
margin-left: -20px;
width: 20px;
padding-right: 4px;
line-height: 1;
box-sizing: border-box;
@media @mobile {
width: 14px;
margin-left: -14px;
}
&::after {
content: '#';
display: inline-block;
vertical-align: middle;
font-size: 20px;
}
span {
display: none;
}
}
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
margin-top: 16px;
}
}
h1 {
margin-top: 48px;
margin-bottom: 32px;
font-size: 32px;
}
h2 {
font-size: 24px;
}
h3 {
font-size: 20px;
}
h4 {
font-size: 18px;
}
h5 {
font-size: 16px;
}
h6 {
font-size: 14px;
}
// paragraph
p {
margin: 16px 0;
}
// inline code
*:not(pre) code {
padding: 2px 5px;
color: #d56161;
background: darken(@c-light-bg, 1%);
}
code {
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
}
// code block
pre {
font-size: 14px;
background: darken(@c-light-bg, 1%);
&:not([class^='language-']) {
padding: 1em;
}
}
// horizontal line
hr {
margin: 16px 0;
border: 0;
border-top: 1px solid @c-border;
}
// blockquote
blockquote {
margin: 16px 0;
padding: 0 24px;
color: fadeout(@c-text, 30%);
border-left: 4px solid @c-border;
overflow: hidden;
}
// list
ul,
ol {
margin: 8px 0 8px 32px;
padding: 0;
li {
margin-bottom: 4px;
}
}
// table
table {
width: 100%;
border-collapse: collapse;
border: 1px solid @c-border;
th,
td {
padding: 10px 24px;
border: 1px solid @c-border;
}
th {
font-weight: 600;
background: @c-light-bg;
}
td:first-child {
font-weight: 500;
}
a {
svg {
display: none;
}
}
}
// links
a {
color: @c-link;
text-decoration: none;
transition: opacity 0.2s;
outline: none;
&:hover {
opacity: 0.7;
text-decoration: underline;
}
&:active {
opacity: 0.9;
}
}
// images
img {
max-width: 100%;
}
}
.@{prefix} {
&-external-link-icon {
vertical-align: -0.155em;
margin-left: 2px;
}
}

View File

@ -0,0 +1,26 @@
/* 颜色表 */
@c-primary: #4569d4;
@c-heading: #454d64;
@c-text: #454d64;
@c-secondary: #717484;
@c-link: @c-primary;
@c-border: #ebedf1;
@c-light-bg: #f9fafb;
/* 尺寸表 */
@s-nav-height: 64px;
@s-mobile-nav-height: 50px;
@s-menu-width: 260px;
@s-site-menu-width: 300px;
@s-menu-mobile-width: 240px;
@s-content-margin: 58px;
@img-logo: 'data:image/png;base64,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';
@prefix: __dumi-default;
@mobile: ~'only screen and (max-width: 767px)';
@desktop: ~'only screen and (min-width: 768px)';
@icons: 'data:image/png;base64,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';
.@{prefix}-icon {
background: url(@icons) no-repeat ~'0 0/230px auto';
}

View File

@ -8,3 +8,9 @@ indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab

4
.fatherrc.ts Normal file
View File

@ -0,0 +1,4 @@
export default {
esm: 'rollup',
cjs: 'rollup',
};

24
.gitignore vendored
View File

@ -1 +1,23 @@
/node_modules/
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/npm-debug.log*
/yarn-error.log
/yarn.lock
/package-lock.json
# production
/dist
# misc
.DS_Store
# umi
.umi
.umi-production
.env.local
# ide
/.vscode
/.idea

6
.prettierignore Normal file
View File

@ -0,0 +1,6 @@
**/*.svg
**/*.ejs
**/*.html
package.json
.umi
.umi-production

11
.prettierrc Normal file
View File

@ -0,0 +1,11 @@
{
"singleQuote": true,
"trailingComma": "all",
"printWidth": 80,
"overrides": [
{
"files": ".prettierrc",
"options": { "parser": "json" }
}
]
}

46
.umirc.ts Normal file
View File

@ -0,0 +1,46 @@
import { defineConfig } from 'dumi';
export default defineConfig({
title: 'Homebrew',
mode: 'site',
logo: '/images/homebrew-256x256.png',
favicon: '/favicon.ico',
locales: [['zh-CN', '中文']],
navs: [
null,
{ title: 'GitHub', path: 'https://github.com/ineo6/homebrew-install' },
],
menus: {
'/guide': [
{
title: '介 绍',
children: ['/guide', '/guide/how-it-works', '/guide/start'],
},
{
title: 'M1芯片 ',
path: '/guide/m1/',
},
{
title: 'FAQ',
path: '/guide/faq/',
},
],
},
analytics: {
ga: 'G-K8PPBR74RE',
baidu: 'be934bce3f81621badc0bb5b581ab622',
},
sitemap: {
hostname: 'https://brew.idayer.com',
},
ssr: {
// 更多配置
// forceInitial: false,
// removeWindowInitialProps: false
// devServerRender: true,
// mode: 'string',
// staticMarkup: false,
},
exportStatic: {},
// more config: https://d.umijs.org/config
});

218
README.md
View File

@ -1,211 +1,25 @@
# Homebrew安装、设置镜像教程
# Homebrew 安装指南
[![Actions Status](https://github.com/ineo6/homebrew-install/workflows/GitHub Actions CI/badge.svg)](https://github.com/ineo6/homebrew-install/actions)
<a href="https://github.com/ineo6/homebrew-install/actions"><img alt="Gitter" src="https://github.com/ineo6/homebrew-install/workflows/GitHub Actions CI/badge.svg" /></a>
`Homebrew`是一款包管理工具,目前支持`macOS``linux`系统。主要有四个部分组成: `brew``homebrew-core``homebrew-cask``homebrew-bottles`
## 用法 & 指南
| 名称 | 说明 |
| --- | --- |
| brew | Homebrew 源代码仓库 |
| homebrew-core | Homebrew 核心源 |
| homebrew-cask | 提供 macOS 应用和大型二进制文件的安装 |
| homebrew-bottles | 预编译二进制软件包 |
```shell
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
```
### 沟通反馈
强烈建议按照教程处理,详情请访问 [文档主页](https://brew.idayer.com/) 。
如果文档无法访问,请查阅备用地址:
- [mac 下镜像飞速安装 Homebrew 教程](https://zhuanlan.zhihu.com/p/90508170)
- [M1 芯片 Mac 上 Homebrew 安装教程](https://zhuanlan.zhihu.com/p/341831809)
## 沟通反馈
欢迎加入微信群,获得最新动态。
![湖中剑-hb.png](https://i.loli.net/2021/01/03/sXGryYHa3JhB9QL.png)
文章也可以到[知乎](https://zhuanlan.zhihu.com/p/90508170)查阅。
<h2 id='part1'>1. 脚本说明</h2>
**2020年12月14日更新升级到shell脚本安装方式。**
`Homebrew`默认安装脚本:
```sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
如果你等待一段时间之后遇到下面提示,就说明无法访问官方脚本地址:
```sh
curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation timed out
```
请按照下面 [安装说明](#part2) 步骤执行。
安装使用到的脚本源码在此 [homebrew-install](https://github.com/ineo6/homebrew-install) 。
> 官方脚本无法使用的原因是`raw.githubusercontent.com`访问很不稳定,我上面提供的方案里是采用了`jsdelivr CDN`加速访问。
>
> 另外也可以采用写入`hosts`的方式,可以一定程度解决`GitHub`资源无法访问的问题,我也写了一篇操作文章,有需要可以阅读下。
[解决GitHub网页githubusercontent地址无法访问问题
](http://idayer.com/speed-github-githubusercontent-page-with-hosts/)
<h2 id='part2'>2. 安装说明</h2>
提前设置`homebrew-core`镜像源并执行:
```sh
# 中科大
HOMEBREW_CORE_GIT_REMOTE=https://mirrors.ustc.edu.cn/homebrew-core.git
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
```
如果命令执行中卡在下面信息(如提示有差异,请反馈给我):
```
==> Tapping homebrew/core
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
```
`Control + C`中断脚本执行如下命令:
```sh
cd "$(brew --repo)/Library/Taps/"
mkdir homebrew && cd homebrew
git clone git://mirrors.ustc.edu.cn/homebrew-core.git
```
**`cask` 同样也有安装失败或者卡住的问题,解决方法也是一样:**
```shell
cd "$(brew --repo)/Library/Taps/"
cd homebrew
git clone https://mirrors.ustc.edu.cn/homebrew-cask.git
```
成功执行之后继续执行前文的安装命令:
```sh
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
```
最后看到`==> Installation successful!`就说明安装成功了。
最最后更新下:
```sh
brew update
```
<h2 id='part3'>3. 设置镜像</h2>
`brew``homebrew/core`是必备项目,`homebrew/cask``homebrew/bottles`按需设置。
通过 `brew config` 命令可以查看相关配置信息。
### 3.1 中科大源
```sh
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
brew update
# 长期替换homebrew-bottles
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
```
注意`bottles`可以临时设置,在终端执行下面命令:
```sh
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
```
### 3.2 清华大学源
```sh
git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git
brew update
# 长期替换homebrew-bottles
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
```
### 3.3 恢复默认源
```sh
git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://github.com/Homebrew/homebrew-cask.git
brew update
```
`homebrew-bottles`配置只能手动删除,将 `~/.bash_profile` 文件中的 `HOMEBREW_BOTTLE_DOMAIN=https://mirrors.xxx.com`内容删除,并执行 `source ~/.bash_profile`
至此,安装和设置操作都完成了。
## 5. 其他相关
### 5.1 cask
目前`cask`是从`GitHub`上读取软件源,而`GitHub Api`对访问有限制,如果使用比较频繁的话,可以申请`Api Token`,然后在环境变量中配置到`HOMEBREW_GITHUB_API_TOKEN`
`.bash_profile`中追加:
```shell
export HOMEBREW_GITHUB_API_TOKEN=yourtoken
```
注意:因为`cask`是从`GitHub`下载软件,所以目前是无法加速的。
### 5.2 如何卸载Homebrew
使用官方脚本同样会遇到`uninstall`地址无法访问问题,可以使用下面脚本:
```sh
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/uninstall.sh)"
```
### 5.3 反馈问题
## 6. 总结
在前面的过程中我们把`brew``homebrew-core`的地址都指向到中科大镜像。
原理是通过修改`install.sh`脚本,在里面预设镜像地址。
```sh
STAT="stat --printf"
CHOWN="/bin/chown"
CHGRP="/bin/chgrp"
GROUP="$(id -gn)"
TOUCH="/bin/touch"
fi
# 这里替换了BREW_REPO
BREW_REPO="https://mirrors.ustc.edu.cn/brew.git"
```
更新后的方案使用`HOMEBREW_CORE_GIT_REMOTE`来预设`homebrew-core`源,不过这个设置方法很可能无效,欢迎小伙伴留言反馈你的效果。
## 如果对您有帮助
点赞、分享、收藏,能让更多人能发现文章,这也是对我的认可和鼓励,谢谢。
## 参考文章
- [清华大学开源软件镜像站](https://mirror.tuna.tsinghua.edu.cn/help/homebrew/)
- [中科大源](http://mirrors.ustc.edu.cn/help/brew.git.html)
- 微信群
- [Issue](https://github.com/ineo6/homebrew-install)

99
docs/guide/faq.md Normal file
View File

@ -0,0 +1,99 @@
# FAQ
## M1 芯片 Mac 如何安装
`Homebrew`已支持在`arm`上安装,但是一些软件兼容性还有待更新,官方查阅地址可看[说明](https://github.com/Homebrew/brew/issues/7857)。
你可以考虑安装`x86`版本保持兼容性。
无论安装哪个版本,强烈建议先参考文档:[M1 芯片 Mac 上 Homebrew 安装](/guide/m1/)。
大部分问题都是资源不稳定导致的,如果可以的话尽量通过代理加速。
代理使用可以参考以下文章:
- [Mac 终端走 ssr 代理](http://onwaier.com/?p=229)
- [如何让 macOS 的「终端」走代理?](https://www.xiaodefa.com/digital/121.html)
## fatal: unable to access xxx
```
HEAD is now at 028e733e7 Merge pull request #10260 from reitermarkus/audit-livecheck
fatal: unable to access 'https://github.com/Homebrew/homebrew-core/': transfer closed with outstanding read data remaining
fatal: ambiguous argument 'refs/remotes/origin/master': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
```
解决方案:
- 根据文章[解决 GitHub 网页 githubusercontent 地址无法访问问题][hosts],给`github.com`域名加速
- 通过代理访问
## 设置镜像无效,安装还是很慢
这里说的安装很慢主要是指`brew`本身安装速度慢(镜像地址没有设置成功)。
可以执行命令`echo $SHELL`,先查看终端类型。
- bash: `/bin/bash`
- zsh: `/bin/zsh`
然后根据终端类型设置镜像,参考"设置镜像"。
## command not found: brew
一般是环境变量无效,请使用`echo $SHELL`确认终端类型,参考上节。
如果是`m1`芯片`Mac`则可能是没有把`/opt/homebrew/bin`加入环境变量:
zsh
```shell
echo export PATH=/opt/homebrew/bin:$PATH >> /.zprofile
source ~/.zprofile
```
bash
```shell
echo export PATH=/opt/homebrew/bin:$PATH >> /.bash_profile
source ~/.bash_profile
```
否则可能因为特殊情况需要把`/usr/local/bin`手动加入环境变量:
zsh
```shell
echo export PATH=/usr/local/bin:$PATH >> /.zprofile
source ~/.zprofile
```
bash
```shell
echo export PATH=/usr/local/bin:$PATH >> /.bash_profile
source ~/.bash_profile
```
## SHA256 mismatch
```
Error: An exception occurred within a child process:
ChecksumMismatchError: SHA256 mismatch
Expected: 01059532335fefc5e0e7a23cc79eeb1dc6fea477606981b89f259aa0e0f9abc1
Actual: 641ba394c891cee16dfa45873906edab12edfc9befaa121649bb18e7b7d574bf
Archive: /Users/XXX/Library/Caches/Homebrew/downloads/1124b500fc261f6d9be6193eca8c120f4dfb7ecd3470ac7d8edc1d04ecc5b345--jdk13u-jdk-13.0.2+8.tar.bz2
To retry an incomplete download, remove the file above.
```
遇到该问题时请尝试该方案https://blog.csdn.net/lemostic/article/details/107101219
## 如何判断终端类型
在终端执行命令`echo $SHELL`,根据显示的结果判断:
- `/bin/bash` => `bash` => `.bash_profile`
- `/bin/zsh` => `zsh` => `.zprofile`

View File

@ -0,0 +1,38 @@
---
order: 1
---
# 如何工作的?
## 访问脚本
`raw.githubusercontent.com`地址不稳定,导致无法访问官方安装脚本`install.sh`
```shell
curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation timed out
```
解决方案就是托管到`jsdelivr`,通过`CDN`加速访问。
> 另外也可以采用写入`hosts`的方式,可以一定程度解决`GitHub`资源无法访问的问题。
>
> 设置方案请阅读 [GitHub 访问加速指南][hosts]
## 安装加速
修改脚本内容,把`brew``homebrew-core`到仓库地址为 [中科大镜像](http://mirrors.ustc.edu.cn/help/brew.git.html) 提供的地址。
例如:
```shell
STAT="stat --printf"
CHOWN="/bin/chown"
CHGRP="/bin/chgrp"
GROUP="$(id -gn)"
TOUCH="/bin/touch"
fi
# 这里替换了BREW_REPO
BREW_REPO="https://mirrors.ustc.edu.cn/brew.git"
```
[hosts]: https://mp.weixin.qq.com/s/gFNP2Pk81vg7nE1XsDingg

40
docs/guide/index.md Normal file
View File

@ -0,0 +1,40 @@
---
nav:
title: 指南
order: 1
---
# 介 绍
`Homebrew`是一款包管理工具,目前支持`macOS``Linux`系统。主要有四个部分组成: `brew``homebrew-core``homebrew-cask``homebrew-bottles`
| 名称 | 说明 |
| ---------------- | ------------------------------------- |
| brew | Homebrew 源代码仓库 |
| homebrew-core | Homebrew 核心源 |
| homebrew-cask | 提供 macOS 应用和大型二进制文件的安装 |
| homebrew-bottles | 预编译二进制软件包 |
本文主要介绍`Homebrew`安装方式以及如何加速访问。
另外相关用到的脚本 [homebrew-install][github] 都托管在`GitHub`上。
希望大家顺利安装上`Homebrew`
## 关于单独设置镜像
如果你已经安装好`Homebrew`,但是想设置镜像也可以 [点此直达](/guide/start/#part3)。
## 反馈
非常欢迎你来尝试使用,并提出意见,你可以通过以下方式:
- 通过 [Issue][issues] 报告 bug 或进行咨询
- 微信群(见下图)
- 提交 [Pull Request][pulls] 改进文档
<img src="https://i.loli.net/2021/01/03/sXGryYHa3JhB9QL.png" width="600" alt="湖中剑-homebrew" />
[github]: https://github.com/ineo6/homebrew-install
[issues]: https://github.com/ineo6/homebrew-install/issues
[pulls]: https://github.com/ineo6/homebrew-install/pulls

116
docs/guide/m1.md Normal file
View File

@ -0,0 +1,116 @@
# M1 芯片 Mac 上 Homebrew 安装
目前`Homebrew`还没有完成对搭载`Apple Silicon CPU``Mac`机型完成适配,安装教程也比较混乱,所以我整理这篇文章,希望能帮到大家。
关于进度的信息可以浏览`GitHub`上的[说明](https://github.com/Homebrew/brew/issues/7857)。
本文简单介绍了`M1`芯片`Mac`上安装`Homebrew`的方法,同时建议小伙伴结合 [mac 安装教程](/guide/) 一起阅读并安装。
## 安装 ARM 版 Homebrew
`ARM``Homebrew`需要安装在`/opt/homebrew`路径下,早期的时候需要手动创建目录执行命令,目前使用最新脚本不需要手动操作。
直接执行:
```shell
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
或者使用我提供的脚本安装,好处是安装脚本可稳定访问,安装默认使用中科大镜像:
```shell
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
```
然后还需设置环境变量,在`~/.zprofile`或者`~/.bash_profile`文件末尾追加下面代码:
```shell
export PATH=/opt/homebrew/bin:$PATH
```
具体操作步骤如下,一定要仔细阅读。
PS: 终端类型根据执行命令`echo $SHELL`显示的结果:
- `/bin/bash` => `bash` => `.bash_profile`
- `/bin/zsh` => `zsh` => `.zprofile`
**如果遇到环境变量无效问题,建议回过头来查看终端类型,再做正确的设置。**
`macOS Catalina`(10.15.x) 版开始,`Mac`使用`zsh`作为默认`Shell`,使用`.zprofile`,所以对应命令:
```shell
echo export PATH=/opt/homebrew/bin:$PATH >> /.zprofile
source ~/.zprofile
```
如果是`macOS Mojave` 及更低版本,并且没有自己配置过`zsh`,使用`.bash_profile`
```shell
echo export PATH=/opt/homebrew/bin:$PATH >> /.bash_profile
source ~/.bash_profile
```
扩展阅读:[在 Mac 上将 zsh 用作默认 Shell](https://support.apple.com/zh-cn/HT208050)
## 安装 X86 版 Homebrew
因为目前很多软件包没有支持`ARM`架构,我们也可以考虑使用`x86`版的`Homebrew`
在命令前面添加`arch -x86_64`,就可以按 X86 模式执行该命令,比如:
```shell
arch -x86_64 /bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
```
## 多版本共存
如果你同时安装了 ARM 和 X86 两个版本,那你需要设置别名,把命令区分开。
同样是`.zprofile`或者`.bash_profile`里面添加:
至于操作哪个文件,请参考前文关于终端类型的描述,下文如有类似文字,保持一样的操作。
```shell
alias abrew='arch -arm64 /opt/homebrew/bin/brew'
alias ibrew='arch -x86_64 /usr/local/bin/brew'
```
`abrew``ibrew`可以根据你的喜好自定义。
然后再执行`source ~/.zprofile``source ~/.bash_profile`命令更新文件。
## 设置镜像
**注意:本文中的安装脚本会设置中科大源镜像,如果你也想设置`cask``bottles`的镜像,请按下面注释部分选择执行代码。**
更详细的教程可以参考前面的文章:[mac 安装教程](/guide/start/#part3)
执行时根据实际情况修改`"$(brew --repo)"`代码中的`brew`
意思是如果你只是使用一个版本`Homebrew`,直接执行命令即可,如果你想多个版本共存或者使用了别名,就把`brew`关键字替换为别名名称,如前面的`abrew``ibrew`
```shell
# brew
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# core
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
# cask
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
# bottles for zsh 和下面2选1
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zprofile
source ~/.zprofile
# bottles for bash 和上面2选1
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
```
具体镜像设置参考[mac 安装教程](/guide/start/#part3)=>"设置镜像"一节。
**如果觉得教程有用,欢迎多多分享宣传~**
[mac]:[https://zhuanlan.zhihu.com/p/90508170][github]:[https://github.com/ineo6/homebrew-install]

169
docs/guide/start.md Normal file
View File

@ -0,0 +1,169 @@
---
order: 3
---
# 快速开始
如果你是在`M1`芯片的`Mac`上安装`Homebrew`,请参考 [M1 芯片安装教程](/guide/m1/)。
## 安装说明
```shell
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.shell)"
```
如果命令执行中卡在下面信息:
```shell
==> Tapping homebrew/core
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
```
`Control + C`中断脚本执行如下命令:
```shell
cd "$(brew --repo)/Library/Taps/"
mkdir homebrew && cd homebrew
git clone git://mirrors.ustc.edu.cn/homebrew-core.git
```
**安装`cask` 同样也有安装失败或者卡住的问题,解决方法也是一样:**
```shell
cd "$(brew --repo)/Library/Taps/"
cd homebrew
git clone https://mirrors.ustc.edu.cn/homebrew-cask.git
```
成功执行之后继续执行安装命令。
最后看到`==> Installation successful!`就说明安装成功了。
最最后更新下:
```shell
brew update
```
<h2 id='part3'>设置镜像</h2>
### 中科大源
```shell
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
brew update
```
### 清华大学源
```shell
git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git
brew update
```
### 设置 bottles 镜像
设置环境变量需要注意终端的类型,可以先通过以下方式获取:
执行命令`echo $SHELL`,根据结果判断:
- `/bin/bash` => `bash` => `.bash_profile`
- `/bin/zsh` => `zsh` => `.zprofile`
然后继续正式操作,以**中科大源**为例:
`macOS Catalina`(10.15.x) 版开始,`Mac`使用`zsh`作为默认`Shell`,对应文件是`.zprofile`,所以命令为:
```shell
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zprofile
source ~/.zprofile
```
如果是`macOS Mojave` 及更低版本,并且没有自己配置过`zsh`,对应文件则是`.bash_profile`
```shell
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
```
> 注意:上述区别仅仅是`.zprofile``.bash_profile`不同,上下文如有再次提及编辑`.zprofile`,均按此方法判断具体操作的文件。
如果想使用清华源:
```shell
https://mirrors.ustc.edu.cn/homebrew-bottles
替换为
https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles
```
至此,安装和设置操作都完成了。
### 恢复默认源
```shell
git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://github.com/Homebrew/homebrew-cask.git
brew update
```
`homebrew-bottles`配置只能手动删除,将 `~/.zprofile` 文件中的 `HOMEBREW_BOTTLE_DOMAIN=https://mirrors.xxx.com`内容删除,并执行 `source ~/.zprofile`
## 如何卸载 Homebrew
使用官方脚本同样会遇到`uninstall`地址无法访问问题,可以使用下面脚本:
```shell
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/uninstall.shell)"
```
## 其他相关
### cask
目前`cask`是从`GitHub`上读取软件源,而`GitHub Api`对访问有限制,如果使用比较频繁的话,可以申请`Api Token`,然后在环境变量中配置到`HOMEBREW_GITHUB_API_TOKEN`
`.zprofile`中追加,注意替换`yourtoken`:
```shell
echo 'export HOMEBREW_GITHUB_API_TOKEN=yourtoken' >> ~/.zprofile
source ~/.zprofile
```
注意:因为`cask`是从`GitHub`下载软件,所以目前是无法加速的。
## 反馈
非常欢迎你来尝试使用,并提出意见,你可以通过以下方式:
- 通过 [Issue][issues] 报告 bug 或进行咨询
- 微信群(见下图)
- 提交 [Pull Request][pulls] 改进文档
<img src="https://i.loli.net/2021/01/03/sXGryYHa3JhB9QL.png" width="600" alt="湖中剑-homebrew" />
## 如果对您有帮助
分享、收藏,能让更多人能发现文章,这也是对我的认可和鼓励,谢谢。
## 参考文章
- [清华大学开源软件镜像站](https://mirror.tuna.tsinghua.edu.cn/help/homebrew/)
- [中科大源](http://mirrors.ustc.edu.cn/help/brew.git.html)
[issues]: https://github.com/ineo6/homebrew-install/issues

21
docs/index.md Normal file
View File

@ -0,0 +1,21 @@
---
hero:
title: Homebrew
desc: macOS飞速安装教程
image: /images/homebrew-256x256.png
actions:
- text: 快速开始
link: /guide/
footer: Open-source MIT Licensed | Copyright © 2021<br />Powered by [Neo](https://github.com/ineo6)
---
<Center><h2>快速安装 Homebrew</h2></Center>
```shell script
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
```
<Center>将以上命令粘贴至终端。</Center>
<Center>脚本内置<a target="_blank" href="http://mirrors.ustc.edu.cn/help/brew.git.html">中科大镜像</a>所以让Homebrew安装速度飞快。</Center>
<Center>如果对安装有疑问,请通过 <a href="/guide/start/">快速开始</a> 安装。</Center>

View File

@ -2,10 +2,25 @@
"name": "homebrew-install",
"version": "1.0.0",
"description": "Install Homebrew (on macOS or Linux)",
"main": "",
"main": "dist/index.js",
"module": "dist/index.esm.js",
"typings": "dist/index.d.ts",
"scripts": {
"make": "node ./bin/update.js",
"test": "echo \"Error: no test specified\" && exit 1"
"start": "dumi dev",
"build": "dumi build",
"prettier": "prettier --write \"**/*.{js,jsx,tsx,ts,less,md,json}\"",
"make": "node ./bin/update.js"
},
"gitHooks": {
"pre-commit": "lint-staged"
},
"lint-staged": {
"*.{js,jsx,less,md,json}": [
"prettier --write"
],
"*.ts?(x)": [
"prettier --parser=typescript --write"
]
},
"repository": {
"type": "git",
@ -20,7 +35,12 @@
"devDependencies": {
"chalk": "^4.1.0",
"download-git-repo": "^3.0.2",
"dumi": "^1.0.12",
"fs-extra": "^9.0.1",
"ora": "^5.2.0"
"lint-staged": "^10.0.7",
"ora": "^5.3.0",
"prettier": "^1.19.1",
"sitemap": "^6.3.5",
"yorkie": "^2.0.0"
}
}

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

29
tsconfig.json Normal file
View File

@ -0,0 +1,29 @@
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"importHelpers": true,
"jsx": "react",
"esModuleInterop": true,
"sourceMap": true,
"baseUrl": "./",
"strict": true,
"paths": {
"@/*": ["src/*"],
"@@/*": ["src/.umi/*"]
},
"allowSyntheticDefaultImports": true
},
"exclude": [
"node_modules",
"lib",
"es",
"dist",
"typings",
"**/__test__",
"test",
"docs",
"tests"
]
}

2
typings.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
declare module '*.css';
declare module '*.less';

999
yarn.lock
View File

@ -1,999 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@sindresorhus/is@^0.7.0":
version "0.7.0"
resolved "https://registry.npm.taobao.org/@sindresorhus/is/download/@sindresorhus/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
integrity sha1-mgb08TfuhNffBGDB/bETX/psUP0=
ansi-regex@^5.0.0:
version "5.0.0"
resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
integrity sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=
ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1606792395101&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha1-7dgDYornHATIWuegkG7a00tkiTc=
dependencies:
color-convert "^2.0.1"
archive-type@^4.0.0:
version "4.0.0"
resolved "https://registry.npm.taobao.org/archive-type/download/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70"
integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=
dependencies:
file-type "^4.2.0"
at-least-node@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/at-least-node/download/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
integrity sha1-YCzUtG6EStTv/JKoARo8RuAjjcI=
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.npm.taobao.org/base64-js/download/base64-js-1.5.1.tgz?cache=0&sync_timestamp=1605123644489&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbase64-js%2Fdownload%2Fbase64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=
bl@^1.0.0:
version "1.2.3"
resolved "https://registry.npm.taobao.org/bl/download/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7"
integrity sha1-Ho3YAULqyA1xWMnczAR/tiDgNec=
dependencies:
readable-stream "^2.3.5"
safe-buffer "^5.1.1"
bl@^4.0.3:
version "4.0.3"
resolved "https://registry.npm.taobao.org/bl/download/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489"
integrity sha1-EtYoetwpCA4ipwXldksqlSLNxIk=
dependencies:
buffer "^5.5.0"
inherits "^2.0.4"
readable-stream "^3.4.0"
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz?cache=0&sync_timestamp=1601898201980&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrace-expansion%2Fdownload%2Fbrace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
buffer-alloc-unsafe@^1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
integrity sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=
buffer-alloc@^1.2.0:
version "1.2.0"
resolved "https://registry.npm.taobao.org/buffer-alloc/download/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
integrity sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=
dependencies:
buffer-alloc-unsafe "^1.1.0"
buffer-fill "^1.0.0"
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
buffer-fill@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/buffer-fill/download/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
buffer@^5.2.1, buffer@^5.5.0:
version "5.7.1"
resolved "https://registry.npm.taobao.org/buffer/download/buffer-5.7.1.tgz?cache=0&sync_timestamp=1606098138997&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbuffer%2Fdownload%2Fbuffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
integrity sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=
dependencies:
base64-js "^1.3.1"
ieee754 "^1.1.13"
cacheable-request@^2.1.1:
version "2.1.4"
resolved "https://registry.npm.taobao.org/cacheable-request/download/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d"
integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=
dependencies:
clone-response "1.0.2"
get-stream "3.0.0"
http-cache-semantics "3.8.1"
keyv "3.0.0"
lowercase-keys "1.0.0"
normalize-url "2.0.1"
responselike "1.0.2"
caw@^2.0.1:
version "2.0.1"
resolved "https://registry.npm.taobao.org/caw/download/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95"
integrity sha1-bDygcfwZRyCIPC3F2psHS/x+npU=
dependencies:
get-proxy "^2.0.0"
isurl "^1.0.0-alpha5"
tunnel-agent "^0.6.0"
url-to-options "^1.0.1"
chalk@^4.0.0, chalk@^4.1.0:
version "4.1.0"
resolved "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1599533182233&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
integrity sha1-ThSHCmGNni7dl92DRf2dncMVZGo=
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
cli-cursor@^3.1.0:
version "3.1.0"
resolved "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
integrity sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=
dependencies:
restore-cursor "^3.1.0"
cli-spinners@^2.5.0:
version "2.5.0"
resolved "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047"
integrity sha1-EnY+RyUb+VHLdcIB36WP8byy0Ec=
clone-response@1.0.2:
version "1.0.2"
resolved "https://registry.npm.taobao.org/clone-response/download/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
dependencies:
mimic-response "^1.0.0"
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=
dependencies:
color-name "~1.1.4"
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=
commander@^2.8.1:
version "2.20.3"
resolved "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1607931331670&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
config-chain@^1.1.11:
version "1.1.12"
resolved "https://registry.npm.taobao.org/config-chain/download/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
integrity sha1-D96NCRIA616AjK8l/mGMAvSOTvo=
dependencies:
ini "^1.3.4"
proto-list "~1.2.1"
content-disposition@^0.5.2:
version "0.5.3"
resolved "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
integrity sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=
dependencies:
safe-buffer "5.1.2"
core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
decompress-response@^3.3.0:
version "3.3.0"
resolved "https://registry.npm.taobao.org/decompress-response/download/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
dependencies:
mimic-response "^1.0.0"
decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1:
version "4.1.1"
resolved "https://registry.npm.taobao.org/decompress-tar/download/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1"
integrity sha1-cYy9P8sWIJcW5womuE57pFkuWvE=
dependencies:
file-type "^5.2.0"
is-stream "^1.1.0"
tar-stream "^1.5.2"
decompress-tarbz2@^4.0.0:
version "4.1.1"
resolved "https://registry.npm.taobao.org/decompress-tarbz2/download/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b"
integrity sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=
dependencies:
decompress-tar "^4.1.0"
file-type "^6.1.0"
is-stream "^1.1.0"
seek-bzip "^1.0.5"
unbzip2-stream "^1.0.9"
decompress-targz@^4.0.0:
version "4.1.1"
resolved "https://registry.npm.taobao.org/decompress-targz/download/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee"
integrity sha1-wJvDXE0R894J8tLaU+neI+fOHu4=
dependencies:
decompress-tar "^4.1.1"
file-type "^5.2.0"
is-stream "^1.1.0"
decompress-unzip@^4.0.1:
version "4.0.1"
resolved "https://registry.npm.taobao.org/decompress-unzip/download/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69"
integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k=
dependencies:
file-type "^3.8.0"
get-stream "^2.2.0"
pify "^2.3.0"
yauzl "^2.4.2"
decompress@^4.2.0:
version "4.2.1"
resolved "https://registry.npm.taobao.org/decompress/download/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118"
integrity sha1-AH9VzGpiwFWvo3wH62pO4bdz8Rg=
dependencies:
decompress-tar "^4.0.0"
decompress-tarbz2 "^4.0.0"
decompress-targz "^4.0.0"
decompress-unzip "^4.0.1"
graceful-fs "^4.1.10"
make-dir "^1.0.0"
pify "^2.3.0"
strip-dirs "^2.0.0"
defaults@^1.0.3:
version "1.0.3"
resolved "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
dependencies:
clone "^1.0.2"
download-git-repo@^3.0.2:
version "3.0.2"
resolved "https://registry.npm.taobao.org/download-git-repo/download/download-git-repo-3.0.2.tgz#8caae24fb2abd6453172deea5619036024f190f6"
integrity sha1-jKriT7Kr1kUxct7qVhkDYCTxkPY=
dependencies:
download "^7.1.0"
git-clone "^0.1.0"
rimraf "^3.0.0"
download@^7.1.0:
version "7.1.0"
resolved "https://registry.npm.taobao.org/download/download/download-7.1.0.tgz#9059aa9d70b503ee76a132897be6dec8e5587233"
integrity sha1-kFmqnXC1A+52oTKJe+beyOVYcjM=
dependencies:
archive-type "^4.0.0"
caw "^2.0.1"
content-disposition "^0.5.2"
decompress "^4.2.0"
ext-name "^5.0.0"
file-type "^8.1.0"
filenamify "^2.0.0"
get-stream "^3.0.0"
got "^8.3.1"
make-dir "^1.2.0"
p-event "^2.1.0"
pify "^3.0.0"
duplexer3@^0.1.4:
version "0.1.4"
resolved "https://registry.npm.taobao.org/duplexer3/download/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
end-of-stream@^1.0.0:
version "1.4.4"
resolved "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=
dependencies:
once "^1.4.0"
escape-string-regexp@^1.0.2:
version "1.0.5"
resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz?cache=0&sync_timestamp=1587627395453&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
ext-list@^2.0.0:
version "2.2.2"
resolved "https://registry.npm.taobao.org/ext-list/download/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37"
integrity sha1-C5jmTtgvWs8PKTG6v2khLvUt3Tc=
dependencies:
mime-db "^1.28.0"
ext-name@^5.0.0:
version "5.0.0"
resolved "https://registry.npm.taobao.org/ext-name/download/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6"
integrity sha1-cHgZgdGD7hXROZPIgiBFxQbI8KY=
dependencies:
ext-list "^2.0.0"
sort-keys-length "^1.0.0"
fd-slicer@~1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
dependencies:
pend "~1.2.0"
file-type@^3.8.0:
version "3.9.0"
resolved "https://registry.npm.taobao.org/file-type/download/file-type-3.9.0.tgz?cache=0&sync_timestamp=1608546795693&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-type%2Fdownload%2Ffile-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek=
file-type@^4.2.0:
version "4.4.0"
resolved "https://registry.npm.taobao.org/file-type/download/file-type-4.4.0.tgz?cache=0&sync_timestamp=1608546795693&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-type%2Fdownload%2Ffile-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5"
integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU=
file-type@^5.2.0:
version "5.2.0"
resolved "https://registry.npm.taobao.org/file-type/download/file-type-5.2.0.tgz?cache=0&sync_timestamp=1608546795693&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-type%2Fdownload%2Ffile-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6"
integrity sha1-LdvqfHP/42No365J3DOMBYwritY=
file-type@^6.1.0:
version "6.2.0"
resolved "https://registry.npm.taobao.org/file-type/download/file-type-6.2.0.tgz?cache=0&sync_timestamp=1608546795693&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-type%2Fdownload%2Ffile-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919"
integrity sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=
file-type@^8.1.0:
version "8.1.0"
resolved "https://registry.npm.taobao.org/file-type/download/file-type-8.1.0.tgz?cache=0&sync_timestamp=1608546795693&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-type%2Fdownload%2Ffile-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c"
integrity sha1-JE87fvZBu+DMoZbHJ25LMyOZ9ow=
filename-reserved-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/filename-reserved-regex/download/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229"
integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik=
filenamify@^2.0.0:
version "2.1.0"
resolved "https://registry.npm.taobao.org/filenamify/download/filenamify-2.1.0.tgz?cache=0&sync_timestamp=1600943022600&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffilenamify%2Fdownload%2Ffilenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9"
integrity sha1-iPr0lfsbR6v9YSMAACoWIoxnfuk=
dependencies:
filename-reserved-regex "^2.0.0"
strip-outer "^1.0.0"
trim-repeated "^1.0.0"
from2@^2.1.1:
version "2.3.0"
resolved "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
dependencies:
inherits "^2.0.1"
readable-stream "^2.0.0"
fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/fs-constants/download/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
integrity sha1-a+Dem+mYzhavivwkSXue6bfM2a0=
fs-extra@^9.0.1:
version "9.0.1"
resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc"
integrity sha1-kQ2gBiQ3ukw5/t2GPxZ1zP78ufw=
dependencies:
at-least-node "^1.0.0"
graceful-fs "^4.2.0"
jsonfile "^6.0.1"
universalify "^1.0.0"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
get-proxy@^2.0.0:
version "2.1.0"
resolved "https://registry.npm.taobao.org/get-proxy/download/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93"
integrity sha1-NJ8rTZHUTE1NTpy6KtkBQ/rF75M=
dependencies:
npm-conf "^1.1.0"
get-stream@3.0.0, get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
get-stream@^2.2.0:
version "2.3.1"
resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=
dependencies:
object-assign "^4.0.1"
pinkie-promise "^2.0.0"
git-clone@^0.1.0:
version "0.1.0"
resolved "https://registry.npm.taobao.org/git-clone/download/git-clone-0.1.0.tgz#0d76163778093aef7f1c30238f2a9ef3f07a2eb9"
integrity sha1-DXYWN3gJOu9/HDAjjyqe8/B6Lrk=
glob@^7.1.3:
version "7.1.6"
resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
got@^8.3.1:
version "8.3.2"
resolved "https://registry.npm.taobao.org/got/download/got-8.3.2.tgz?cache=0&sync_timestamp=1607657999452&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgot%2Fdownload%2Fgot-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937"
integrity sha1-HSP2Q5Dpf3dsrFLluTbl9RTS6Tc=
dependencies:
"@sindresorhus/is" "^0.7.0"
cacheable-request "^2.1.1"
decompress-response "^3.3.0"
duplexer3 "^0.1.4"
get-stream "^3.0.0"
into-stream "^3.1.0"
is-retry-allowed "^1.1.0"
isurl "^1.0.0-alpha5"
lowercase-keys "^1.0.0"
mimic-response "^1.0.0"
p-cancelable "^0.4.0"
p-timeout "^2.0.1"
pify "^3.0.0"
safe-buffer "^5.1.1"
timed-out "^4.0.1"
url-parse-lax "^3.0.0"
url-to-options "^1.0.1"
graceful-fs@^4.1.10, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.4"
resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
integrity sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=
has-symbol-support-x@^1.4.1:
version "1.4.2"
resolved "https://registry.npm.taobao.org/has-symbol-support-x/download/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455"
integrity sha1-FAn5i8ACR9pF2mfO4KNvKC/yZFU=
has-to-string-tag-x@^1.2.0:
version "1.4.1"
resolved "https://registry.npm.taobao.org/has-to-string-tag-x/download/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
integrity sha1-oEWrOD17SyASoAFIqwql8pAETU0=
dependencies:
has-symbol-support-x "^1.4.1"
http-cache-semantics@3.8.1:
version "3.8.1"
resolved "https://registry.npm.taobao.org/http-cache-semantics/download/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
integrity sha1-ObDhat2bYFvwqe89nar0hDtMrNI=
ieee754@^1.1.13:
version "1.2.1"
resolved "https://registry.npm.taobao.org/ieee754/download/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
ini@^1.3.4:
version "1.3.8"
resolved "https://registry.npm.taobao.org/ini/download/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha1-op2kJbSIBvNHZ6Tvzjlyaa8oQyw=
into-stream@^3.1.0:
version "3.1.0"
resolved "https://registry.npm.taobao.org/into-stream/download/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6"
integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=
dependencies:
from2 "^2.1.1"
p-is-promise "^1.1.0"
is-interactive@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/is-interactive/download/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
integrity sha1-zqbmrlyHCnsKAAQHC3tYfgJSkS4=
is-natural-number@^4.0.1:
version "4.0.1"
resolved "https://registry.npm.taobao.org/is-natural-number/download/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=
is-object@^1.0.1:
version "1.0.2"
resolved "https://registry.npm.taobao.org/is-object/download/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf"
integrity sha1-pWVS4cZlyelQtKAlRh2ofnL4b88=
is-plain-obj@^1.0.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz?cache=0&sync_timestamp=1602542377539&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-obj%2Fdownload%2Fis-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
is-retry-allowed@^1.1.0:
version "1.2.0"
resolved "https://registry.npm.taobao.org/is-retry-allowed/download/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
integrity sha1-13hIi9CkZmo76KFIK58rqv7eqLQ=
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
isurl@^1.0.0-alpha5:
version "1.0.0"
resolved "https://registry.npm.taobao.org/isurl/download/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67"
integrity sha1-sn9PSfPNqj6kSgpbfzRi5u3DnWc=
dependencies:
has-to-string-tag-x "^1.2.0"
is-object "^1.0.1"
json-buffer@3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/json-buffer/download/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
jsonfile@^6.0.1:
version "6.1.0"
resolved "https://registry.npm.taobao.org/jsonfile/download/jsonfile-6.1.0.tgz?cache=0&sync_timestamp=1604162147908&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
integrity sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4=
dependencies:
universalify "^2.0.0"
optionalDependencies:
graceful-fs "^4.1.6"
keyv@3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/keyv/download/keyv-3.0.0.tgz?cache=0&sync_timestamp=1600337805501&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkeyv%2Fdownload%2Fkeyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373"
integrity sha1-RJI7o55osSp87H32wyaMAx8u83M=
dependencies:
json-buffer "3.0.0"
log-symbols@^4.0.0:
version "4.0.0"
resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-4.0.0.tgz?cache=0&sync_timestamp=1587899010652&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flog-symbols%2Fdownload%2Flog-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920"
integrity sha1-abPMRtIPRI7M23XqH6cz2eghySA=
dependencies:
chalk "^4.0.0"
lowercase-keys@1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=
lowercase-keys@^1.0.0:
version "1.0.1"
resolved "https://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
integrity sha1-b54wtHCE2XGnyCD/FabFFnt0wm8=
make-dir@^1.0.0, make-dir@^1.2.0:
version "1.3.0"
resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-1.3.0.tgz?cache=0&sync_timestamp=1598277414050&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
integrity sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=
dependencies:
pify "^3.0.0"
mime-db@^1.28.0:
version "1.45.0"
resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.45.0.tgz?cache=0&sync_timestamp=1600831152656&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
integrity sha1-zO7aIczXw6dF66LezVXUtz54eeo=
mimic-fn@^2.1.0:
version "2.1.0"
resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1596093999622&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=
mimic-response@^1.0.0:
version "1.0.1"
resolved "https://registry.npm.taobao.org/mimic-response/download/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
integrity sha1-SSNTiHju9CBjy4o+OweYeBSHqxs=
minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=
dependencies:
brace-expansion "^1.1.7"
normalize-url@2.0.1:
version "2.0.1"
resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6"
integrity sha1-g1qdoVUfom9w6SMpBpojqmV01+Y=
dependencies:
prepend-http "^2.0.0"
query-string "^5.0.1"
sort-keys "^2.0.0"
npm-conf@^1.1.0:
version "1.1.3"
resolved "https://registry.npm.taobao.org/npm-conf/download/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
integrity sha1-JWzEe9DiGMJZxOlVC/QTvCGSr/k=
dependencies:
config-chain "^1.1.11"
pify "^3.0.0"
object-assign@^4.0.1, object-assign@^4.1.0:
version "4.1.1"
resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
once@^1.3.0, once@^1.4.0:
version "1.4.0"
resolved "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
onetime@^5.1.0:
version "5.1.2"
resolved "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz?cache=0&sync_timestamp=1597003638732&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fonetime%2Fdownload%2Fonetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
integrity sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=
dependencies:
mimic-fn "^2.1.0"
ora@^5.2.0:
version "5.2.0"
resolved "https://registry.npm.taobao.org/ora/download/ora-5.2.0.tgz?cache=0&sync_timestamp=1609228442604&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fora%2Fdownload%2Fora-5.2.0.tgz#de10bfd2d15514384af45f3fa9d9b1aaf344fda1"
integrity sha1-3hC/0tFVFDhK9F8/qdmxqvNE/aE=
dependencies:
bl "^4.0.3"
chalk "^4.1.0"
cli-cursor "^3.1.0"
cli-spinners "^2.5.0"
is-interactive "^1.0.0"
log-symbols "^4.0.0"
strip-ansi "^6.0.0"
wcwidth "^1.0.1"
p-cancelable@^0.4.0:
version "0.4.1"
resolved "https://registry.npm.taobao.org/p-cancelable/download/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0"
integrity sha1-NfNj1n1SCByNlYXje8zrfgu8sqA=
p-event@^2.1.0:
version "2.3.1"
resolved "https://registry.npm.taobao.org/p-event/download/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6"
integrity sha1-WWJ57xaassPgyuiMHPuwgHmZPvY=
dependencies:
p-timeout "^2.0.1"
p-finally@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
p-is-promise@^1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=
p-timeout@^2.0.1:
version "2.0.1"
resolved "https://registry.npm.taobao.org/p-timeout/download/p-timeout-2.0.1.tgz?cache=0&sync_timestamp=1608986761559&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-timeout%2Fdownload%2Fp-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038"
integrity sha1-2N0ZeVldLcATnh/ka4tkbLPN8Dg=
dependencies:
p-finally "^1.0.0"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.npm.taobao.org/pend/download/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
pify@^2.3.0:
version "2.3.0"
resolved "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
pify@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
pinkie-promise@^2.0.0:
version "2.0.1"
resolved "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
dependencies:
pinkie "^2.0.0"
pinkie@^2.0.0:
version "2.0.4"
resolved "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
prepend-http@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/prepend-http/download/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I=
proto-list@~1.2.1:
version "1.2.4"
resolved "https://registry.npm.taobao.org/proto-list/download/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
query-string@^5.0.1:
version "5.1.1"
resolved "https://registry.npm.taobao.org/query-string/download/query-string-5.1.1.tgz?cache=0&sync_timestamp=1609310850603&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquery-string%2Fdownload%2Fquery-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb"
integrity sha1-p4wBK3HBfgXy4/ojGd0zBoLvs8s=
dependencies:
decode-uri-component "^0.2.0"
object-assign "^4.1.0"
strict-uri-encode "^1.0.0"
readable-stream@^2.0.0, readable-stream@^2.3.0, readable-stream@^2.3.5:
version "2.3.7"
resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^3.4.0:
version "3.6.0"
resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha1-M3u9o63AcGvT4CRCaihtS0sskZg=
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
responselike@1.0.2:
version "1.0.2"
resolved "https://registry.npm.taobao.org/responselike/download/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
dependencies:
lowercase-keys "^1.0.0"
restore-cursor@^3.1.0:
version "3.1.0"
resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
integrity sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=
dependencies:
onetime "^5.1.0"
signal-exit "^3.0.2"
rimraf@^3.0.0:
version "3.0.2"
resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-3.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=
dependencies:
glob "^7.1.3"
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz?cache=0&sync_timestamp=1589129611964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0=
safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz?cache=0&sync_timestamp=1589129611964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=
seek-bzip@^1.0.5:
version "1.0.6"
resolved "https://registry.npm.taobao.org/seek-bzip/download/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4"
integrity sha1-NcQXH1WmgJFrUqB4WezztYV/IcQ=
dependencies:
commander "^2.8.1"
signal-exit@^3.0.2:
version "3.0.3"
resolved "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
integrity sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=
sort-keys-length@^1.0.0:
version "1.0.1"
resolved "https://registry.npm.taobao.org/sort-keys-length/download/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188"
integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=
dependencies:
sort-keys "^1.0.0"
sort-keys@^1.0.0:
version "1.1.2"
resolved "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz?cache=0&sync_timestamp=1609311186022&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsort-keys%2Fdownload%2Fsort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
dependencies:
is-plain-obj "^1.0.0"
sort-keys@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/sort-keys/download/sort-keys-2.0.0.tgz?cache=0&sync_timestamp=1609311186022&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsort-keys%2Fdownload%2Fsort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128"
integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=
dependencies:
is-plain-obj "^1.0.0"
strict-uri-encode@^1.0.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
integrity sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=
dependencies:
safe-buffer "~5.1.0"
strip-ansi@^6.0.0:
version "6.0.0"
resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
integrity sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=
dependencies:
ansi-regex "^5.0.0"
strip-dirs@^2.0.0:
version "2.1.0"
resolved "https://registry.npm.taobao.org/strip-dirs/download/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5"
integrity sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=
dependencies:
is-natural-number "^4.0.1"
strip-outer@^1.0.0:
version "1.0.1"
resolved "https://registry.npm.taobao.org/strip-outer/download/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631"
integrity sha1-sv0qv2YEudHmATBXGV34Nrip1jE=
dependencies:
escape-string-regexp "^1.0.2"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1608033330722&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=
dependencies:
has-flag "^4.0.0"
tar-stream@^1.5.2:
version "1.6.2"
resolved "https://registry.npm.taobao.org/tar-stream/download/tar-stream-1.6.2.tgz?cache=0&sync_timestamp=1609239360788&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar-stream%2Fdownload%2Ftar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
integrity sha1-jqVdqzeXIlPZqa+Q/c1VmuQ1xVU=
dependencies:
bl "^1.0.0"
buffer-alloc "^1.2.0"
end-of-stream "^1.0.0"
fs-constants "^1.0.0"
readable-stream "^2.3.0"
to-buffer "^1.1.1"
xtend "^4.0.0"
through@^2.3.8:
version "2.3.8"
resolved "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
timed-out@^4.0.1:
version "4.0.1"
resolved "https://registry.npm.taobao.org/timed-out/download/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
to-buffer@^1.1.1:
version "1.1.1"
resolved "https://registry.npm.taobao.org/to-buffer/download/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
integrity sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=
trim-repeated@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/trim-repeated/download/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE=
dependencies:
escape-string-regexp "^1.0.2"
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
dependencies:
safe-buffer "^5.0.1"
unbzip2-stream@^1.0.9:
version "1.4.3"
resolved "https://registry.npm.taobao.org/unbzip2-stream/download/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
integrity sha1-sNoExDcTEd93HNwhXofyEwmRrOc=
dependencies:
buffer "^5.2.1"
through "^2.3.8"
universalify@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/universalify/download/universalify-1.0.0.tgz?cache=0&sync_timestamp=1603179971960&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
integrity sha1-thodoXPoQ1sv48Z9Kbmt+FlL0W0=
universalify@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/universalify/download/universalify-2.0.0.tgz?cache=0&sync_timestamp=1603179971960&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
integrity sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc=
url-parse-lax@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/url-parse-lax/download/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
dependencies:
prepend-http "^2.0.0"
url-to-options@^1.0.1:
version "1.0.1"
resolved "https://registry.npm.taobao.org/url-to-options/download/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9"
integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
wcwidth@^1.0.1:
version "1.0.1"
resolved "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
dependencies:
defaults "^1.0.3"
wrappy@1:
version "1.0.2"
resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
xtend@^4.0.0:
version "4.0.2"
resolved "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=
yauzl@^2.4.2:
version "2.10.0"
resolved "https://registry.npm.taobao.org/yauzl/download/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
dependencies:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"