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/.
- run
lerna bootstrap --hoist
to update depencency (for local development) - run
lerna version --include-merged-tags
and select a version (Do not run this from fork. It depends on git tags to identify changes) - run
lerna publish from-package
to publish to npm
git clone [email protected]:bcgov/bcrs-shared-components.git
cd bcrs-shared-components
git fetch --all
git reset --hard origin/master
Warning: this overwrites any uncommitted changes on your branch! Stash first if needed.
git co -b my-feature-branch
npm i
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 // only required the first time per feature
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 master
git fetch origin
git reset --hard origin/master
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.