--- layout : 'default' css : 'build' title : 'Development' description : 'A guide to developing locally' type : 'Semantic Project' --- <%- @partial('header') %>

Running Locally

It may be useful to run the development docs locally when working on a forked version of semantic, as the docs themselves help in testing out changes to ui components.

1) Install Node

Semantic docs are written in DocPad which requires NodeJS.

Make sure npm does not require sudo to operate, this might cause permissions issues.

2) Install Dependencies

// docpad is used to generate static sites like semantic docs npm install -g docpad
// eco is used for templating inside documentation docpad install eco
// grunt is used to automated tasks like concatenating and minifying files npm install -g grunt-cli

3) Fork Semantic

4) Start Your Server

docpad run

Docpad should now run an instance of semantic-ui.com locally you can access at http://localhost:9778

Fixing Bugs

Watch Script

If you are working on fixing a UI component that is part of Semantic, your best bet is to work actively on the file in /src/{type}/{elementname}/ while running a watch script from grunt. This will rebuild the docs after you make changes, so you can see if you have corrected the issue you are fixing.

To see exactly what this is doing you can check out our commented gruntfile

grunt

The watch task is the default grunt task for Semantic, so you can start it quite simply.

Packaging Elements

For convenience there is also a separate grunt command for building minified, packaged, and compressed versions of the library.

grunt build

The Future

UI Dev Kits

We are working to create development kits for writing and distributing third party UI definitions. These, are planned to land after our 1.0 release and allow other developers to contribute ui components or reskins of existing components.

For more information on the development of the UI specification for third party components, please visit our community discussion boards on Trello

Development Boards

Public Contributor

Next: Library Introduction