feat(devkit): add loadConfigFile function for plugins to use #21511
+94
−108
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds
loadConfigFile
function to@nx/devkit
so plugins can use it to read config files in both CJS and ESM format. TS config files are handled as well.We try to load via
require
first, which should be faster and has better cache busting guarantees. If that fails, then we try to load usingimport()
because it is likely ESM.The ESM case should only happen when either:
.mjs
.ts
or.js
andpackage.json
specifies"type": "module"
By default (1) would be used for Nx workspaces, however repos like epic-stack uses ESM.
Current Behavior
Sometimes cache is not busted using
import()
.Expected Behavior
Prefer
require
for better cache busting, but fallback toimport()
which should work as well with?t=....
appended.