✨ Alias default exports with named exports #667
Merged
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.
What is this?
Default exports are a handy convenience for ES modules. However, with dynamic imports and commonjs modules, the default export must always be destructured due to
default
being a reserved word.By exporting defaults as named exports and aliasing them to default exports, much cleaner code can be written:
Tangential changes
While adding a named
@percy/env
export, I felt compelled to rename the class to match the package name more accurately (PercyEnv
).Packages that rely on
@percy/core
frequently need to perform some sort of request and utilizerequest
from@percy/client
to do so. When we add support for Yarn 2+, these packages will need to specifically declare a direct dependency on@percy/client
, which will then trigger extra unnecessary dependency notifications.This small inconvenience can be alleviated by re-exporting
request
through@percy/core
which already has a direct dependency on@percy/client
. While this PR adds the necessary export, imports throughout other packages will need to be updated when adding support for Yarn 2+.