patch-package
patch-package copied to clipboard
[Proposal] Reduce `patch-package` installation size
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
[email protected]withpicocolors- The
picocolorsis "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
- The
- Replace
[email protected]with the Node.js built-infsAPI- The Node.js built-in
fsAPI has been improving and evolving, Andpatch-package@8is targeting Node.js 14+ already. - We can reduce the installation size by 185 KiB: https://packagephobia.com/result?p=fs-extra%409.1.0
- The Node.js built-in
- Replace
[email protected]with the Node.js built-infs.rmAPI- Node.js has introduced the
rm -rf-likefs.rmAPI, and it has been available since Node.js 14.14.0 - We can reduce the installation size by 166 KiB: https://packagephobia.com/[email protected]
- Node.js has introduced the
- Replace
json-stable-stringifywithfast-json-stable-stringify- The
json-stable-stringifyis shipped with aJSONpolyfill (jsonify). But we don't need theJSONpolyfill sincepatch-package@8is 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
- The
Together we can reduce the installation size of the patch-package by 470 KiB.
@ds300 What do you think?
I thought picocolors was a joke in response to nanocolors drama, but apparently it's now used by the author of nanocolors in his projects (yes, all 3 projects you mentioned above have the same author, so it's just a personal preference, not a statistic).
Anyway, why not colorette? (the project from which nanocolors was originally copied)
Anyway, why not
colorette? (the project from whichnanocolorswas originally copied)
The installation size of the colorette (17 KiB) is 3x of picocolors (5.66 KiB) while only 7% faster (https://www.npmjs.com/package/colorette?activeTab=readme#benchmarks). So I'd still prefer picocolors.
Replace [email protected] with picocolors
Relevant: https://github.com/chalk/chalk#why-not-switch-to-a-smaller-coloring-package