Let's add a header to our app! Because headers can be shared with other components, we will create a common lib that others can import as well.
- Get familiar with generating project specific component libraries inside a folder
-
Stop the
nx serve
-
Generate a new empty React library called
store-ui-shared
in thelibs/store/ui-shared
folder. When asked, choosejest
as test runner, therollup
as a bundler andas-provided
naming convention.🐳 Hint
- it's a generator! you've used it before in the second lab, but instead of an
app
, we now want to generate alib
- use the
--help
command to figure out how to generate it in a directory and that it doesn’t create default component
- it's a generator! you've used it before in the second lab, but instead of an
-
Generate a new React component, called
header
, inside thesrc/lib
folder of the library you just created⚠️ Play around with the generator options so that the generated component is automatically exported from the lib's module🐳 Hint
use
--help
to figure out how to specify under which project you want to generate the new component and how to automatically have it exported and skip the component generation
-
Replace the
header
component's code -
Let's use the new shared header component we created
- Add your new component to
apps/store/src/app/app.tsx
🐳 Hint
import { Header } from '@bg-hoard/store-ui-shared';
<Header title="Board Game Hoard" /> <!-- right at the top - above our container --> <div className="{styles['container']}"></div>
Wrap the App component in a fragment (
<>
and</>
)⚠️ You might need to restart the TS compiler in your editor (CTRL+SHIFT+P
in VSCode and search forRestart Typescript
) - Add your new component to
-
Serve the project and test the changes
-
Run the command to inspect the dependency graph - What do you see? (Remember to "Show all projects" in left sidebar)
🐳 Hint
nx graph
-
Inspect what changed from the last time you committed, then commit your changes
🎓 If you get stuck, check out the solution