blog

Anson's working / exploring footprints 🧙‍♀️

View on GitHub

工具选择

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 ❌

    • 对其他工具的配置又做一次自己的封装
    • 速度垫底 compare 1compare 2
    • 作者自己弃坑转向 turbopack (目前架构是 bundler 部分用 rust 重写的 parcel)

写作

需求有以下几点

  • 编辑体验
  • 内容搜索
  • 同步及版本管理
  • 阅览体验
  • 发布能力
  • 图床
  • 内容转移便利性
  • 可定制化需求

方案

  • vscode ✅

    • 配合 github 写 markdown
    • 阅览与发布可选 jekyll 之类 SSG 方案
  • notion ✅

    • 高效的富文本编辑体验
    • 协作、发布 web 版本
    • 替代 wiki / jira
    • 内容多了会卡
  • mac notes ✅

    • 记录私人信息与临时 idea

repo type

multi-repo

  • 代表百花齐放的文化, 不同的节奏和风格各自发展不会互相牵制
  • 核心问题是多个平级的仓库做依赖和规范升级的工作重复, 可通过包管理( util、component、scaffold-cli )和自动化脚本缓解

monorepo

  • 代表透明共享的文化和统一的规范, 鼓励开发者看到全部 update, 互相学习
  • 核心问题是 git 权限粒度无法管控, 只适合在项目层面使用
tags: tool