ds300 / ds300/patch-package

[Proposal] Reduce `patch-package` installation size

Open
#499 3 comments 5 reactions 0 assignees View on GitHub
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:

image

(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

image

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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.