This library is based on https://github.com/bcgov/entity/blob/master/rfcs/rfc-shared-components.md.
The Storybook (sample) pages for this library are at https://bcgov.github.io/bcrs-shared-components/.
Note: use Node v12 for the steps below.
git clone git@github.com:bcgov/bcrs-shared-components.git
cd bcrs-shared-components
git fetch --all
git reset --hard origin/main
Warning: this overwrites any uncommitted changes on your branch! Stash first if needed.
git co -b my-feature-branch
npm i // if new repo, first use Node < 16, then you can use Node 16
npm i --global lerna // if you didn't do this previously
lerna bootstrap --hoist
This updates the node_modules/ in the sub-folders.
npm run test:unit MyComponent
npm run storybook:build
npm run storybook
Storybook should open in your browser (and will auto-rebuild on code changes).
Note: GitHub Pages are used to serve the Storybook app folder. As this requires a developer to build before committing, they should ensure that they are building the latest code (ie, including all other recent changes in the repo).
git push --set-upstream origin my-feature-branch
git co main
git fetch origin
git reset --hard origin/main
lerna version --include-merged-tags
Note: This step will create new tags and commit them!
lerna publish from-package
Note: For this step, you need to be logged in to NPM (along with permissions on this library)... follow the prompts if applicable.
If you want, you can create a new shared package for supporting code (eg, "interfaces"). Or, you can just create a local copy of the files that you need (eg, with only the content that you need) that your shared component will use when running in Storybook. When your component is running in your actual app, it would use the app's copy of those files.
Eg, the following will use the bcrs-shared-components files in Storybook, or your app's files when deployed:
import { DateMixin, FilingMixin } from '@/mixins'
The only downside to this approach is that the bcrs-shared-components' files need to provide the same functionality as the app's files -- duplicate code. Also, the bcrs-shared-component's files will be unversioned. However, in some cases, these are acceptable compromises in order to maintain clean code.