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、访问文件,批量或单个都可以,访