Skip to content

eslint: avoid dev dependencies to reduce closure size #392126

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 24, 2025

Conversation

ciderale
Copy link
Contributor

Omitting npm dev dependencies reduces eslint closure size significantly. This is helpful when using eslint in build pipelines.
What is unclear to me, is there a specific reason to include the npm dev dependencies? Are they needed in some cases?

Following numbers from nix path-info --size --closure-size --human-readable on aarch64-darwin:

size of eslint closure remark
before: 438.3 MiB 2.7 GiB (includes apple-sdk, compiler, etc.)
after: 10.6 MiB 202.1 MiB (with npmInstallFlags --omit=dev)

Similar results on aarch64-linux (from within a docker container):

size of eslint closure
before: 546.3 MiB 2.1 GiB
after: 10.6 MiB 227.7 MiB

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux (in docker container)
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

Omitting npm dev dependencies reduces eslint closure size significantly.
This is helpful when using eslint in build pipelines. Following numbers
from `nix path-info --size --closure-size --human-readable` on
aarch64-darwin.

size of:    eslint    closure  remark:
before:  438.3 MiB    2.7 GiB  (includes apple-sdk, compiler, etc.)
after:    10.6 MiB  202.1 MiB  (npmInstallFlags --omit=dev)
@github-actions github-actions bot added 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. labels Mar 22, 2025
@nix-owners nix-owners bot requested a review from onny March 22, 2025 15:47
@onny
Copy link
Contributor

onny commented Mar 24, 2025

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 392126


x86_64-linux

✅ 1 package built:
  • eslint

@onny onny merged commit c97deca into NixOS:master Mar 24, 2025
26 of 27 checks passed
@onny
Copy link
Contributor

onny commented Mar 24, 2025

Thank you, very nice improvement 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants