From 6cf7c394a83a0cb9f9914a1893c65c89b3bf8055 Mon Sep 17 00:00:00 2001 From: neo Date: Mon, 25 Jan 2021 19:03:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=AB=99=E7=82=B9?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dumi/theme/builtins/Center.less | 10 + .dumi/theme/builtins/Center.tsx | 6 + .dumi/theme/layout.tsx | 128 ++++ .dumi/theme/style/layout.less | 316 +++++++++ .dumi/theme/style/markdown.less | 196 ++++++ .dumi/theme/style/variables.less | 26 + .editorconfig | 6 + .fatherrc.ts | 4 + .gitignore | 24 +- .prettierignore | 6 + .prettierrc | 11 + .umirc.ts | 46 ++ README.md | 218 +------ docs/guide/faq.md | 99 +++ docs/guide/how-it-works.md | 38 ++ docs/guide/index.md | 40 ++ docs/guide/m1.md | 116 ++++ docs/guide/start.md | 169 +++++ docs/index.md | 21 + package.json | 28 +- public/favicon.ico | Bin 0 -> 1150 bytes public/images/homebrew-256x256.png | Bin 0 -> 14840 bytes tsconfig.json | 29 + typings.d.ts | 2 + yarn.lock | 999 ----------------------------- 25 files changed, 1332 insertions(+), 1206 deletions(-) create mode 100644 .dumi/theme/builtins/Center.less create mode 100644 .dumi/theme/builtins/Center.tsx create mode 100644 .dumi/theme/layout.tsx create mode 100644 .dumi/theme/style/layout.less create mode 100644 .dumi/theme/style/markdown.less create mode 100644 .dumi/theme/style/variables.less create mode 100644 .fatherrc.ts create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .umirc.ts create mode 100644 docs/guide/faq.md create mode 100644 docs/guide/how-it-works.md create mode 100644 docs/guide/index.md create mode 100644 docs/guide/m1.md create mode 100644 docs/guide/start.md create mode 100644 docs/index.md create mode 100644 public/favicon.ico create mode 100644 public/images/homebrew-256x256.png create mode 100644 tsconfig.json create mode 100644 typings.d.ts delete mode 100644 yarn.lock diff --git a/.dumi/theme/builtins/Center.less b/.dumi/theme/builtins/Center.less new file mode 100644 index 0000000..1948e24 --- /dev/null +++ b/.dumi/theme/builtins/Center.less @@ -0,0 +1,10 @@ +@import (reference) '../style/variables.less'; + +.@{prefix}-center { + text-align: center; + margin: 16px 0; + + h2 > a::after { + display: none !important; + } +} diff --git a/.dumi/theme/builtins/Center.tsx b/.dumi/theme/builtins/Center.tsx new file mode 100644 index 0000000..3222b1e --- /dev/null +++ b/.dumi/theme/builtins/Center.tsx @@ -0,0 +1,6 @@ +import React from 'react'; +import './Center.less'; + +export default (props: any) => ( +
+); diff --git a/.dumi/theme/layout.tsx b/.dumi/theme/layout.tsx new file mode 100644 index 0000000..d77c48b --- /dev/null +++ b/.dumi/theme/layout.tsx @@ -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 => ( + <> +
+ {hero.image && } +

{hero.title}

+
+ {hero.actions && + hero.actions.map(action => ( + + + + ))} +
+ +); + +const Features = features => ( +
+ {features.map(feat => ( +
+ {feat.link ? ( + +
{feat.title}
+ + ) : ( +
{feat.title}
+ )} +
+
+ ))} +
+); + +const Layout: React.FC = ({ children, location }) => { + const { + config: { mode, repository }, + meta, + locale, + } = useContext(context); + const { url: repoUrl, branch, platform } = repository; + const [menuCollapsed, setMenuCollapsed] = useState(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 ( +
{ + if (menuCollapsed) return; + setMenuCollapsed(true); + }} + > + } + onMobileMenuClick={ev => { + setMenuCollapsed(val => !val); + ev.stopPropagation(); + }} + /> + + {showSlugs && ( + + )} + {showHero && Hero(meta.hero)} + {showFeatures && Features(meta.features)} +
+ {children} + {!showHero && !showFeatures && meta.filePath && !meta.gapless && ( +
+ {repoPlatform && ( + + {isCN + ? `在 ${repoPlatform} 上编辑此页` + : `Edit this doc on ${repoPlatform}`} + + )} + + {updatedTime} + +
+ )} + {(showHero || showFeatures) && meta.footer && ( +
+ )} +
+
+ ); +}; + +export default Layout; diff --git a/.dumi/theme/style/layout.less b/.dumi/theme/style/layout.less new file mode 100644 index 0000000..ff988d9 --- /dev/null +++ b/.dumi/theme/style/layout.less @@ -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; + } +} diff --git a/.dumi/theme/style/markdown.less b/.dumi/theme/style/markdown.less new file mode 100644 index 0000000..803b7d6 --- /dev/null +++ b/.dumi/theme/style/markdown.less @@ -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; + } +} diff --git a/.dumi/theme/style/variables.less b/.dumi/theme/style/variables.less new file mode 100644 index 0000000..222d8f9 --- /dev/null +++ b/.dumi/theme/style/variables.less @@ -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,iVBORw0KGgoAAAANSUhEUgAAAIQAAACCCAMAAACww5CIAAACf1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8YkP8AAAACCxMamv/6+voaGhoXi/YYjv8aoP8cq/8dr/8bo/8cqP8bpv8Ykv8drv8BAwUcrP8Zlf8Xjf/s7OzLy8scp/8anP8ZmP/d3d0BBArg4ODT09O7u7sEGCsKCgoanf8YlP/8/Pz09PTIyMgMTIV1dXUGKEVEREQ0NDQODg4GBgYdsv8dsf8Zl//m5uYVgOXj4+MWgtfW1tYTc87BwcERbLWzs7Ovr6+np6cQX6OgoKCTk5MMSXlwcHBra2tiYmIVFRUetf/39/fp6ekWhOkXi+QVfNvY2NjPz88TdcUSb7u6urq3t7cPYK0NUJGQkJCLi4ttbW0JO2cINFtVVVVRUVEHMFEHLEs6OjoEHDEiIiIcHBwXj/vx8fEWh+4Sb8gRbL+rq6upqakOVZiWlpaJiYmGhoYMSIF9fX15eXkKPnQLRHJMTExHR0c9PT0FHzkqKiomJiYEFyUBBw8bovfu7u4Wht4UedsUeMrFxcW9vb0RZrOkpKSampoPXZqAgIALQmtlZWUJOGJZWVkIMFcFIUExMTEwMDAtLS0DEh8Zl/v4+PgXj/QWhvEWhvAYku8YjuwUfNcUfNAVfc0RaLkSaKsRZ6kPWqENUYlbW1sCEBhkSPCkAAAAOHRSTlMA87y4BeKrltbFnUDo0MCup6D67t7ayZKGemtmWS8rEwLNso1wVEpFGaR+UDUlHwmBYls5i1oN/DMym4YAAAfTSURBVHjaxNndS1NxHMfxX5s6t1Kz1KzsuazMnqjgyxv03ovtQrYxUBEfLkREVBQf0AsFBRUUQvEiSVFQ0YsuiiIiqKC/oH+o31lzjtPZg55zttfVNnbx5ffw+X53pmx5UFl2+XLZ4zpVOPWlJFTntYyiBwF/VbX39Sv9upYU9/QHjbXe6qqayrrnylXXi0kov3GVuFiMuNqbHhIu3FcuuohZZ+jDh7mdXkwqlGtKMGmOSFzrGiYe5ZL4+vdsd/SHFyYxtIQlIdiD4ftCa39osTlxRtzwHO1tUOLm0XYk6T3asMRtdKHdUs6qv+L1l/vKgak2SYjqN+1yYg2G5NgR4Pd5/F7fk9sO3YhSkoYkaW40KCk2Rj9KUoikqmtOn8YpydE6J7xFyq5yUhxIjvZJcUfZ5EOb6oxGQmPdtEQlR4Mxupc6IoOdzWiVypabaF1BiesIS876OiSufRXtvO0DcSi2dAN+ZcclYFZsCaOps3nYUOKprDTiSWzqAioCnpIX9ep03pxkw7jYtMWx0pdn7Jb2i1jixN3cM6OGFCti0zgpyopOsw6xiZHoyHIPLIhNHdD7bWR+c7znFD3+PNp+vxhmRkNi28BoWAzBPbQHKhdlQLe4ogsoVTl4ijYjrmiKATdUdvfjh9Ely8DVHFvWe3HJMBBQ2QWAd+KSeeBxjtuxKC7ZzG07Ht0DusQlfwDfs2wZ4b2EYVBcESHO81BlcIWESXHFV7Qss5aXY1FxRSj7L7QAhv3tsaVBMVn8Ou1MFUtjW3sYKjL0jO6QWJiA7iZxysBbtDplpRT4KZbQWkUbHRMnGFUUKwuNaH1iaRJ+Tf8bDbqcWJH2HuCV+l9DpkuxtdsuGlpYHNAJ1FqNMjnE9QocOXJCPwJ309zPT9la8e5yUJwwC/jTBNWQ5EkIqEyzHROSJzvWSeFDW5M8OUArsdgMq2EmanOyGB4WSyMYAhZp2TwkJouw2mZvmusUSwtraA//m7DXZ8SsBxiQM5tGSxNuv3+ZU/NmIpfN9qDXxp1sO4LDNrE202J6cHE1TVq2f1uNiA39K9/7JJ0JwGe6nvOSZ4OA1/R0bFbyrBWoMUX2nOTZAOA3pcSXjFW7UOJnU17VAYeZv98pTvsB1KsTRVXAtqQVA/rFWSNo11SKiuRYZeknEBRn7WJ4rZKuX8pcROvBj6g4rLUZQ8NJYBo2Jb/ax2KkhKYf6I1I3oWngKqUhfgkBTCL1pics1elICaS/5Y9jk+XBdEBeJKhHZGCCLZAWTIkBqQgNlr+NbGi2wHgS1tTAbQNAxW3i1R58WWgd725ANZ7gXPFNaqagrvwt1t7aW0qiOIAPlErPqJCq6JWrW8r1ar1xf0n4NxnnpCELEKyCNmkJZSQRSCbQltooS4sVApiC10U2kWhFRUEEdGF4vuNH8g7c9NQ2pjepPcB/r5ADjlnzp2ZM+QMXHeYb+1WfO5hi5QfveYe33XJ4+d8a3MNQHbI75KhMt9z9wF4FRNcIi3wO94bAHJiQHCHNgmgh3QD8D1MCK6I+KeNCUgbgFFRcEX8Qwhov014o/juUlEoxeqrgpsA7oWp4AZprnpv1ANgShFcoU4a+36jMgOuVGYmnuJ1Wb0hKWqCC8QCgI4dqyfRbNCFoqDBX7Xz6C0AS660K3UKQCdhuqAbdqFT+B8mAXQTbhtbpM7ng4Yn1oytOwFMu5AP9QGAa4Qz8lFwvFWIH6G7Qjijc8/LDueDyvd4z151EYBvwOF+lRFTAK6TGi+ACWdLk0ozANqvkpojAFJKRnCSlFt3m8pLc9bJTylVn64ty9rJfEl1cpVKbH3uJ2v1QleUqOCI2h9xeeP0aVqLCA4JSLk6s7hu6CbkqOAIGpyB7iRZ5xLvFWlHEkITyjK/41/v9h0AC3lngpCz0PXWf0yDUcmBhFDt0T/flx8CkNL8VLAZjUhvAHSQek5AtyALdqP5e9BdbPCkZsbuFRKVvlRHs/W1AfC902yNgoriWwCeqw1fSL+J2VkWNBF8vckr6mPQ3ZcjtkVBA/3z4Ju6Bs5ANzck2BQFpUMTxlVZQ4ege95vUxRUHoPOe5s01OWBbryf2hEFDX4Fc4Vs4gaYZ3ZEQeXBJPgMcFPnwYzJVmeE6jGsGCNAE/rAlPIBamkMQv9YCLpzxJRjYMr5BLXyg5EvgTlKTOoEkw2LUct6dTz4ojqCNO04mMm4ZE150mhMuQ+jHppwAUxqUM5QK9qkPLIE5jhpygkvmHJYiW45FaL8IwmdZy9pUtc2MK9HtvgloZngJyMVp3tJ846ASb7Q1NYrg1JN+ukDs4e05LwHTO5bUKG0tRBEeXAKzJ3rpEXdB8C9fBIWKW0hhOBIBdy2K6R11zvALY6EFYE21yHF4OdKEkz7ObIlXXvAhV4OquoApaYbpCo9qayA29lLturibhimSgOSFjG1ILRwYnwShn09xArnT8PwdnHML6n+hl+2gD8Wjj+rLMOwq49Y5dZpVKUWS++VcCwdCdT5/Uhck5SH45VpVO3qJFbq2Y5Vvly2VBgQY5KqKWI6HY+n06KiqVJMSQyP/37wB6v29xGrnThyEDWh5dyr+fJscbQw/OjRcGG0OFvO3n+QSqKm7exlYgsvNgolkyFs1HGV2OQgTGsjNjnVBtO8Owj3nwbhgWnttgWxy2PaoWaC+AuAXqWYKHupMgAAAABJRU5ErkJggg=='; +@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'; +} diff --git a/.editorconfig b/.editorconfig index 07b9334..6b44702 100644 --- a/.editorconfig +++ b/.editorconfig @@ -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 diff --git a/.fatherrc.ts b/.fatherrc.ts new file mode 100644 index 0000000..cc3a27b --- /dev/null +++ b/.fatherrc.ts @@ -0,0 +1,4 @@ +export default { + esm: 'rollup', + cjs: 'rollup', +}; diff --git a/.gitignore b/.gitignore index 2ccbe46..c53daaa 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..7d43fcc --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +**/*.svg +**/*.ejs +**/*.html +package.json +.umi +.umi-production diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..94beb14 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,11 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "printWidth": 80, + "overrides": [ + { + "files": ".prettierrc", + "options": { "parser": "json" } + } + ] +} diff --git a/.umirc.ts b/.umirc.ts new file mode 100644 index 0000000..c796c17 --- /dev/null +++ b/.umirc.ts @@ -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 +}); diff --git a/README.md b/README.md index 665901a..5276795 100644 --- a/README.md +++ b/README.md @@ -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) +Gitter -`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)查阅。 - -

1. 脚本说明

- -**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/) - -

2. 安装说明

- -提前设置`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 -``` - -

3. 设置镜像

- -`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) diff --git a/docs/guide/faq.md b/docs/guide/faq.md new file mode 100644 index 0000000..804c027 --- /dev/null +++ b/docs/guide/faq.md @@ -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 [...] -- [...]' +``` + +解决方案: + +- 根据文章[解决 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` diff --git a/docs/guide/how-it-works.md b/docs/guide/how-it-works.md new file mode 100644 index 0000000..e8fdfb8 --- /dev/null +++ b/docs/guide/how-it-works.md @@ -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 diff --git a/docs/guide/index.md b/docs/guide/index.md new file mode 100644 index 0000000..db1a6f1 --- /dev/null +++ b/docs/guide/index.md @@ -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] 改进文档 + +湖中剑-homebrew + +[github]: https://github.com/ineo6/homebrew-install +[issues]: https://github.com/ineo6/homebrew-install/issues +[pulls]: https://github.com/ineo6/homebrew-install/pulls diff --git a/docs/guide/m1.md b/docs/guide/m1.md new file mode 100644 index 0000000..1ce95f0 --- /dev/null +++ b/docs/guide/m1.md @@ -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] diff --git a/docs/guide/start.md b/docs/guide/start.md new file mode 100644 index 0000000..7547ce7 --- /dev/null +++ b/docs/guide/start.md @@ -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 +``` + +

设置镜像

+ +### 中科大源 + +```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] 改进文档 + +湖中剑-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 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..729b326 --- /dev/null +++ b/docs/index.md @@ -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
Powered by [Neo](https://github.com/ineo6) +--- + +

快速安装 Homebrew

+ +```shell script +/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)" +``` + +
将以上命令粘贴至终端。
+
脚本内置中科大镜像,所以让Homebrew安装速度飞快。
+ +
如果对安装有疑问,请通过 快速开始 安装。
diff --git a/package.json b/package.json index 3335071..49b46df 100644 --- a/package.json +++ b/package.json @@ -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" } } diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..298f5b3af15852276ffc223c1b2e8af9c28efcc6 GIT binary patch literal 1150 zcmaizYe-XJ7{}kuG$=B4PSg*sDK-a{(42_rlIUAa^U{U9EHC61g}O~9MCj~;S|H?9 z5T{KfEp=X&ZrC&geds- z@@KG&iZH?udlBwjJEv-JK|h6^TShkaqKu&ai5#UbKRA#sYa$R=EGl0?$`SXi;n4 zb7sn0{4|m}U3JQ=g z`_{gEBIc{rqwmh13X7_$s(Qoc^G|cRTo+y}7Vq$r8>DM}Gb9dJ|I14x5+uyYjIVa) zd(05?oPhW)0u&u13uoA&JY4_ne)XkNDH35`G5MJkPFo>Xy$w+<1Y|1uKwPf{&Fs>z z#)kTNrBb=X;c%F2Hru8DnwlDvl9-TQs_HY}ZJGdyN)Hd324LaCDrm>&pt4T&T`Cb* z3Iu|S7^Hf5cBpCV9Xnv*g68-qtD9p}G z!I*x;GB-O7I&Cj0%)KoG0B2;6FDjBD{9S}(WTe+gr4q}H>(>^uv$N!Bsi|2sn$Iyt zP|zO6IY6PI+0Q&OHKCnY6&dV2cP jeSN(G0{jnT){i5!ei#d%%0U{#>o(bQ83++J74PT|%m9kA literal 0 HcmV?d00001 diff --git a/public/images/homebrew-256x256.png b/public/images/homebrew-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..cacf7f4e7d0e0641153c63aff95e2ebdff23124b GIT binary patch literal 14840 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 literal 0 HcmV?d00001 diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..de15e0a --- /dev/null +++ b/tsconfig.json @@ -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" + ] +} diff --git a/typings.d.ts b/typings.d.ts new file mode 100644 index 0000000..71e0e9f --- /dev/null +++ b/typings.d.ts @@ -0,0 +1,2 @@ +declare module '*.css'; +declare module '*.less'; diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 091fa86..0000000 --- a/yarn.lock +++ /dev/null @@ -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"