Description
Prerequisites
- I have written a descriptive issue title
- I have searched existing issues to ensure the issue has not already been raised
Issue
Summary
Reduce size of published packages by using .npmignore
, or files
in package.json
.
Motivation
With the Greener NHS programme, National Health Service organisations and bodies across the UK are looking at ways to become carbon neutral, reduce energy consumption, combat climate change, and at the same time save money that can then be spent instead on improving patient care.
The recent heatwaves and wildfires across Europe have exemplified the need to prioritize this.
I've been looking at this from the tech perspective within my hospital, and have already called out a supplier for their unnecessarily heavy web app (loading various versions of jquery and lodash and then not using them). It would be hypocritical for me to not look at the tools and frameworks we use internally, such as Fastify.
Whilst previous discussions have looked at this issue through the lenses of improving developer experience, environmental impacts have not been considered.
Rationale and Alternatives
Ignoring unused files could speed up installations, lower bandwidth usage, improve reliability on spotty connections, and leave more room on the hard drive. Registries and mirrors would also benefit; reduced resources likely means lower energy consumption and lower costs.
Users could use yarn's autoclean CLI to remove the unused files, but the files have already been downloaded and bandwidth wasted at this point.
Implementation
Prior discussions have stated the want to include test files in published packages.
With this in mind, we could still ignore files and directories related to:
- CI/CD
- Examples
- Benchmarks
Example
- packed size: 210.5kB
- packed size with
.github
andexample/**
removed: 162.9kB (~23% reduction) - packed size with
.github
,example/**
, andtest/**
removed: 11.8kB (~94% reduction)
@fastify/static is downloaded around 400,000 times a month at present (will grow as more migrate from fastify-static) meaning it uses ~84.2GB/month.
Removing just the CI/CD and examples would drop that to ~65.16GB/month; removing the test files as well would drop that to ~4.72GB/month.