Microsoft / YamUI
- среда, 8 ноября 2017 г. в 03:13:47
Reusable component framework for Yammer.com
This is the UI component framework for Yammer.com.
It is built with React on top of Office UI Fabric components. Unit tests are run through Jest, isolated development environment and documentation is provided by Styleguidist, and visual diff regression is done with Puppeteer and pixelmatch. Visual diff tasks run within a Docker container to ensure consistency between local development environments and CI.
If necessary, add YamUI to your project.
npm install --save yamui
Import yamui/dist/yamui-base.css
into your app. You could link to it directly before your own CSS, or import it through JS/CSS and include it at the top of your CSS bundle. This file is currently about 4kb minified+gzipped. This is a requirement as YamUI expects to own the baseline styles of the page.
You can read all documentation for our components in our living styleguide.
Each component is compiled from its TypeScript source into yamui/dist/components
. This allows you to import the individual components you need and keep your bundle size smaller. Note that each component may import its own CSS and other JS dependencies so you may need to adjust your build process to accommodate.
Example importing a Button
component:
import Button, { ButtonSize, ButtonColor } from 'yamui/dist/components/Button';
Example using a Button
component:
<Button size={ButtonSize.SMALL} color={ButtonColor.SECONDARY} text="Click me!" />
git clone https://github.com/Microsoft/YamUI.git
cd YamUI
npm install
To run visual diff regression tests:
y
in your ~/.zshrc
or ~/.bashrc
file for the yamui-docker
executable that looks like alias y="./yamui-docker"
. Visual diff tasks need to run in Docker via the y
alias, e.g. y run test
and y run test:visual
.It's best to have at least 30GB of free space for Docker containers and images. If you find that Docker is taking up too much space, try the following:
ls -lha ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
docker rmi $(docker images -a -q)
docker rm $(docker ps -a -f status=exited -q)
rm ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
npm run start:dev
and visit localhost:5555/src/components
directory.<ComponentName>.md
file in your component's directory with usage examples. These examples are important because they document how components should be used and what options/configurations they accept. These examples will also be used in visual diff regression tests to ensure new changes are deliberate and approved before PRs are merged.npm run start:test
will start Jest in watch mode, showing passing status and a coverage report. The CLI task remains active and will re-test automatically as you make changes.y run test:visual
will compile the components, build+export a static version of the styleguide, start a dev server, take screenshots of each example, and fail if there are visual changes from the last approved screenshots. Unless you're developing on a Linux computer, this task must run within the Docker container via the y
shortcut. Running via npm run
on Mac or Windows will use your OS version of PhantomJS Webkit and will fail with subtle visual differences. Running in the Docker Linux container ensures consistent screenshots between all development environments and CI.npm run test:visual:approve
will approve your latest test images and overwrite the previous reference images. Use this when you are deliberately changing a component or its examples and you have manually verified that the new visual changes are correct.y run test
will run all validations - linting, unit tests and visual diff regression tests. If this passes you should be all good to go.src/components/Icon/icons/index.ts
using the filename as the label.<Icon icon="plus" />
.Travis is setup to automatically publish tagged releases to the npm registry. So if you want to release a new version of YamUI, just do the following:
git checkout -b awesome-release-branch
npm version patch -m "Release version %s"
git push
Then create a pull request, and once that gets reviewed and merged into master, Travis will publish your new version to npm! This is an alternative to creating releases manually or through GitHub's tools. Learn more about npm versioning here.
The YamUI project is currently in a pre-release state. We are building out the components and features we need for Yammer.com to meet our specific UX Design guidelines.
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
All files on the YamUI GitHub repository are subject to the MIT license. Please read the LICENSE file at the root of the project.
Note that we depend on Fabric for fonts. Usage of the fonts and icons referenced in YamUI is subject to the terms of the assets license agreement.