-
Notifications
You must be signed in to change notification settings - Fork 49k
[ci] Reduce non-deterministic builds for eslint-plugin-react-hooks #33026
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
Conversation
See rollup/plugins#1425 Currently, `@babel/helper-string-parser/lib/index.js` is either emitted as a wrapped esmodule or inline depending on the ordering of async functions in `rollup/commonjs`. Specifically, `@babel/types/lib/definitions/core.js` is cyclic (i.e. transitively depends upon itself), but sometimes `@babel/helper-string-parser/lib/index.js` is emitted before this is realized. A relatively straightforward patch is to wrap all modules (see rollup/plugins#1425 (comment))
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR wraps all CommonJS modules with a stricter configuration to mitigate non-deterministic builds for eslint-plugin-react-hooks.
- Updated the commonjs plugin invocation to include {strictRequires: true} when bundle.tsconfig exists
- Added an inline comment with a reference to the relevant GitHub issue for context
Comments suppressed due to low confidence (1)
scripts/rollup/build.js:397
- Ensure that the 'strictRequires: true' configuration is fully supported by the current version of @rollup/commonjs and has been tested under all expected module ordering scenarios, given its impact on bundling behavior.
bundle.tsconfig != null ? commonjs({strictRequires: true}) : false,
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice find!
…33026) See rollup/plugins#1425 Currently, `@babel/helper-string-parser/lib/index.js` is either emitted as a wrapped esmodule or inline depending on the ordering of async functions in `rollup/commonjs`. Specifically, `@babel/types/lib/definitions/core.js` is cyclic (i.e. transitively depends upon itself), but sometimes `@babel/helper-string-parser/lib/index.js` is emitted before this is realized. A relatively straightforward patch is to wrap all modules (see rollup/plugins#1425 (comment)). This only regresses `eslint-plugin-react-hooks` bundle size by ~1.8% and is safer (see https://github.com/rollup/plugins/blob/master/packages/commonjs/README.md#strictrequires) > The default value of true will wrap all CommonJS files in functions which are executed when they are required for the first time, preserving NodeJS semantics. This is the safest setting and should be used if the generated code does not work correctly with "auto". Note that strictRequires: true can have a small impact on the size and performance of generated code, but less so if the code is minified. (note that we're on an earlier version of `@rollup/commonjs` which does not default to `strictRequires: true`) DiffTrain build for [0c28a09](0c28a09)
…acebook#33026) See rollup/plugins#1425 Currently, `@babel/helper-string-parser/lib/index.js` is either emitted as a wrapped esmodule or inline depending on the ordering of async functions in `rollup/commonjs`. Specifically, `@babel/types/lib/definitions/core.js` is cyclic (i.e. transitively depends upon itself), but sometimes `@babel/helper-string-parser/lib/index.js` is emitted before this is realized. A relatively straightforward patch is to wrap all modules (see rollup/plugins#1425 (comment)). This only regresses `eslint-plugin-react-hooks` bundle size by ~1.8% and is safer (see https://github.com/rollup/plugins/blob/master/packages/commonjs/README.md#strictrequires) > The default value of true will wrap all CommonJS files in functions which are executed when they are required for the first time, preserving NodeJS semantics. This is the safest setting and should be used if the generated code does not work correctly with "auto". Note that strictRequires: true can have a small impact on the size and performance of generated code, but less so if the code is minified. (note that we're on an earlier version of `@rollup/commonjs` which does not default to `strictRequires: true`) DiffTrain build for [0c28a09](facebook@0c28a09)
See rollup/plugins#1425
Currently,
@babel/helper-string-parser/lib/index.js
is either emitted as a wrapped esmodule or inline depending on the ordering of async functions inrollup/commonjs
. Specifically,@babel/types/lib/definitions/core.js
is cyclic (i.e. transitively depends upon itself), but sometimes@babel/helper-string-parser/lib/index.js
is emitted before this is realized.A relatively straightforward patch is to wrap all modules (see rollup/plugins#1425 (comment)). This only regresses
eslint-plugin-react-hooks
bundle size by ~1.8% and is safer (see https://github.com/rollup/plugins/blob/master/packages/commonjs/README.md#strictrequires)(note that we're on an earlier version of
@rollup/commonjs
which does not default tostrictRequires: true
)