React UI component library for use at Pattern.
There are 2 ways to run this project:
- Run
pnpm dev
and set a frontend override in the application you are working with (Predict, Shelf, etc) in order to see your updates. - Run
pnpm storybook
to see a local instance of our Library in Storybook.
When making updates, it is important to get changes approved by the UX team and front-end team leads. Please utilize Chromatic to demo your updates before getting your PRs raised.
Before running Chromatic, you'll need to generate a .env
file with the necessary credentials and tokens. This process fetches secure parameters from AWS Parameter Store.
Ensure you have AWS CLI access configured by following the instructions in the Pattern Wiki - AWS CLI Access.
NOTES:
- You may need to first install the AWS CLI here before you can continue with the
aws configure sso
command. - There is a registration prompt that appears in the setup that is not specified in the wiki, but you can just press
return
orenter
to continue on in the setup.
-
Authenticate with AWS: Login to AWS through the command line using the development profile:
aws sso login --profile dev
-
Generate the .env file: Run the environment setup script to fetch parameters from AWS Parameter Store:
bash scripts/env.sh --profile dev
-
Verify setup: The script will create a
.env
file populated with Chromatic token mappings from the AWS development account parameter store. -
Run Chromatic: You can now run Chromatic as usual within your application:
pnpm chromatic
Note: The .env
file contains sensitive information and should never be committed to version control. It's already included in .gitignore
for security.
Typescript typechecking happens at build-time, so setting a frontend override won't help with typechecking. To ensure your types still work, you'll need to:
-
yalc publish
in this repo -
yalc link @patterninc/react-ui
in the repo where the code will be tested (shelf/predict/marketshare/etc.)
After that, you can easily push out updates/changes from here (react-ui) to the other repos by doing:
yalc push --scripts
Note: you can either install yalc
globally, or prefix all the previous commands with npx
, e.g. npx yalc publish
Do either of the following:
- Run
npm version patch
- Manually update the
package.json
version field by openingpackage.json
and incrementing the last number
Once you've tested the types, run
yalc remove @patterninc/react-ui
in the repo where this code was tested (Predict/Shelf/Marketshare/etc) to remove yalc changes
npm-publish.yml Github workflow automates the process of publishing a new version of a react-ui package to NPM and bumping the version in another repository. The workflow will run whenever a new commit is pushed to a master branch in react-ui Git repository. It automatically updates the versions of the following repositories.
- predict
- shelf-ui
- marketshare-ui
- toggle
- admin
- connect
Step 1: Add Github Actions Workflow to new repository.
Copy the workflow file from the admin repository and replace the repo name with the new repo name from the workflow file and push to master/main branch of repository
Step 2: Modify the npm-publish.yml Workflow to include the new repository version upgrade.
Inside the npm-publish.yml workflow, add a new job before "notify-slack-on-failure"
<new-repo-name>-upgrade-package:
needs: [publish]
runs-on: ubuntu-latest
name: <new-repo-name>-upgrade-package
if: needs.publish.outputs.publish_type != 'none'
steps:
- name: Execute <new-repo-name> GHA workflow to upgrade react-ui package with latest version
uses: convictional/trigger-workflow-and-wait@v1.3.0
with:
owner: patterninc
repo: <new-repo-name>
github_token: ${{ secrets.GHA_RUNNER_TOKEN }}
workflow_file_name: react-ui-package-upgrade.yml
ref: main
We can enable react-ui version bumping for new repositories by making the changes listed above.