This PR adds subpath exports (https://nodejs.org/api/packages.html#exports) to terra-application to follow better JavaScript conventions and practices. Now, terra-application can be imported a series of submodules instead of utilizing on the internal lib path. It also removes the default ApplicationBase export as that is already provided through the application-base submodule.
Note: while this has breaking changes, it will be released in the next minor version as terra-application v2 has not been fully deployed to production yet.
before:
import TerraApplication from 'terra-application';
import * from 'terra-application/lib/browser-router-redirect';
import * from 'terra-application/lib/content';
import * from 'terra-application/lib/layouts';
import * from 'terra-application/lib/loader-components';
import * from 'terra-application/lib/mdx';
import * from 'terra-application/lib/menu-button';
import * from 'terra-application/lib/modals';
import * from 'terra-application/lib/pages';
import * from 'terra-application/lib/shared';
import * from 'terra-application/lib/site';
import * from 'terra-application/lib/utils/loaders';
import * from 'terra-application/lib/utils/event-emitter';
import * from 'terra-application/lib/webpack';
After:
import * from 'terra-application/browser-router-redirect';
import * from 'terra-application/content';
import * from 'terra-application/layouts';
import * from 'terra-application/loader-components';
import * from 'terra-application/mdx';
import * from 'terra-application/menu-button';
import * from 'terra-application/modals';
import * from 'terra-application/pages';
import * from 'terra-application/shared';
import * from 'terra-application/site';
import * from 'terra-application/utils';
import * from 'terra-application/webpack';
Testing
This change was tested using:
[x] WDIO
[x] Jest
[ ] Visual testing (please attach a screenshot or recording)
[ ] Other (please describe below)
[x] No tests are needed
In addition to testing these changes locally, this was also tested by installing these changes locally in a consuming project and running successfully running the jest tests and dev-site.
Reviews
In addition to engineering reviews, this PR needs:
Summary
This PR adds subpath exports (https://nodejs.org/api/packages.html#exports) to terra-application to follow better JavaScript conventions and practices. Now, terra-application can be imported a series of submodules instead of utilizing on the internal lib path. It also removes the default ApplicationBase export as that is already provided through the
application-base
submodule.Note: while this has breaking changes, it will be released in the next minor version as terra-application v2 has not been fully deployed to production yet.
before:
After:
Testing
This change was tested using:
In addition to testing these changes locally, this was also tested by installing these changes locally in a consuming project and running successfully running the jest tests and dev-site.
Reviews
In addition to engineering reviews, this PR needs:
Additional Details
Jest started supporting subpath exports in v28, so a companion PR to upgrade Jest was also opened: https://github.com/cerner/terra-toolkit/pull/863
Thank you for contributing to Terra. @cerner/terra