Home

Awesome

<a name="harmonic" href="http://harmonicjs.com/"><img src="https://cdn.rawgit.com/JSRocksHQ/harmonic/e391ae462f3b047848f1783315de9edab019e197/harmonic-logo.svg" alt="Harmonic - The next static site generator" width="450"></a>

Build Status Dependency Status devDependency Status Gitter

Please note that this project is currently under development.
Contributions are very welcome!

Harmonic is being developed with some goals:

Check out the full Harmonic documentation.

Installing

Harmonic is available on npm:

npm install harmonic -g

For more details, check out the full documentation: Installing

Init

First thing you will need to do is to initialize a new Harmonic website.
It is as simple as:

harmonic init [PATH]

[PATH] is your website dir. The default path is the current dir.
Harmonic will prompt you asking for some data about your website:
Config

Harmonic will then generate a config file, which is a simple JSON object.
Any time you want, you can configure your static website with the CLI config command:

cd [PATH]
harmonic config

Now, enter in your website dir and you are ready to start creating posts!
For more details, check out the full documentation: Config

Blogging

Harmonic follows the same pattern as others static site generators that you may know.
You must write your posts in Markdown format.

New post:

cd your_awesome_website
harmonic new_post "Hello World"

New Post

After running new_post, a markdown file will be generated in the /src/posts/[lang] folder, ready for editing.

Markdown header

The markdown file have a header which defines the post metadata.
Example:

<!--
layout: post
title: hello world
date: 2014-05-17T08:18:47.847Z
comments: true
published: true
keywords: JavaScript, ES2015
description: Hello world post
categories: JavaScript, ES2015
authorName: Jaydson
-->

You can check all possible header values in the header page.

Markdown content

Everything after the header is the post content.
Example:

# Hello World  
This is my awesome post using [Harmonic](https://github.com/JSRocksHQ/harmonic).  

This is a list:  
- Item 1
- Item 2
- Item 3

The code above will be parsed to something like this:

<h1 id="hello-world">Hello World</h1>
<p>
  This is my awesome post using 
  <a href="https://github.com/JSRocksHQ/harmonic">Harmonic</a>.
</p>
<p>This is a list:  </p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>

For more details, you can check the full documentation: Blogging.

New Page

cd your_awesome_website
harmonic new_page "Hello World Page"

After running new_page, a markdown file will be generated in the /src/pages/[lang] folder, ready for editing.

Build

The build tool will generate the index page, posts, pages, categories, compile styles and ES2015+.

harmonic build

Run

To run your static server:

harmonic run

You can specify a port, by default Harmonic will use the 9356 port:

harmonic run 9090

Harmonic will also watch all files in the src directory and in the currently selected theme, triggering a new build and reloading the opened pages when changes are detected.

Help

harmonic --help

Also see the full Harmonic documentation.

Contributing

See the Contributing guide.