Skip to content

Commit 0c28a09

Browse files
authored
[ci] Reduce non-deterministic builds for eslint-plugin-react-hooks (facebook#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`)
1 parent 143d3e1 commit 0c28a09

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

scripts/rollup/build.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,8 @@ function getPlugins(
393393
};
394394
},
395395
},
396-
bundle.tsconfig != null ? commonjs() : false,
396+
// See https://github.com/rollup/plugins/issues/1425
397+
bundle.tsconfig != null ? commonjs({strictRequires: true}) : false,
397398
// Shim any modules that need forking in this environment.
398399
useForks(forks),
399400
// Ensure we don't try to bundle any fbjs modules.

0 commit comments

Comments
 (0)