diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/404.html b/404.html
new file mode 100644
index 0000000..ce3cde6
--- /dev/null
+++ b/404.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ kite-notes
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/css/0.styles.f5731900.css b/assets/css/0.styles.f5731900.css
new file mode 100644
index 0000000..02b51a4
--- /dev/null
+++ b/assets/css/0.styles.f5731900.css
@@ -0,0 +1 @@
+code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#3eaf7c}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#3eaf7c}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}#nprogress{pointer-events:none}#nprogress .bar{background:#3eaf7c;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #3eaf7c,0 0 5px #3eaf7c;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#3eaf7c transparent transparent #3eaf7c;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#3eaf7c;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #389d70}.home .hero .action-button:hover{background-color:#4abf8a}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/kite-notes/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#3eaf7c}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#3eaf7c}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title,.dropdown-wrapper .mobile-dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#2c3e50}.dropdown-wrapper .dropdown-title:hover,.dropdown-wrapper .mobile-dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow,.dropdown-wrapper .mobile-dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .mobile-dropdown-title{display:none;font-weight:600}.dropdown-wrapper .mobile-dropdown-title font-size inherit:hover{color:#3eaf7c}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:1rem 1.5rem .45rem 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#3eaf7c}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #3eaf7c;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{display:none}.dropdown-wrapper .mobile-dropdown-title{display:block}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#3eaf7c}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #46bd87}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:419px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#767676}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#3eaf7c;border-left-color:#3eaf7c}.sidebar-heading.clickable:hover{color:#3eaf7c}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#3eaf7c}a.sidebar-link.active{font-weight:600;color:#3eaf7c;border-left-color:#3eaf7c}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}.badge[data-v-cd6f89c2]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-cd6f89c2],.badge.tip[data-v-cd6f89c2],.badge[data-v-cd6f89c2]{background-color:#42b983}.badge.error[data-v-cd6f89c2]{background-color:#da5961}.badge.warn[data-v-cd6f89c2],.badge.warning[data-v-cd6f89c2],.badge.yellow[data-v-cd6f89c2]{background-color:#e7c000}.badge+.badge[data-v-cd6f89c2]{margin-left:5px}.theme-code-block[data-v-492049b0]{display:none}.theme-code-block__active[data-v-492049b0]{display:block}.theme-code-block>pre[data-v-492049b0]{background-color:orange}.theme-code-group__nav[data-v-6667a46d]{margin-bottom:-35px;background-color:#282c34;padding-bottom:22px;border-top-left-radius:6px;border-top-right-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__ul[data-v-6667a46d]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__nav-tab[data-v-6667a46d]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:hsla(0,0%,100%,.9);font-weight:600}.theme-code-group__nav-tab-active[data-v-6667a46d]{border-bottom:1px solid #42b983}.pre-blank[data-v-6667a46d]{color:#42b983}
\ No newline at end of file
diff --git a/assets/img/build-view-1.c8113aa8.png b/assets/img/build-view-1.c8113aa8.png
new file mode 100644
index 0000000..f7d5de6
Binary files /dev/null and b/assets/img/build-view-1.c8113aa8.png differ
diff --git a/assets/img/build-view-2.463cf913.png b/assets/img/build-view-2.463cf913.png
new file mode 100644
index 0000000..73c80c2
Binary files /dev/null and b/assets/img/build-view-2.463cf913.png differ
diff --git a/assets/img/file-lifecycle.b65dc1f4.png b/assets/img/file-lifecycle.b65dc1f4.png
new file mode 100644
index 0000000..922b02c
Binary files /dev/null and b/assets/img/file-lifecycle.b65dc1f4.png differ
diff --git a/assets/img/git-vs-svn-1.ea94c3b2.png b/assets/img/git-vs-svn-1.ea94c3b2.png
new file mode 100644
index 0000000..01d6adb
Binary files /dev/null and b/assets/img/git-vs-svn-1.ea94c3b2.png differ
diff --git a/assets/img/git-workflow-1.53c7ba82.png b/assets/img/git-workflow-1.53c7ba82.png
new file mode 100644
index 0000000..7a73cca
Binary files /dev/null and b/assets/img/git-workflow-1.53c7ba82.png differ
diff --git a/assets/img/git-workflow-2.fa159868.png b/assets/img/git-workflow-2.fa159868.png
new file mode 100644
index 0000000..7bce1d4
Binary files /dev/null and b/assets/img/git-workflow-2.fa159868.png differ
diff --git a/assets/img/git-workflow-3.162afaf7.png b/assets/img/git-workflow-3.162afaf7.png
new file mode 100644
index 0000000..ab41d2f
Binary files /dev/null and b/assets/img/git-workflow-3.162afaf7.png differ
diff --git a/assets/img/global-config-1.26650587.png b/assets/img/global-config-1.26650587.png
new file mode 100644
index 0000000..3777148
Binary files /dev/null and b/assets/img/global-config-1.26650587.png differ
diff --git a/assets/img/global-config-2.0e25eba0.png b/assets/img/global-config-2.0e25eba0.png
new file mode 100644
index 0000000..6fb1313
Binary files /dev/null and b/assets/img/global-config-2.0e25eba0.png differ
diff --git a/assets/img/global-config-3.f2fb0a68.png b/assets/img/global-config-3.f2fb0a68.png
new file mode 100644
index 0000000..8cf1567
Binary files /dev/null and b/assets/img/global-config-3.f2fb0a68.png differ
diff --git a/assets/img/global-config-5.5b0bb3ad.png b/assets/img/global-config-5.5b0bb3ad.png
new file mode 100644
index 0000000..022ed13
Binary files /dev/null and b/assets/img/global-config-5.5b0bb3ad.png differ
diff --git a/assets/img/global-config-6.0fbc7b60.png b/assets/img/global-config-6.0fbc7b60.png
new file mode 100644
index 0000000..f0a77f0
Binary files /dev/null and b/assets/img/global-config-6.0fbc7b60.png differ
diff --git a/assets/img/global-config-7.890edb2b.png b/assets/img/global-config-7.890edb2b.png
new file mode 100644
index 0000000..491ddac
Binary files /dev/null and b/assets/img/global-config-7.890edb2b.png differ
diff --git a/assets/img/global-config-8.45d0ce81.png b/assets/img/global-config-8.45d0ce81.png
new file mode 100644
index 0000000..91be0e7
Binary files /dev/null and b/assets/img/global-config-8.45d0ce81.png differ
diff --git a/assets/img/global-config-9.eba1266a.png b/assets/img/global-config-9.eba1266a.png
new file mode 100644
index 0000000..a1f9e14
Binary files /dev/null and b/assets/img/global-config-9.eba1266a.png differ
diff --git a/assets/img/install-1.53b520eb.png b/assets/img/install-1.53b520eb.png
new file mode 100644
index 0000000..5a750ab
Binary files /dev/null and b/assets/img/install-1.53b520eb.png differ
diff --git a/assets/img/install-2.d9fdfaf9.png b/assets/img/install-2.d9fdfaf9.png
new file mode 100644
index 0000000..84c9739
Binary files /dev/null and b/assets/img/install-2.d9fdfaf9.png differ
diff --git a/assets/img/install-bash-2.b92287a2.png b/assets/img/install-bash-2.b92287a2.png
new file mode 100644
index 0000000..63f3c90
Binary files /dev/null and b/assets/img/install-bash-2.b92287a2.png differ
diff --git a/assets/img/install-config-1.33f1dbb1.png b/assets/img/install-config-1.33f1dbb1.png
new file mode 100644
index 0000000..271d674
Binary files /dev/null and b/assets/img/install-config-1.33f1dbb1.png differ
diff --git a/assets/img/install-config-2.61b26b47.png b/assets/img/install-config-2.61b26b47.png
new file mode 100644
index 0000000..0af07aa
Binary files /dev/null and b/assets/img/install-config-2.61b26b47.png differ
diff --git a/assets/img/install-done-1.06e95402.png b/assets/img/install-done-1.06e95402.png
new file mode 100644
index 0000000..711028c
Binary files /dev/null and b/assets/img/install-done-1.06e95402.png differ
diff --git a/assets/img/install-done-2.353b0230.png b/assets/img/install-done-2.353b0230.png
new file mode 100644
index 0000000..c93fbbf
Binary files /dev/null and b/assets/img/install-done-2.353b0230.png differ
diff --git a/assets/img/linux-file.cf47db04.jpg b/assets/img/linux-file.cf47db04.jpg
new file mode 100644
index 0000000..493dd85
Binary files /dev/null and b/assets/img/linux-file.cf47db04.jpg differ
diff --git a/assets/img/linux-mounting-1.aecba77b.png b/assets/img/linux-mounting-1.aecba77b.png
new file mode 100644
index 0000000..3ed4ce0
Binary files /dev/null and b/assets/img/linux-mounting-1.aecba77b.png differ
diff --git a/assets/img/linux-mounting-2.976e2351.png b/assets/img/linux-mounting-2.976e2351.png
new file mode 100644
index 0000000..3f60d62
Binary files /dev/null and b/assets/img/linux-mounting-2.976e2351.png differ
diff --git a/assets/img/linux-mounting-3.87609074.png b/assets/img/linux-mounting-3.87609074.png
new file mode 100644
index 0000000..d916b04
Binary files /dev/null and b/assets/img/linux-mounting-3.87609074.png differ
diff --git a/assets/img/pnpm_motivation_1.c8c32c46.jpg b/assets/img/pnpm_motivation_1.c8c32c46.jpg
new file mode 100644
index 0000000..7b34e49
Binary files /dev/null and b/assets/img/pnpm_motivation_1.c8c32c46.jpg differ
diff --git a/assets/img/pnpm_motivation_2.a23ee45d.jpg b/assets/img/pnpm_motivation_2.a23ee45d.jpg
new file mode 100644
index 0000000..b3aafc7
Binary files /dev/null and b/assets/img/pnpm_motivation_2.a23ee45d.jpg differ
diff --git a/assets/img/post-proccess-1.3e5d2236.png b/assets/img/post-proccess-1.3e5d2236.png
new file mode 100644
index 0000000..9c3d833
Binary files /dev/null and b/assets/img/post-proccess-1.3e5d2236.png differ
diff --git a/assets/img/reset-pwd.8c11753b.png b/assets/img/reset-pwd.8c11753b.png
new file mode 100644
index 0000000..5a7c0ef
Binary files /dev/null and b/assets/img/reset-pwd.8c11753b.png differ
diff --git a/assets/img/search.83621669.svg b/assets/img/search.83621669.svg
new file mode 100644
index 0000000..03d8391
--- /dev/null
+++ b/assets/img/search.83621669.svg
@@ -0,0 +1 @@
+
diff --git a/assets/img/simplify-dp.aa401773.gif b/assets/img/simplify-dp.aa401773.gif
new file mode 100644
index 0000000..a73ac1f
Binary files /dev/null and b/assets/img/simplify-dp.aa401773.gif differ
diff --git a/assets/img/simplify-vw.d2ad01c4.jpg b/assets/img/simplify-vw.d2ad01c4.jpg
new file mode 100644
index 0000000..38ad963
Binary files /dev/null and b/assets/img/simplify-vw.d2ad01c4.jpg differ
diff --git a/assets/img/system-config-1.2af55165.png b/assets/img/system-config-1.2af55165.png
new file mode 100644
index 0000000..47182b6
Binary files /dev/null and b/assets/img/system-config-1.2af55165.png differ
diff --git a/assets/js/10.2d4dac3b.js b/assets/js/10.2d4dac3b.js
new file mode 100644
index 0000000..a27aae5
--- /dev/null
+++ b/assets/js/10.2d4dac3b.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{265:function(t,s,n){t.exports=n.p+"assets/img/pnpm_motivation_1.c8c32c46.jpg"},266:function(t,s,n){t.exports=n.p+"assets/img/pnpm_motivation_2.a23ee45d.jpg"},313:function(t,s,n){"use strict";n.r(s);var a=n(13),p=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"pnpm"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pnpm"}},[t._v("#")]),t._v(" pnpm")]),t._v(" "),s("h2",{attrs:{id:"_1-npmp简介"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1-npmp简介"}},[t._v("#")]),t._v(" 1. npmp简介")]),t._v(" "),s("h3",{attrs:{id:"_1-1-pnpm特点"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1-1-pnpm特点"}},[t._v("#")]),t._v(" 1.1 pnpm特点")]),t._v(" "),s("ul",[s("li",[s("p",[s("mark",[t._v("【无痛切换】")]),t._v("与"),s("code",[t._v("npm")]),t._v("/"),s("code",[t._v("yarn")]),t._v("等主流包管理工具的使用类似,易于上手")])]),t._v(" "),s("li",[s("p",[s("mark",[t._v("【节省磁盘空间并提升安装速度】")]),t._v("采用"),s("code",[t._v("统一的包管理目录")]),t._v("对机器所安装的所有包进行管理")]),t._v(" "),s("ul",[s("li",[t._v("项目需要依赖时首先会去该目录下检索,存在则复用,没有则新添加至统一包管理目录;")]),t._v(" "),s("li",[t._v("如果是相同的依赖但不同版本时,只会检索该依赖下不同的依赖进行添加;")])])]),t._v(" "),s("li",[s("p",[s("mark",[t._v("【非扁平的 node_modules 目录】")]),t._v("依赖使用"),s("code",[t._v("硬链接(hard-link)")]),t._v("和"),s("code",[t._v("符号链接(symbolic link)")]),t._v("进行相互关联")]),t._v(" "),s("ul",[s("li",[t._v("在项目的"),s("code",[t._v("node_modules")]),t._v("目录中存在"),s("code",[t._v(".pnpm")]),t._v("目录,以及同级的、使用符号连接的依赖目录")]),t._v(" "),s("li",[s("code",[t._v(".pnpm")]),t._v("目录下面的部分依赖"),s("u",[t._v("硬链接")]),t._v("至"),s("code",[t._v("统一包管理目录")]),t._v(",而"),s("code",[t._v(".pnpm")]),t._v("目录同级的以来则是使用"),s("u",[t._v("符号链接")]),t._v("对依赖进行引用")])])]),t._v(" "),s("li",[s("p",[s("mark",[t._v("【多栖环境】")]),t._v("pnpm可以不需要对node的环境有太多依赖,因为自身可以设置使用node的具体版本")])])]),t._v(" "),s("p",[s("img",{attrs:{src:n(265),alt:"节省磁盘空间并提升安装速度",title:"节省磁盘空间并提升安装速度"}}),t._v(" "),s("img",{attrs:{src:n(266),alt:"非扁平的node_modules目录",title:"非扁平的node_modules目录"}})]),t._v(" "),s("h3",{attrs:{id:"_1-2-pnpm与npm-yarn的区别-优势-1-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-pnpm与npm-yarn的区别-优势-1-2"}},[t._v("#")]),t._v(" 1.2 pnpm与npm/yarn的区别(优势)"),s("sup",[t._v("1,2")])]),t._v(" "),s("ul",[s("li",[t._v("相比"),s("code",[t._v("npm2")]),t._v(" ,"),s("code",[t._v("pnpm")]),t._v("不会进行同样依赖的多次复制")]),t._v(" "),s("li",[t._v("相比"),s("code",[t._v("yarn")]),t._v("以及"),s("code",[t._v("npm3+")]),t._v(",不会有幽灵依赖(幽灵依赖是由于依赖声明丢失造成的)和,也不会有依赖分身(没有被提升的依赖依然复制多份)\\")])]),t._v(" "),s("h3",{attrs:{id:"_1-3-pnpm的弊端2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1-3-pnpm的弊端2"}},[t._v("#")]),t._v(" 1.3 pnpm的弊端"),s("sup",[t._v("2")])]),t._v(" "),s("ul",[s("li",[t._v("无法在不支持软连接的环境中使用"),s("code",[t._v("pnpm")]),t._v(",比如"),s("code",[t._v("Electron")]),t._v("应用")]),t._v(" "),s("li",[t._v("因为依赖安装在"),s("code",[t._v("统一的包管理目录")]),t._v("中的,调试依赖或使用"),s("code",[t._v("patch-package")]),t._v("给依赖打补丁不方便,可能会影响到其他项目")])]),t._v(" "),s("h2",{attrs:{id:"_2-安装与配置"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-安装与配置"}},[t._v("#")]),t._v(" 2. 安装与配置")]),t._v(" "),s("ul",[s("li",[s("p",[t._v("安装")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 安装(一般全局安装)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -g "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v("\n")])])])]),t._v(" "),s("li",[s("p",[t._v("配置")]),t._v(" "),s("ul",[s("li",[s("p",[s("strong",[t._v("node环境设置")])]),t._v(" "),s("p",[t._v("pnpm支持在没有node(npm)的环境下进行"),s("a",{attrs:{href:"https://www.pnpm.cn/installation",target:"_blank",rel:"noopener noreferrer"}},[t._v("安装"),s("OutboundLink")],1),t._v("。\n安装完成后,可以使用"),s("code",[t._v("pnpm env")]),t._v("指令对node版本进行设置")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 全局使用最新node版本")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("env")]),t._v(" use --global lts\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 全局使用具体node版本号的版本")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("env")]),t._v(" use --global xx.xx.x\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 全局使用预发布版本")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("env")]),t._v(" use --global nightly\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("env")]),t._v(" use --global rc\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("env")]),t._v(" use --global "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("16.0")]),t._v(".0-rc.0\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("env")]),t._v(" use --global rc/14\n")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("统一存储目录(内容寻址目录)")])]),t._v(" "),s("ul",[s("li",[t._v("自动生成\n会自动在当前磁盘分区的根目录生成"),s("code",[t._v(".pnmp-store")]),t._v("目录")]),t._v(" "),s("li",[t._v("手动生成")])]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" config "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("set")]),t._v(" store-dir "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("path"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("/.pnpm-store\n")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("镜像")])]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 查看镜像")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" config get registry \n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 切换镜像(淘宝镜像)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" config "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("set")]),t._v(" registry https://registry.npmmirror.com/\n")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("环境变量(Path)+全局指令目录(global-bin-dir)")])]),t._v(" "),s("ul",[s("li",[s("p",[t._v("自动配置环境")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 自动配置环境变量")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" setup\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 设置全局bin文件目录")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" config "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("set")]),t._v(" global-bin-dir "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("path"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("/.pnpm-global-bin-dir\n")])])])]),t._v(" "),s("li",[s("p",[t._v("手动设置")]),t._v(" "),s("ul",[s("li",[s("p",[t._v("Windows")]),t._v(" "),s("ol",[s("li",[t._v("设置变量:"),s("code",[t._v("PNPM_HOME")]),t._v(",变量值:"),s("code",[t._v("{path}/.pnpm-global-bin-dir")])]),t._v(" "),s("li",[t._v("变量该添加至Path中:"),s("code",[t._v("%PNPM_HOME%")])]),t._v(" "),s("li",[t._v("设置全局bin文件目录:")])]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" config "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("set")]),t._v(" global-bin-dir "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("path"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("/.pnpm-global-bin-dir\n")])])])]),t._v(" "),s("li",[s("p",[t._v("Linux")]),t._v(" "),s("p",[s("code",[t._v("TODO...")])])])])])])])])])]),t._v(" "),s("h2",{attrs:{id:"_3-常用-cli-操作"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-常用-cli-操作"}},[t._v("#")]),t._v(" 3. 常用 CLI 操作")]),t._v(" "),s("p",[t._v("对项目/依赖的相关操作与"),s("code",[t._v("npm")]),t._v("/"),s("code",[t._v("yarn")]),t._v("类似")]),t._v(" "),s("h3",{attrs:{id:"_3-1-添加-移除-更新"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-1-添加-移除-更新"}},[t._v("#")]),t._v(" 3.1 添加/移除/更新")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# []表示可替换选项,其中/分隔为选项可选")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 表示相应的依赖包名称")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 安装项目所有依赖")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" install"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 安装-全局依赖(从全局环境中添加指定的软件包)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" -g"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("--global"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("pkg"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 安装-开发依赖(添加至devDependencies配置项)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" -D"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("--save-dev"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("pkg"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 安装-生产依赖(添加至dependencies配置项)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("-P/--save-prod"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("pkg"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 删除-全局依赖(从全局环境中删除指定的软件包)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" remove"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("rm/uninstall/un"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" -g"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("--global"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("pkg"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 删除-开发依赖(从devDependencies配置项中移除)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" remove"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("rm/uninstall/un"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" -D"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("--save-dev"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("pkg"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 删除-生产依赖(从dependencies配置项中移除)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" remove"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("rm/uninstall/un"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("-P/--save-prod"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("pkg"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 更新-全局依赖")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" update"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("up"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" -g"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("--global"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("pkg"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 更新-开发依赖")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" update"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("up"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" -D"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("--dev"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("pkg"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 更新-生产依赖")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" update"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("up"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" -P"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("--prod"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("pkg"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),s("h3",{attrs:{id:"_3-2-清理"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-2-清理"}},[t._v("#")]),t._v(" 3.2 清理")]),t._v(" "),s("p",[t._v("删除不需要的软件包,"),s("mark",[s("strong",[t._v("不建议经常执行该指令")])])]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("pnpm")]),t._v(" prune\n")])])]),s("h3",{attrs:{id:"_3-3-运行脚本"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-3-运行脚本"}},[t._v("#")]),t._v(" 3.3 运行脚本")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#
+