[Proposal] Reduce `patch-package` installation size
- Dominant language
- TypeScript
- Stars
- 11.2k
- Forks
- 325
- PR merge metrics
- No merged PRs in 30d
Description
The installation size of the `patch-package` is reaching 2.33 MiB:
(https://packagephobia.com/result?p=patch-package)
And here is the current npm dependency graph of the `patch-package`:
https://npmgraph.js.org/?q=patch-package#zoom=w
I am wondering if we can reduce the installation size. And here is what I propose:
- Replace `chalk@4.1.2` with [`picocolors`](https://www.npmjs.com/package/picocolors)
- The `picocolors` is "14 times smaller and 2 times faster than chalk", and is used by popular libraries like postcss, autoprefixer, and stylelint.
- We can reduce the installation size by **94 KiB**: https://packagephobia.com/result?p=chalk%404.1.2, https://packagephobia.com/result?p=picocolors
- Replace `fs-extra@9.1.0` with the Node.js built-in `fs` API
- The Node.js built-in `fs` API has been improving and evolving, And `patch-package@8` is targeting Node.js 14+ already.
- We can reduce the installation size by **185 KiB**: https://packagephobia.com/result?p=fs-extra%409.1.0
- Replace `rimraf@2.7.1` with the Node.js built-in `fs.rm` API
- Node.js has introduced the `rm -rf`-like `fs.rm` API, and it has been available since Node.js 14.14.0
- We can reduce the installation size by **166 KiB**: https://packagephobia.com/result?p=rimraf@2.7.1
- Replace `json-stable-stringify` with [`fast-json-stable-stringify`](https://www.npmjs.com/package/fast-json-stable-stringify)
- The `json-stable-stringify` is shipped with a `JSON` polyfill (`jsonify`). But we don't need the `JSON` polyfill since `patch-package@8` is targeting Node.js 14+.
- We can reduce the installation size by **25 KiB**: https://packagephobia.com/result?p=json-stable-stringify, https://packagephobia.com/result?p=fast-json-stable-stringify
Together we can reduce the installation size of the `patch-package` by `470` KiB.
@ds300 What do you think?
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.