Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/felixge/node-romulus

Building static empires with node.js.
https://github.com/felixge/node-romulus

Last synced: about 2 months ago
JSON representation

Building static empires with node.js.

Awesome Lists containing this project

README

        

# romulus

Building static empires with node.js.

**Install:** `[sudo] npm install -g romulus`

[![Romulus](romulus.jpg)](romulus.jpg)

## Features

Romulus is a static site generator (like jekyll) featuring:

* a clear folder convention
* ejs template processing
* generating css from less files
* github flavored markdown
* a local development server behaving like github pages
* deploying to github pages

**Planned:**

* page scripts that run before rendering
* partials that can be included on any page
* plugins (themes, blogging, google analytics, disqus, etc.)

You should use romulus if you want a simple tool for creating static github
pages with node.js.

## Creating a static page

Create a new directory, and inside this directory create the folder structure below:

**Note:** Only the `pages` folder is required, the other folders are optional.

```
/pages
/layouts
/public
```

Now create a file called `pages/index.html` and put some HTML into it:

```html

Hello World


```

Run this to build your static site:

```bash
$ romulus build my-site
```

You should now see a new folder called `my-site` containing your `index.html`
page exactly as you wrote it.

**Note:** If you ommit the `my-site` argument, romulus will default to naming
your output folder `build`.

For testing your site, you should run the local development server at
[http://localhost:8080/](http://localhost:8080/) by typing this:

```bash
$ romulus
```

## Layouts

In order to make this more interesting, let's say you want to wrap your new
page in a fancy layout. To do this you need to change your `pages/index.html`
file like this:

```html
<% this.layout = 'default' %>

Hello World


```

Now you need to create the layout itself, so add a file called
`layouts/default.html`:

```html



My static empire







My Header


<%- page %>

```

That's it, you should now see your page being rendered inside your template!

## Accessing page variables in your layout

Let's say you want to set a `title` variable in your page that should be used
by the layout. For this, add this to your page template:

```html
<% this.title = 'My title'; %>
```

And output it in your layout like this:

```html
<%= this.title %>
```

## Generating css from less files

Now that you have this wonderful site, you probably want to style it. To do so,
create a file called `public/css/main.less`:

```css
body{
h1{
color: #0080FF;
}
}
```

Sweet, your headline is now featuring my favorite color!

## Static file support

Any file placed in the `public` folder will be included at the top level of the
build output folder. The local development server also supports serving them.

## Using markdown

romulus natively supports
[github flavored markdown](https://github.com/isaacs/github-flavored-markdown)
for page files. Using markdown is as easy as creating a file with
a `.md` extension like `pages/markdown-rocks.md` and adding some markdown to it:

```html
<% this.layout = 'default'; %>

Markdown is **fun**, and you can still use EJS inside of your markdown
templates.
```

This page now will be served at `/markdown-rocks`.

## Deploying to github pages

Deploying to github pages is as simple as:

```
romulus deploy
```

This should work well for project pages, but has not been tested for
organization pages yet.

## License

MIT License.