UNPKG

14.3 kBMarkdownView Raw
1[![Build Status](https://travis-ci.org/patternfly/patternfly.svg?branch=master)](https://travis-ci.org/patternfly/patternfly)
2[![Dependency Status](https://gemnasium.com/badges/github.com/patternfly/patternfly.svg)](https://gemnasium.com/github.com/patternfly/patternfly)
3[![Code Climate](https://codeclimate.com/github/patternfly/patternfly/badges/gpa.svg)](https://codeclimate.com/github/patternfly/patternfly)
4[![npm version](https://badge.fury.io/js/patternfly.svg)](https://badge.fury.io/js/patternfly)
5
6[![Gitter](https://badges.gitter.im/patternfly/patternfly.svg)](https://gitter.im/patternfly/patternfly?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
7
8
9# [PatternFly](https://www.patternfly.org) reference implementation
10
11This reference implementation of PatternFly is based on [Bootstrap v3](http://getbootstrap.com/). Think of PatternFly as a "skinned" version of Bootstrap with additional components and customizations. For information on how to quickly get started using PatternFly, see the [Quick Start Guide](QUICKSTART.md). If you wish to contribute to PatternFly, please follow the instructions under "Contributing to PatternFly".
12
13
14# Installation
15
16### Install with NPM
17
18PatternFly can be installed and managed through [NPM](https://www.npmjs.com/). To do so, either add `patternfly` as a dependency in your `package.json` or run the following:
19
20```
21npm install patternfly --save
22```
23
24PatternFly stays up to date with the Node LTS [Release Schedule](https://github.com/nodejs/LTS#lts_schedule). If you're using PatternFly downstream, we suggest the use of an actively supported version of Node/NPM, although prior versions of Node may work.
25
26### Install with Bower
27
28PatternFly can be installed and managed through [Bower](http://bower.io/). To do so, either add `patternfly` as a dependency in your `bower.json` or run the following:
29
30```
31bower install patternfly --save
32```
33
34#### Using Wiredep?
35
36Are you using [Wiredep](https://github.com/taptapship/wiredep)? PatternFly's CSS includes the CSS of its dependencies. As a result, you'll want to add the following to your [Wiredep configuration](https://github.com/taptapship/wiredep#configuration) so you don't end up with duplicate CSS.
37
38```
39exclude: [
40 "node_modules/patternfly/node_modules/patternfly-bootstrap-combobox/css/bootstrap-combobox.css",
41 "node_modules/patternfly/node_modules/bootstrap-datepicker/dist/css/bootstrap-datepicker.css",
42 "node_modules/patternfly/node_modules/bootstrap-datepicker/dist/css/bootstrap-datepicker3.css",
43 "node_modules/patternfly/node_modules/bootstrap-select/dist/css/bootstrap-select.css",
44 "node_modules/patternfly/node_modules/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.css",
45 "node_modules/patternfly/node_modules/patternfly-bootstrap-treeview/dist/bootstrap-treeview.min.css",
46 "node_modules/patternfly/node_modules/c3/c3.css",
47 "node_modules/patternfly/node_modules/datatables/media/css/jquery.dataTables.css",
48 "node_modules/patternfly/node_modules/datatables.net-colreorder-bs/css/colReorder.bootstrap.css",
49 "node_modules/patternfly/node_modules/drmonty-datatables-colvis/css/dataTables.colVis.css",
50 "node_modules/patternfly/node_modules/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css",
51 "node_modules/patternfly/node_modules/font-awesome/css/font-awesome.css",
52 "node_modules/patternfly/node_modules/google-code-prettify/bin/prettify.min.css"
53],
54```
55
56### Sass and/or Rails
57
58A [Sass port of PatternFly](https://github.com/patternfly/patternfly-sass) is available, as is a [Sass-based Rails Gem](https://rubygems.org/gems/patternfly-sass).
59
60### AngularJS
61
62A set of [common AngularJS directives](https://github.com/patternfly/angular-patternfly) for use with PatternFly is available.
63
64# Contributing to PatternFly
65
66The following sections provide information on how to get started as a developer or designer in the PatternFly codebase. In order to set up your environment, two different types of dependencies will need to be set up. Please follow the instructions under "Development - Build Dependencies" (Node.js/Ruby) and "Development - Code Dependencies" below. If you wish to use PatternFly in your project, please follow the [Quick Start Guide](QUICKSTART.md) instead.
67
68## Development - Build Dependencies
69
70Development setup requires Node.js and Ruby. If you do not already have Node.js, npm, and Ruby installed on your system, see https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager and https://www.ruby-lang.org/en/downloads.
71
72## Development - Code Dependencies
73
74The PatternFly code includes a number of dependencies that are not committed to this repository. To add them, follow the instructions below under "Install NPM Dependencies". Please make sure you keep them updated (see [Keeping NPM Dependencies Updated](#keeping-npm-dependencies-updated)).
75
76## Development - Updating Dependencies
77
78The npm-check-updates tool is available and configured to apply dependency updates to the project by running the command `npm run ncu`. The package.json changes will have to be committed and a PR created.
79
80## Autoprefixer
81
82Patternfly uses [Autoprefixer](https://github.com/postcss/autoprefixer) to auto add prefixes to its output CSS. Since Patternfly extends some of the core Bootstrap3 less which contains prefixes, we also explicitly add prefixes in these cases to ensure backwards compatibility with Bootstrap3. If consuming Patternfly LESS and compiling, you can define your own target prefixes using [browserlist](https://github.com/ai/browserslist).
83
84### Install NPM Dependencies
85
86The development includes the use of a number of helpful tasks. In order to setup your development environment to allow running of these tasks, you need to install the local nodejs packages declared in `package.json`.
87
88To do this clone, and change directories into PatternFly:
89
90```
91cd [PathToYourRepository]
92```
93
94then
95
96```
97npm install
98```
99
100This should take care of the majority of dependencies.
101
102Since PatternFly is shrink wrapped, npm 3 will install all necessary development packages into `node_modules/patternfly/node_modules`. At this point, the gruntjs tasks are available for use such as starting a local development server or building the master CSS file.
103
104If you prefer a flat dependency structure, you can define your own dependencies explicitly. That will flatten out the node_modules structure and place dependencies in the root node_modules directory.
105
106Additionally you may need to install the grunt command line utility. To do this run:
107
108 npm install -g grunt-cli
109
110Test pages are optionally generated using [Jekyll](http://jekyllrb.com/). To use jekyll to build the test pages, ensure Ruby is installed and available then run:
111
112```
113npm run jekyll
114```
115
116or
117
118```
119gem install bundle
120bundle install
121```
122
123During the install you may be asked for your password as part of the [Ruby](https://www.ruby-lang.org/en/documentation/installation/) installation process.
124
125Next, set the environment variable PF_PAGE_BUILDER=jekyll. eg.:
126 PF_PAGE_BUILDER=jekyll grunt build
127
128#### Keeping NPM Dependencies Updated
129
130Anytime you pull a new version of PatternFly, make sure you also run
131
132```
133npm update
134```
135
136so you get the latest version of the dependencies specified in package.json.
137
138### Live Reload Server
139
140A local development server can be quickly fired up by using the Gruntjs server task:
141
142```
143npm start
144```
145
146or
147
148```
149grunt server
150```
151
152This local static asset server (i.e., [http://localhost:9000](http://localhost:9000)) has the advantage of having livereload integration. Thus, if you start the Gruntjs server, any changes you make to `.html` or `.less` files will be automatically reloaded into your browser and the changes reflected almost immediately. This has the obvious benefit of not having to refresh your browser and still be able to see the changes as you add or remove them from your development files. Additionally, any changes made to Jekyll source files (`tests/pages/`) will trigger a Jekyll build.
153
154### Coding Style
155
156See [http://codeguide.patternfly.org/](http://codeguide.patternfly.org/).
157
158### Commiting changes
159
160PatternFly uses the [semantic-release tool](https://github.com/semantic-release/semantic-release) to provide a continuous release mechanism for PatternFly. In order for this tool to correctly increment the project version, and include your changes in the generated release notes, you will have to format your commit messages according to a well-defined commit message format.
161
162We have configured the [commitizen tool](https://github.com/commitizen/cz-cli) to assist you in formatting your commit messages corrctly. To use this tool run the following command instead of `git commit`:
163
164```
165npm run commit
166```
167
168#### Git Commit Guidelines
169
170Alternatively, if you are familiar with the commititzen message format you can format the message manually. A summary of the commit message format is as follows:
171
172Each commit message consists of a **header**, a **body** and a **footer**. The header has a special
173format that includes a **type**, a **scope** and a **subject** ([full explanation](https://github.com/stevemao/conventional-changelog-angular/blob/master/convention.md)):
174
175```
176<type>(<scope>): <subject>
177<BLANK LINE>
178<body>
179<BLANK LINE>
180<footer>
181```
182
183##### Patch Release
184
185```
186fix(pencil): stop graphite breaking when too much pressure applied
187```
188
189##### Feature Release
190
191```
192feat(pencil): add 'graphiteWidth' option
193```
194
195##### Breaking Release
196
197```
198perf(pencil): remove graphiteWidth option
199```
200The tool will prompt you with several questions that it will use to correctly format your commit message. You can then proceed with your PR as you normally would.
201
202## Build
203
204### CSS
205
206In development, styling is written and managed through multiple lesscss files. In order to generate a CSS file of all styling, run the build Gruntjs task:
207
208```
209npm run build
210```
211
212or
213
214```
215grunt build
216```
217
218This task will compile and minify the lesscss files into CSS files located at `dist/css/patternfly.min.css` and `dist/css/patternfly-additional.min.css`.
219
220### PatternFlyIcons Font
221
222PatternFlyIcons font is generated using [IcoMoon](http://icomoon.io/app). Go to [manage projects](https://icomoon.io/app/#/projects) and import the project `PatternFlyIcons-webfont.json`. Load it and update as necessary. When finished, return to manage projects, and download the updated `PatternFlyIcons-webfont.json` file. Also generate the fonts. Please commit the updated `PatternFlyIcons-webfont.json` file, the updated font files and supporting LESS/CSS changes.
223For detailed instructions, please see our [PatternFly Icon Guide](PFICONS.md)
224
225## Tests
226
227The `tests/` directory contains HTML pages with component and pattern examples in order to facilitate development. Please consult the official documentation (see below) for full details on how to use PatternFly. The latest PatternFly test directory examples can be seen at [https://rawgit.com/patternfly/patternfly/master-dist/dist/tests/](https://rawgit.com/patternfly/patternfly/master-dist/dist/tests/).
228
229If you are developing on PatternFly and would like to provide a link to a test directory from your fork, TravisCI can be configured to create a copy of your branch with the dist files generated for you. No code changes are necessary to enable this, all that is needed is to login to [TravisCI](https://travis-ci.org/) and configure it to point at your PatternFly fork. The first three steps at their [Getting Started page](https://docs.travis-ci.com/user/for-beginners) provide instructions on how to do this. You will also need to add an AUTH_TOKEN variable to Travis generated in your GitHub account to allow Travis to connect to your fork.
230
231The HTML pages in `dist/tests` are generated using Jekyll. Do *not* edit these files directly. See `tests/pages` to change these files.
232
233### Unit Testing
234Unit tests are written for [Karma test server] (https://karma-runner.github.io/1.0/index.html) with [Jasmine](http://jasmine.github.io/)
235
236```
237npm test
238```
239
240or
241
242```
243grunt karma
244```
245
246### Visual Regression Testing
247
248Visual regression tests provide a way to detect if unintended visual changes have
249occured as a result of changes in the code. They work by taking screenshots of
250what components or pages should look like in a browser (known as references), and then
251comparing the references to screenshots of those components or pages with your code
252changes applied.
253
254In order for these tests to work you must have references generated before you
255make any code changes. This is done by running `npm run regressions:reference`,
256while the development server is running.
257
258After you have generated the references, you can run the tests at any time. This
259is done by running `npm run regressions:test`, while the development server is
260running. Once the tests are complete, you will be a shown the results in your
261browser.
262
263The steps for the entire process would like like this:
264
265- clone the project if needed
266- install the dependencies with `npm install` if needed
267- start the development server with `npm start`
268- generate the references with `npm run regressions:reference`
269- make any code changes that you would like to make
270- run the tests with `npm run regressions:test`
271
272## Documentation
273
274See [https://www.patternfly.org](https://www.patternfly.org) and [http://getbootstrap.com/](http://getbootstrap.com/).
275
276### Browser and Device Support
277
278Since PatternFly is based on Bootstrap, PatternFly supports [the same browsers as Bootstrap](http://getbootstrap.com/getting-started/#support) **excluding Internet Explorer 8**, plus the latest version of [Firefox for Linux](https://support.mozilla.org/en-US/kb/install-firefox-linux).
279
280*Important:* starting with the v2.0.0 release, **PatternFly no longer supports Internet Explorer 8**.
281
282### Product Backlog
283
284See [https://patternfly.atlassian.net/secure/RapidBoard.jspa?projectKey=PTNFLY&rapidView=4&view=planning](https://patternfly.atlassian.net/secure/RapidBoard.jspa?projectKey=PTNFLY&rapidView=4&view=planning).
285
286### Bug List
287
288Official tracking of bugs occurs in Jira. See https://patternfly.atlassian.net/issues/?filter=10304
289
290## License
291
292Modifications to Bootstrap are copyright 2013 Red Hat, Inc. and licensed under the [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).