cerner / terra-application

A framework to support application development with Terra components
Apache License 2.0
8 stars 13 forks source link

[terra-application] Add subpath exports #384

Closed sdadn closed 5 months ago

sdadn commented 5 months ago

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:


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:

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