工具选择
build tool
-
rollup ✅
- esm 专用 bundler,本身很简洁
- 对于 web 产物来说,要引入各种插件
- tree shaking 比 parcel 强, example
-
parcel ✅
- 带 cache 的 hmr 很快
- Lazy dev builds 和 vite 的 Dependency Pre-Bundling 殊途同归
- css code spliting 有加载顺序 bug
- 不支持 top-level await
- css 和 js 的 transformer 迁移到了 rust
- scope hosting 比 rollup 强 example
-
swc ✅
- 替代 babel 的方案
- 速度快,即使包含 node_modules 的转译
- plugin 支持数量比 babel 少
-
esbuild ✅
- 作为 bunlder 比 js 方案效率高很多
- 用作生产方案还不成熟
-
vite ✅
- 推广了 js modules
- 解析再 load 依赖的方式,比起打包(做了预解析),意味着资源从并行下载变成串行
- 开发 模式类比 JIT 区别于 AOT,生产还是需要引入 bundle
- 服务端是 dev server 而不是可分析的静态资源
-
rome ⏳
- 统一工具链,复用 AST,愿景很好
- 实际很难,前端工具链各个环节都在快速独立进化
- lint 和 prettier 部分有机会先进生产
-
webpack ❌
写作
需求有以下几点
- 编辑体验
- 内容搜索
- 同步及版本管理
- 阅览体验
- 发布能力
- 图床
- 内容转移便利性
- 可定制化需求
方案
-
vscode ✅
- 配合 github 写 markdown
- 阅览与发布可选 jekyll 之类 SSG 方案
-
notion ✅
- 高效的富文本编辑体验
- 协作、发布 web 版本
- 替代 wiki / jira
- 内容多了会卡
-
mac notes ✅
- 记录私人信息与临时 idea
repo type
multi-repo
- 代表百花齐放的文化, 不同的节奏和风格各自发展不会互相牵制
- 核心问题是多个平级的仓库做依赖和规范升级的工作重复, 可通过包管理( util、component、scaffold-cli )和自动化脚本缓解
monorepo
- 代表透明共享的文化和统一的规范, 鼓励开发者看到全部 update, 互相学习
- 核心问题是 git 权限粒度无法管控, 只适合在项目层面使用