134 - 《手撕源码 12:prettier 2.7 杠杠 cache 的实现》

发布于 2022年6月14日

昨天发布的 prettier 2.7 里支持了 --cache 参数,支持缓存能力,在有缓存时直接吐输入不做出入,从而大幅提升 prettier 的执行效率。这背后是如何实现的?

先看示例,

$ prettier --write --cache ./src
src/index.test.ts 0ms (cached)
src/index.ts 0ms (cached)

抱着好奇的心情,昨天在直播时就忍不住看了下 prettier 的实现。观察 PR 不难发现这次新增了几个依赖,file-entry-cache、find-cache-dir 和 sdbm。

1、file-entry-cache 虽然只有 Star 只有 30+,但周下载却有 1.8 千万+,包括 eslint、stylelint、textlint 等大牌库都是基于他来实现缓存。

// 1、引入依赖
const fec = require('file-entry-cache');
// 2、创建缓存实例
const cache = fec.create('foo.json', __dirname, /*基于文件校验*/true);
// 3、访问文件,批量或单个都可以,访

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。