├── .gitignore ├── README.md ├── imgs ├── algorithm.png ├── async-coding.png ├── electron.png ├── es67more.png ├── event-loop.png ├── fe-engineer.png ├── fe-error.png ├── fe-faster.png ├── http-knowledge.png ├── miniprogram.png ├── node.png ├── react.png ├── safe.png ├── typescript.png └── vue.png ├── package-lock.json ├── package.json └── script └── build.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/** 2 | cached-docs/** 3 | .swp -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### About Me 2 | 3 | - 👨 I'm a Front-End Developer. 4 | - ⚡ I'm now focused on **Tech Product** / **Teach Lead** / **Deep-In-Series** 5 | 6 | ## Products 7 | 8 | Notely: https://notelyio.com/ 9 | 10 | > **Notely**: *Note* Friend*ly*
11 | 12 | Features as below: 13 | 14 | > Easy Using: Without Login 15 | 16 | > Type: Draw / Markdown / Text 17 | 18 | > Storage: Offline / Github / ... 19 | 20 | > Unlimited: Multi Level Directory 21 | 22 | ## Projects 23 | 24 | + [deep-in-babel](https://github.com/hoperyy/deep-in-babel)(2021 ~ now) 25 | 26 | 《深入理解 Babel》作者,图书编写中,[部分草稿](https://hoperyy.github.io/deep-in-babel) 27 | 28 | + [sync-directory](https://github.com/hoperyy/sync-directory)(2017) 29 | 30 | > A sometimes popular package 31 | 32 | > [npm](https://www.npmjs.com/package/sync-directory) weekly download count 12k+ (the top download count) 33 | 34 | + [what-does-tech-leader-do](https://github.com/hoperyy/what-does-tech-leader-do)(2021-12) 35 | 36 | > 《技术管理者的自我修养》,好的管理,可以最大限度的激发每个人的能力和善意 37 | 38 | + [plugin-anything](https://github.com/hoperyy/blog/issues/150)(2020) 39 | 40 | > Make pluginable applications. 41 | 42 | + [auto-compute-first-screen-time](https://github.com/hoperyy/auto-compute-first-screen-time)(2018) 43 | 44 | > Get first screen loading time automatically 45 | 46 | + [fix-colors-out-of-memory](https://www.npmjs.com/package/fix-colors-out-of-memory)(2022) 47 | 48 | > You surely know what happed with [colors](https://github.com/Marak/colors.js/issues/285) 49 | 50 | > Fix it! 51 | 52 | > [npm](https://www.npmjs.com/package/fix-colors-out-of-memory) was just publish for it! 53 | 54 | + [snippets](https://hoperyy.github.io/snippets/#/)(长期更新) 55 | 56 | > 日常工作、学习中常用的代码片段收集、复用 57 | 58 | + 独立解析某个文件的依赖树:[get-dependency-tree](https://github.com/hoperyy/get-dependency-tree)(2019/07/03) 59 | 60 | > 用该工具可以快速解析出:`js / vue / scss / sass / less / css` 类入口文件的依赖树,不再依赖 webpack 获取依赖树(webpack 暴露的获取方式较晦涩)。 61 | 62 | + [bio-cli: 前端开发一站式解决方案](https://github.com/weidian-inc/bio-cli)(2018) 63 | 64 | > 自动化流程:项目初始化 -- 开发环境启动 -- 打包。 65 | 66 | > 插件化。 67 | 68 | + 发起并维护着 [微店技术 blog](https://github.com/weidian-inc/weidian-tech-blog)(2019) 69 | 70 | ## 深入理解 Babel 71 | 72 | + 图书《深入理解 Babel》编写中,[部分草稿](https://hoperyy.github.io/deep-in-babel) 73 | 74 | + [项目地址](https://github.com/hoperyy/water) 75 | 76 | + 文章 77 | 78 | + [Babel概述](https://github.com/hoperyy/water/issues/6) 79 | 80 | + 工具 81 | 82 | + 独立解析某个文件的依赖树:[get-dependency-tree](https://github.com/hoperyy/get-dependency-tree) 83 | 84 | 用该工具可以快速解析出:`js / vue / scss / sass / less / css` 类入口文件的依赖树,不再依赖 webpack 获取依赖树(webpack 暴露的获取方式极其晦涩)。 85 | 86 | + 分享 87 | 88 | + [babel 插件开发全面理解](https://github.com/hoperyy/water/issues/4)(2019-05-05) 89 | + [babel 插件开发实践过程](https://github.com/hoperyy/water/issues/5)(2019-05-19) 90 | + [babel架构图(2019-12-05)](https://raw.githubusercontent.com/hoperyy/water/master/img/structure.png) 91 | + [微信小程序知识图谱](https://raw.githubusercontent.com/hoperyy/water/master/img/miniprogram.png) 92 | 93 | ## 思考 94 | 95 | + [对技术 TL 的思考: what does tech leader do](https://github.com/hoperyy/what-does-tech-leader-do)(2021-12-22) 96 | + [个人整理的知识体系思维导图](https://github.com/hoperyy/blog/issues/144)(2019/08/01) 97 | + [业务 Sense 培养之路](https://github.com/hoperyy/blog/issues/143)(2020/05/06) 98 | + [一种实现简单且舒服的前端接口异常处理方案](https://github.com/hoperyy/blog/issues/143)(2019/08/01) 99 | + [如何在项目中做到 0 bug?](https://github.com/hoperyy/blog/issues/140)(2019/04/12) 100 | + [如何维护并优化一个复杂项目](https://github.com/hoperyy/blog/issues/55)(2017) 101 | + [推进业务落地的经验](https://github.com/hoperyy/blog/issues/92)(2017)** 102 | + [收藏的文章](https://github.com/hoperyy/blog/issues/142)(2019/05) 103 | + [聊一聊前端业务开发](https://github.com/hoperyy/blog/issues/135)(2019/03/18) 104 | + [前端工作流](https://github.com/hoperyy/blog/issues/128)(2018) 105 | + [一次难得的多团队协作项目](https://github.com/hoperyy/blog/issues/47)(2016) 106 | + [优秀的前端要注意的素养](https://github.com/hoperyy/blog/issues/48)(2016) 107 | + [前端技能图谱](https://github.com/hoperyy/blog/issues/50)(2016) 108 | + [一次大促活动总结](https://github.com/hoperyy/blog/issues/46)(2016) 109 | + [工作中的方法论](https://github.com/hoperyy/blog/issues/45)(2015) 110 | + [何为优秀的前端?](https://github.com/hoperyy/blog/issues/49)(2015) 111 | + [2014年工作总结](https://github.com/hoperyy/blog/issues/44)(2014) 112 | 113 | ## 前端工程化 114 | 115 | + [vite 源码解读 · 核心链路 ](https://github.com/hoperyy/blog/issues/156)(2022/05/28) 116 | + [预检测 -- 微店的前端质量保证探索](https://github.com/hoperyy/blog/issues/153)(2021/05/31) 117 | + [commander.js 原理解析](https://github.com/hoperyy/blog/issues/152)(2021/02/22) 118 | + [2018 iWeb 峰会《微店前端工程化》分享 PPT](https://github.com/hoperyy/blog/issues/115)(2018/08/12) 119 | + [微店前端工程化迭代史](https://github.com/hoperyy/blog/issues/145)(2019/08/09) 120 | + [前端工程化简介](https://github.com/hoperyy/blog/issues/114)(2018) 121 | + [谈谈前端产品质量控制](https://github.com/hoperyy/blog/issues/100)(2018) 122 | + [远程同步文件的几种技术方案](https://github.com/hoperyy/blog/issues/4)(2017) 123 | + [解决 webpack/webpack-dev-server 监听文件时频繁触发编译和回调的问题](https://github.com/hoperyy/front-end-engineering/issues/4)(2017) 124 | + [webpack 深入配置](https://github.com/hoperyy/front-end-engineering/issues/15)(2017) 125 | + [webpack 经验谈](https://github.com/hoperyy/front-end-engineering/issues/14)(2017) 126 | + [启动一个 vue 项目](https://github.com/hoperyy/front-end-engineering/issues/1)(2017) 127 | + [项目个性化配置策略](https://github.com/hoperyy/front-end-engineering/issues/11)(2017) 128 | + [用纯 webpack 结构替代 gulp+webpack 结构开发脚手架](https://github.com/hoperyy/front-end-engineering/issues/10)(2017) 129 | + [脚手架与业务目录的目录结构浅析](https://github.com/hoperyy/front-end-engineering/issues/16)(2017) 130 | 131 | ## 性能优化 132 | 133 | + [终端性能优化杂谈](https://github.com/hoperyy/blog/issues/147)(2019) 134 | + [自动获取首屏时间原理](https://github.com/hoperyy/blog/issues/102)(2018) 135 | + [前端性能优化知识集合](https://github.com/hoperyy/blog/issues/108)(2017) 136 | + [《高性能 JavaScript》笔记](https://github.com/hoperyy/blog/issues/54)(2015) 137 | 138 | ## 框架 139 | 140 | + [vuex](https://github.com/hoperyy/blog/issues/117)(2018) 141 | + [vue ssr 那些事](https://github.com/hoperyy/blog/issues/99)(2017) 142 | + [vue 源码学习之:如何监听一个对象的变化](https://github.com/hoperyy/blog/issues/61)(2017) 143 | + [React / Redux](https://github.com/hoperyy/blog/issues/118)(2018) 144 | + [React 渲染性能提升](https://github.com/hoperyy/blog/issues/21)(2016) 145 | + [用 React 实现移动端单页应用](https://github.com/hoperyy/blog/issues/43)(2016) 146 | 147 | ## Node 148 | 149 | + [Event Loop 理解总结](https://github.com/hoperyy/blog/issues/131)(2019) 150 | + [koa-compose](https://github.com/hoperyy/blog/issues/132)(2019) 151 | + [RESTful 风格](https://github.com/hoperyy/blog/issues/120)(2018/08) 152 | + [SQL](https://github.com/hoperyy/blog/issues/119)(2018/08/24) 153 | 154 | ## JavaScript 155 | 156 | + [Currying Demo](https://github.com/hoperyy/blog/issues/146)(2019) 157 | + [《你不知道的 JavaScript》读书笔记](https://github.com/hoperyy/blog/issues/95)(2017) 158 | + [数组的几个方法](https://github.com/hoperyy/blog/issues/23)(2016) 159 | + [TypeScript 学习笔记](https://github.com/hoperyy/blog/issues/105) 160 | + [《JavaScript 设计模式》笔记](https://github.com/hoperyy/blog/issues/53)(2016) 161 | + [underscore 源码了解](https://github.com/hoperyy/blog/issues/5)(2015) 162 | + [事件冒泡](https://github.com/hoperyy/blog/issues/40)(2015) 163 | + [正则表达式语法规则](https://github.com/hoperyy/blog/issues/7)(2015) 164 | + [jQuery-1.7.1 源码阅读笔记](https://github.com/hoperyy/blog/issues/9)(2015) 165 | + [js 基础](https://github.com/hoperyy/blog/issues/28)(2015) 166 | 167 | ## CSS 168 | 169 | + [css 样式的百分比都相对于谁?](https://github.com/hoperyy/blog/issues/18)(2016) 170 | + [什么是 BFC?](https://github.com/hoperyy/blog/issues/16)(2016) 171 | + [flex 属性快速记忆](https://github.com/hoperyy/blog/issues/41)(2016) 172 | + [css 清除浮动的 3 个方法](https://github.com/hoperyy/blog/issues/17)(2014) 173 | + [css3 速查手册](https://github.com/hoperyy/blog/issues/13)(2015) 174 | + [css 书写顺序规范](https://github.com/hoperyy/blog/issues/6)(2014) 175 | 176 | ## 基础知识 177 | 178 | + [《图解 HTTP》 读书笔记](https://github.com/hoperyy/blog/issues/58)(2017) 179 | + [跨域那点事](https://github.com/hoperyy/blog/issues/25)(2016) 180 | + [聊聊 websocket](https://github.com/hoperyy/blog/issues/24)(2016) 181 | + [HTTP/HTTP/2.0/SPDY/HTTPS](https://github.com/hoperyy/blog/issues/20)(2016) 182 | + [gif/jpg/png/WebP 的区别](https://github.com/hoperyy/blog/issues/42)(2016) 183 | + [从输入 URL 到页面加载完成的过程中都发生了什么事情?](https://github.com/hoperyy/blog/issues/19)(2016) 184 | 185 | ## 工具 186 | 187 | + [chrome 插件开发总结](https://github.com/hoperyy/blog/issues/126)(2018/12/05) 188 | + [chrome 开发者工具](https://github.com/hoperyy/blog/issues/122)(2018) 189 | + [每天一个 linux 命令](https://github.com/hoperyy/blog/issues/112)(2017) 190 | + [配置你的 github pages](https://github.com/hoperyy/blog/issues/10)(2015) 191 | + [Git 速查手册](https://github.com/hoperyy/blog/issues/51)(2014) 192 | + [用油猴子定制你的个性化插件](https://github.com/hoperyy/blog/issues/8)(2014) 193 | 194 | # 碎语 195 | 196 | + #2022/02/11 悲观者正确,乐观者成功 197 | + #2021/05/07 为什么 npm publish 要忽略 package-lock.json? 198 | + #2020/04/02 休息休息 199 | + #2020/03/21 信息熵 200 | + #2020/03/18 把复杂的事情做简单,把简单的事情做复杂 201 | + #2020/03/16 着手建立完整的知识体系并产出 202 | + #2020/03/12 研究下文件加密 203 | + #2020/01/29 杭州超市的菜很贵! 204 | + #2020/01/25 加油,武汉! 205 | 206 | + #2020/01/17 对创业的感悟 207 | 208 | + 商业化产品的特点:易用、稳定 209 | + All In: 时刻思考 210 | + 角色:主导者 211 | + 定位 212 | + 该领域的 No.1 213 | + 思考必须充分 214 | 215 | + #2020/01/12 坦诚可沟通 216 | + #2020/01/11 换个思路,海阔天空 217 | + #2019/12/15 保持输出强度 218 | + #2019/12/02 身体第一 219 | + #2019/12/01 说话、做事,要优先**找**重点 220 | + #2019/11/28 在做事的过程中,不断动态调整优先级 221 | + #2019/09/26 深入再深入 222 | + #2019/07/17 以天为单位回顾目标进展 223 | + #2019/07/16 看到产品曙光 224 | + #2019/06/28 “提效”是很多成果的直接指导思想 225 | + #2019/06/25 越来越重视时间,重视单位价值最大化 226 | + #2019/06/03 下阶段重点:知识的体系化,模块化 227 | + #2019/05/30 知识管理方式确定为:markdown + 思维导图 228 | + #2019/05/17 项目管理方法论需整理 229 | + #2019/05/15 在别人的“事情”里做事,还是在自己的“事情”里做事 230 | + #2019/05/15 随时“准备好”的能力 231 | + #2019/05/06 创建了微信公众号,新阶段开始 232 | + #2019/05/04 花时间学习时间管理 233 | + #2019/04/25 严以做事,宽以待人 234 | + #2019/04/07 学会写小程序,不错 235 | + #2019/04/06 把时间用在可以积累的地方去 236 | + #2019/04/03 [2018 房子装修存档](https://github.com/hoperyy/blog/issues/138) 237 | + #2019/04/01# 发起了《多端统一开发》虚拟小组,希望有结果 238 | + #2019/03/19# 沉下心,放长线,专注个人成长 239 | + #2019/03/15# 重视代码可读性 240 | + #2019/03/14# 整理知识思维导图中…… 241 | + #2019/03/11# 做事前,想好各个方案的性价比 242 | + #2019/03/10# 规划,珍惜时间 243 | + #2019/03/07# BEM 很好用 244 | + #2019/02/08# 识货,是种能力 245 | + #2019/01/28# 充足的时间是做好事情的保证 246 | + #2019/01/03# 算法还是挺有意思的 247 | + #2019/01/02# 做好知识输出 248 | + #2019/01/01# [2018 年总结与 2019 年计划](https://github.com/hoperyy/blog/issues/130) 249 | + #2018/12/29# [滑雪技巧](https://github.com/hoperyy/blog/issues/129) 250 | + #2018/12/28# 没有稳定的职位,只有稳定的能力 251 | + #2018/12/27# 忽略完美,持续交付 252 | + #2018/12/07# 意外 253 | + #2018/12/01# 职业规划考虑重点:业务方向、时间 254 | + #2018/11/17# 数据化 255 | + #2018/11/13# 结论需充分的理由 256 | + #2018/11/09# 保持学习的强度 257 | + #2018/11/01# 演讲前需频繁演练 258 | + #2018/10/12# 需求梳理是一个技术活,值得花时间研究 259 | + #2018/10/07# 个人品牌在平时 260 | + #2018/10/04# 用图解的方式解说 261 | + #2018/10/02# 提前处理,能够避免很多问题 262 | + #2018/10/01# 懂得放弃边角问题,节省精力 263 | + #2018/09/30# 多想,少做 264 | + #2018/09/26# 工作需要有阶段化成果 265 | + #2018/09/25# 产品化自己的工作 266 | + #2018/09/21# 数据化工作效果,重视闭环 267 | + #2018/09/13# 错误的做事方法浪费不少时间 268 | + #2018/09/11# 保持强度,保持成长 269 | + #2018/09/09# 详细记录日常工作,以备不时之需 270 | + #2018/08/27# 觉得累了就休息 271 | + #2018/08/23# 学习 “如何把事情讲清楚” 272 | + #2018/08/07# 好好学习技术演讲 273 | + #2018/05/19# 架构师的水平极大影响团队的水平 274 | + #2018/04/28# 简单是稳定的前提 275 | + [#2018/04/21# 有赞前端技术开放日](https://github.com/hoperyy/blog/issues/107) 276 | + #2018/03/24# 不要过度设计 277 | + #2018/03/23# 小步快跑 278 | + #2018/03/20# 精力有限,关注一方面,另一方面可能会被忽略 279 | + #2018/03/18# 职场角色:执行者、驱动者 280 | + #2018/03/18# 完成搬家!和租房告别 281 | + #2018/03/16# 你的客户是谁?做事情前需要想清楚这个问题 282 | + #2018/03/03# 每个阶段都需要有技术突破 283 | + #2018/02/25# 技术、运气、情商 284 | + #2018/02/22# 好的技术人员的特点:做事快、质量高 285 | + #2018/02/22# 注意力 > 效率 > 时间 > 金钱 286 | + #2018/02/20# 不断站在更高的角度思考 287 | + #2018/02/17# 管理也是门技术 288 | + #2018/02/05# 产品化和技术化都非常重要 289 | + #2018/02/01# 系统化学习 290 | + #2018/01/25# 分析问题的套路:拆解 291 | + #2018/01/18# 评价在平时 292 | + #2018/01/16# 同一个问题,有不同的描述方式 293 | + #2018/01/15# 兜底方案是什么?正常服务之外是否有考虑? 294 | + #2018/01/13# 多思考,再行动 295 | + #2018/01/09# 低成本解决问题,高回报创造长期价值 296 | + #2017/12/24# 要做技术扛把子 297 | + #2017/11/22# 新起点,新机会 298 | + #2017/11/20# 优雅的代码,让人有查看的欲望;杂乱无章的代码,让人没有食欲 299 | + #2017/11/17# 如果把事情的完成度用百分比衡量的话,60% 可能是初步合格,90% 是优秀,100% 是很优秀,120% 是非常好。用百分比衡量一件事做的好的程度,是不错的角度。 300 | + #2017/11/15# 解决问题一定要思考 A/B Question 301 | + #2017/11/08# 通过看 issue 是解决开源项目问题的好办法 302 | + #2017/11/06# 软件开发就是把一个复杂的问题**分解**成一系列简单的问题,再把一系列简单的解决方案**组合**成一个复杂的解决方案 303 | + #2017/11/02# 三个技术角度:(1)深度:能够看到细节;(2)全局观:能够找到定位;(3)远瞻:能抓住核心 304 | + #2017/10/30# 头脑风暴:如果在优化性能的时候遇到瓶颈,不妨尝试绕过该问题,先解决其周边问题,比如**代码可读性** 305 | + #2017/10/27# 好好学习如何写 PPT 306 | + #2017/10/26# 用技巧解决非技术问题 307 | + #2017/10/25# 技术选型时要特别注意重要的技术节点 308 | + [#2017/10/19# #得到# 如何提升自知力](https://github.com/hoperyy/blog/issues/91)(2017) 309 | + #2017/10/17# 大局观,不能只关注一个点(2017) 310 | + #2017/10/16# 化整为零(2017) 311 | + #2017/10/09# 用方法论辅助自己(2017) 312 | + #2017/10/08# 用规划和计划消除紧急事务(2017) 313 | + #2017/10/08# 用方法论帮助自己(2017) 314 | + #2017/10/07# 多领域专家(2017) 315 | + #2017/10/06# 牢记目标和节点(2017) 316 | + [#2017/09/27# 技术储备相当重要](https://github.com/hoperyy/blog/issues/60)(2017) 317 | + [#2017/09/26# “需求池”这个概念不错](https://github.com/hoperyy/blog/issues/59)(2017) 318 | + [#2017/08/22# 在做事的时候多考虑“方法论”](https://github.com/hoperyy/blog/issues/57)(2017) 319 | + [#2017/08/19# 掌握一个新技能需要的时间其实挺短](https://github.com/hoperyy/blog/issues/56)(2017) 320 | 321 | -------------------------------------------------------------------------------- /imgs/algorithm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/algorithm.png -------------------------------------------------------------------------------- /imgs/async-coding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/async-coding.png -------------------------------------------------------------------------------- /imgs/electron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/electron.png -------------------------------------------------------------------------------- /imgs/es67more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/es67more.png -------------------------------------------------------------------------------- /imgs/event-loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/event-loop.png -------------------------------------------------------------------------------- /imgs/fe-engineer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/fe-engineer.png -------------------------------------------------------------------------------- /imgs/fe-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/fe-error.png -------------------------------------------------------------------------------- /imgs/fe-faster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/fe-faster.png -------------------------------------------------------------------------------- /imgs/http-knowledge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/http-knowledge.png -------------------------------------------------------------------------------- /imgs/miniprogram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/miniprogram.png -------------------------------------------------------------------------------- /imgs/node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/node.png -------------------------------------------------------------------------------- /imgs/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/react.png -------------------------------------------------------------------------------- /imgs/safe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/safe.png -------------------------------------------------------------------------------- /imgs/typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/typescript.png -------------------------------------------------------------------------------- /imgs/vue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hoperyy/blog/82af6e2c9e817eab29bae692904a528f763d939a/imgs/vue.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blog", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ansi-regex": { 8 | "version": "4.1.1", 9 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", 10 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" 11 | }, 12 | "ansi-styles": { 13 | "version": "3.2.1", 14 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 15 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 16 | "requires": { 17 | "color-convert": "^1.9.0" 18 | } 19 | }, 20 | "chalk": { 21 | "version": "2.4.2", 22 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 23 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 24 | "requires": { 25 | "ansi-styles": "^3.2.1", 26 | "escape-string-regexp": "^1.0.5", 27 | "supports-color": "^5.3.0" 28 | } 29 | }, 30 | "cli-cursor": { 31 | "version": "2.1.0", 32 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 33 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 34 | "requires": { 35 | "restore-cursor": "^2.0.0" 36 | } 37 | }, 38 | "cli-spinners": { 39 | "version": "2.2.0", 40 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", 41 | "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==" 42 | }, 43 | "clone": { 44 | "version": "1.0.4", 45 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 46 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" 47 | }, 48 | "color-convert": { 49 | "version": "1.9.3", 50 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 51 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 52 | "requires": { 53 | "color-name": "1.1.3" 54 | } 55 | }, 56 | "color-name": { 57 | "version": "1.1.3", 58 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 59 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 60 | }, 61 | "colors": { 62 | "version": "1.4.0", 63 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 64 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" 65 | }, 66 | "commander": { 67 | "version": "2.20.3", 68 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 69 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 70 | }, 71 | "deep-extend": { 72 | "version": "0.6.0", 73 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 74 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 75 | }, 76 | "defaults": { 77 | "version": "1.0.3", 78 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 79 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 80 | "requires": { 81 | "clone": "^1.0.2" 82 | } 83 | }, 84 | "escape-string-regexp": { 85 | "version": "1.0.5", 86 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 87 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 88 | }, 89 | "fs-extra": { 90 | "version": "7.0.1", 91 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", 92 | "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", 93 | "requires": { 94 | "graceful-fs": "^4.1.2", 95 | "jsonfile": "^4.0.0", 96 | "universalify": "^0.1.0" 97 | } 98 | }, 99 | "get-npm-package-version": { 100 | "version": "1.0.6", 101 | "resolved": "https://registry.npmjs.org/get-npm-package-version/-/get-npm-package-version-1.0.6.tgz", 102 | "integrity": "sha512-bBc/N6Tg8hbUK9IIdfRfAcRmgsv54ldus3+mVfJSKmYhe+qjOJ+eZj750sjS6g6h5RyUWWgsTmyra8OoW140NQ==" 103 | }, 104 | "graceful-fs": { 105 | "version": "4.2.3", 106 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", 107 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" 108 | }, 109 | "has-flag": { 110 | "version": "3.0.0", 111 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 112 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 113 | }, 114 | "hot-update-package": { 115 | "version": "1.0.6", 116 | "resolved": "https://registry.npmjs.org/hot-update-package/-/hot-update-package-1.0.6.tgz", 117 | "integrity": "sha512-th4oRPetAC6gebKMcennnmsv7byCgvgUUK8QpUxCMwUUapJvW7uswDQWWVck6FCuKL/XrhnDqkk3bFADZgWoUA==", 118 | "requires": { 119 | "colors": "^1.3.2", 120 | "fs-extra": "^7.0.0", 121 | "get-npm-package-version": "^1.0.6", 122 | "ora": "^3.0.0", 123 | "recursive-readdir-sync": "^1.0.6", 124 | "registry-url": "^4.0.0", 125 | "simple-array-diff": "^1.1.0" 126 | } 127 | }, 128 | "ini": { 129 | "version": "1.3.7", 130 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", 131 | "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" 132 | }, 133 | "jsonfile": { 134 | "version": "4.0.0", 135 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 136 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 137 | "requires": { 138 | "graceful-fs": "^4.1.6" 139 | } 140 | }, 141 | "log-symbols": { 142 | "version": "2.2.0", 143 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 144 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 145 | "requires": { 146 | "chalk": "^2.0.1" 147 | } 148 | }, 149 | "mimic-fn": { 150 | "version": "1.2.0", 151 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 152 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" 153 | }, 154 | "minimist": { 155 | "version": "1.2.6", 156 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 157 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 158 | }, 159 | "onetime": { 160 | "version": "2.0.1", 161 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 162 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 163 | "requires": { 164 | "mimic-fn": "^1.0.0" 165 | } 166 | }, 167 | "ora": { 168 | "version": "3.4.0", 169 | "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", 170 | "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", 171 | "requires": { 172 | "chalk": "^2.4.2", 173 | "cli-cursor": "^2.1.0", 174 | "cli-spinners": "^2.0.0", 175 | "log-symbols": "^2.2.0", 176 | "strip-ansi": "^5.2.0", 177 | "wcwidth": "^1.0.1" 178 | } 179 | }, 180 | "qute-cli": { 181 | "version": "1.0.4", 182 | "resolved": "https://registry.npmjs.org/qute-cli/-/qute-cli-1.0.4.tgz", 183 | "integrity": "sha512-fUw9s4hqqRRYXRvg2YmvhhdErd+BxOPKE7WSAs0N0RROoHU5comD5Ts7RYnHFzktA4odgt7L/+XFUr/kShfNSg==", 184 | "requires": { 185 | "commander": "^2.19.0", 186 | "fs-extra": "^7.0.1", 187 | "hot-update-package": "^1.0.5" 188 | } 189 | }, 190 | "rc": { 191 | "version": "1.2.8", 192 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 193 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 194 | "requires": { 195 | "deep-extend": "^0.6.0", 196 | "ini": "~1.3.0", 197 | "minimist": "^1.2.0", 198 | "strip-json-comments": "~2.0.1" 199 | } 200 | }, 201 | "recursive-readdir-sync": { 202 | "version": "1.0.6", 203 | "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz", 204 | "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=" 205 | }, 206 | "registry-url": { 207 | "version": "4.0.0", 208 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-4.0.0.tgz", 209 | "integrity": "sha512-WAfGLywivb8s2+Cfblq1UV+kOyzURHzWSJmciDvrmstr4bv/0lnVSB9jfoOfkxx5xNJ1OGlSFmZh9WYBLFJOPg==", 210 | "requires": { 211 | "rc": "^1.2.7" 212 | } 213 | }, 214 | "restore-cursor": { 215 | "version": "2.0.0", 216 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 217 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 218 | "requires": { 219 | "onetime": "^2.0.0", 220 | "signal-exit": "^3.0.2" 221 | } 222 | }, 223 | "signal-exit": { 224 | "version": "3.0.2", 225 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 226 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 227 | }, 228 | "simple-array-diff": { 229 | "version": "1.1.0", 230 | "resolved": "https://registry.npmjs.org/simple-array-diff/-/simple-array-diff-1.1.0.tgz", 231 | "integrity": "sha1-qAqSRBk+jeZurx93jDQ+f0/uFLE=" 232 | }, 233 | "strip-ansi": { 234 | "version": "5.2.0", 235 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 236 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 237 | "requires": { 238 | "ansi-regex": "^4.1.0" 239 | } 240 | }, 241 | "strip-json-comments": { 242 | "version": "2.0.1", 243 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 244 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 245 | }, 246 | "supports-color": { 247 | "version": "5.5.0", 248 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 249 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 250 | "requires": { 251 | "has-flag": "^3.0.0" 252 | } 253 | }, 254 | "universalify": { 255 | "version": "0.1.2", 256 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 257 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 258 | }, 259 | "wcwidth": { 260 | "version": "1.0.1", 261 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 262 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", 263 | "requires": { 264 | "defaults": "^1.0.3" 265 | } 266 | } 267 | } 268 | } 269 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blog", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "ghpage": "q docsite-push", 7 | "push": "git add . && git commit -m 'docs: update readme' && git push origin master && exit 0" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/hoperyy/blog.git" 12 | }, 13 | "author": "", 14 | "license": "ISC", 15 | "bugs": { 16 | "url": "https://github.com/hoperyy/blog/issues" 17 | }, 18 | "homepage": "https://github.com/hoperyy/blog#readme", 19 | "devDependencies": {}, 20 | "dependencies": { 21 | "qute-cli": "^1.0.4" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /script/build.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | const path = require('path'); 4 | const cwd = process.cwd(); 5 | 6 | const sortedDirArr = []; 7 | 8 | require('generate-docs-by-github-issue')({ 9 | username: 'hoperyy', 10 | repo: 'blog', 11 | targetDir: path.join(cwd, 'cached-docs'), 12 | beforeSort(issues) { 13 | issues.forEach(issueItem => { 14 | // 去掉标题中的 / 字符和空格 15 | issueItem.title = issueItem.title.replace(/\//g, '-').replace(/\s/g, '').replace(/(\[)|(\])/g, '-'); 16 | }); 17 | }, 18 | 19 | afterSort(issues) { 20 | issues.forEach(issueItem => { 21 | console.log(`+ [${issueItem.title}](${issueItem.html_url})`); 22 | }); 23 | } 24 | }); --------------------------------------------------------------------------------