v8-ui-components
Version:
A component lib for v8 storefront apps
109 lines (73 loc) • 2.63 kB
Markdown
# V8 SFUI Components
This project stores common v8.ui components
## Development
### Testing
```
npm run test
```
### Building
```
npm run build
```
### Storybook
To run a live-reload Storybook server on your local machine:
```
npm run storybook
```
To export your Storybook as static files:
```
npm run storybook:export
```
You can then serve the files under `storybook-static` using S3, GitHub pages, Express etc.
### Generating New Components
Included is a handy NodeJS util file under `util` called `create-component.js`. Instead of copy pasting components to create a new component, you can instead run this command to generate all the files you need to start building out a new component. To use it:
```
npm run generate /app/path/component YourComponentName
```
This will generate:
```
/src
/YourComponentName
YourComponentName.tsx
YourComponentName.story.tsx
YourComponentName.test.tsx
YourComponentName.interfaces.ts
```
The default templates for each file can be modified under `util/templates`.
Don't forget to add the component to your `index.ts` exports if you want the library to export the component!
### Installing Component Library Locally
Let's say you have another project (`test-app`) on your machine that you want to try installing the component library into without having to first publish the component library. In the `test-app` directory, you can run:
```
npm i --save ../react-component-library
```
which will install the local component library as a dependency in `test-app`. It'll then appear as a dependency in `package.json` like:
```JSON
...
"dependencies": {
...
"react-component-library": "file:../react-component-library",
...
},
...
```
Your components can then be imported and used in that project.
## Publishing
First, make sure you have an NPM account and are [logged into NPM using the `npm login` command.](https://docs.npmjs.com/creating-a-new-npm-user-account)
Then update the `name` field in `package.json` to reflect your NPM package name in your private or public NPM registry. Then run:
```
npm publish
```
## Usage
Let's say you created a public NPM package called `harvey-component-library` with the `TestComponent` component created in this repository.
Usage of the component (after the library installed as a dependency into another project) will be:
```TSX
import React from "react";
import { Button } from "v8-ui-components";
const App = () => (
<div className="app-container">
<h1>Hello I'm consuming the component library</h1>
<Button theme="primary" />
</div>
);
export default App;
```