Skip to content
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

Use files property in package.json instead of .npmignore #5274

Draft
wants to merge 1 commit into
base: watson/enable-eslint-plugin-n
Choose a base branch
from

Conversation

watson
Copy link
Collaborator

@watson watson commented Feb 14, 2025

What does this PR do?

Delete .npmignore and use the files property in package.json to select the files to include in the published npm package.

Motivation

The n/no-unpublished-require ESLint rule incorrectly flagged some require calls from the root of our project into the packages directory as referencing files not published to npm. This was a bug in that rule.

After researching how we select files to be published or not, I found that we use .npmignore as an allowlist instead of a denylist - which it is normally meant to be used as. Thinking this might somehow trigger the bug, I deleted the .npmignore file and moved the allowlist to the files property in package.json and that fixed the problem.

Plugin Checklist

Additional Notes

I've verified the package produced by npm pack between this branch and master and the the only difference, is that the package produced on this branch doesn't include packages/memwatch/package.json. However, I think that was a mistake to include in the first place, so I'd say this change is actually an improvement.

@watson watson requested a review from a team as a code owner February 14, 2025 12:07
@watson watson marked this pull request as draft February 14, 2025 12:07
Copy link
Collaborator Author

watson commented Feb 14, 2025

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

Copy link

github-actions bot commented Feb 14, 2025

Overall package size

Self size: 8.68 MB
Deduped: 94.88 MB
No deduping: 95.4 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.4.0 | 29.44 MB | 29.44 MB | | @datadog/native-appsec | 8.4.0 | 19.25 MB | 19.26 MB | | @datadog/native-iast-taint-tracking | 3.3.0 | 13.77 MB | 13.78 MB | | @datadog/pprof | 5.5.1 | 9.79 MB | 10.17 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.8.0 | 2.6 MB | 2.74 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.1.0 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 835.4 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.2 | 53.63 kB | 53.63 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

Copy link

codecov bot commented Feb 14, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 81.24%. Comparing base (1d97adc) to head (7f255c8).

Additional details and impacted files
@@                      Coverage Diff                       @@
##           watson/enable-eslint-plugin-n    #5274   +/-   ##
==============================================================
  Coverage                          81.24%   81.24%           
==============================================================
  Files                                487      487           
  Lines                              21703    21703           
==============================================================
  Hits                               17633    17633           
  Misses                              4070     4070           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Feb 14, 2025

Datadog Report

Branch report: watson/npmignore
Commit report: 4c9a0b2
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 627 Passed, 0 Skipped, 14m 42.46s Total Time

@pr-commenter
Copy link

pr-commenter bot commented Feb 14, 2025

Benchmarks

Benchmark execution time: 2025-02-14 12:32:00

Comparing candidate commit 7f255c8 in PR branch watson/npmignore with baseline commit 1d97adc in branch watson/enable-eslint-plugin-n.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 905 metrics, 28 unstable metrics.

@watson watson force-pushed the watson/enable-eslint-plugin-n branch from 6c6e8b4 to 1d97adc Compare February 14, 2025 12:21
@watson watson self-assigned this Feb 14, 2025
Copy link
Member

@rochdev rochdev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some patterns were not carried over.

@watson
Copy link
Collaborator Author

watson commented Feb 15, 2025

@rochdev The only ones not carried over are the ones that are always included by default in all npm packages, which you can't not include. These are:

  • !index.js (because it's our main file)
  • !LICENSE
  • !package.json
  • !README.md

For details see the files property docs.

As I wrote in the description I've manually verified using npm pack and made a diff of the resulting tar ball and they are identical.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants