Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/electerious/rosid

Just-in-time development server and static site generator.
https://github.com/electerious/rosid

browsersync cli server static-site-generator transpiler

Last synced: about 8 hours ago
JSON representation

Just-in-time development server and static site generator.

Awesome Lists containing this project

README

        

# Rosid

[![Travis Build Status](https://travis-ci.org/electerious/Rosid.svg?branch=master)](https://travis-ci.org/electerious/Rosid) [![Coverage Status](https://coveralls.io/repos/github/electerious/Rosid/badge.svg?branch=master)](https://coveralls.io/github/electerious/Rosid?branch=master) [![Dependencies](https://david-dm.org/electerious/Rosid.svg)](https://david-dm.org/electerious/Rosid#info=dependencies) [![Donate via PayPal](https://img.shields.io/badge/paypal-donate-009cde.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=CYKBESW577YWE) [![Greenkeeper badge](https://badges.greenkeeper.io/electerious/Rosid.svg)](https://greenkeeper.io/)

Just-in-time server and static site generator written in [Node.js](https://nodejs.org/). Rosid transforms your files on-the-fly before serving them to the browser.

![Terminal and browser](https://s.electerious.com/images/rosid/readme.png)

## Contents

- ๐Ÿƒ [Get started](#get-started)
- ๐Ÿ“„ [Introduction](#introduction)
- ๐Ÿ”— [Links](#links)
- โš™๏ธ [Documentation](#documentation)
- ๐Ÿ’ก [Tips](#tips)

## Get started

Rosid can be integrated into your project in two ways: Using the CLI *or* using the API of Rosid. Check out our guide for more information. [Get started with Rosid ยป](docs/Get%20started.md)

## Introduction

### What is Rosid?

Rosid is a framework that focus on two features:

1. A **development server with live reloading**, which transforms files as soon as you request them.
2. A **static site generator**, which transforms files using defined transform functions.

### Why Rosid?

- It doesn't force you to use a defined directory structure
- It's built on popular modules like [Browsersync](https://www.browsersync.io)
- It's lightweight and only includes what it really needs
- Transformed files don't need to be saved along their source files
- It lets you compile code to static files to host them anywhere

### How does it work?

Rosid starts a server and compares requested URLs with [user-defined patterns](docs/Routes.md). An associated [file handler](docs/Handlers.md) will be executed when a pattern matches. The handler receives information about the request and can transform the file, which will be sent to the browser.

## Links

Boilerplates powered by Rosid:

- ๐Ÿ“ [Skeleton EJS](https://github.com/electerious/Skeleton-EJS): EJS, JS (with Babel, UglifyJS) and SASS (with cssnano, Autoprefixer)
- ๐Ÿ“ [Skeleton NJK](https://github.com/electerious/Skeleton-NJK): Nunjucks, JS (with Babel, UglifyJS) and SASS (with cssnano, Autoprefixer)
- ๐Ÿ“ [Skeleton Components](https://github.com/electerious/Skeleton-Components): UI for components written in Nunjucks, JS (with Babel, UglifyJS) and SASS (with cssnano, Autoprefixer)

Handlers build for Rosid:

- โš™๏ธ [rosid-handler-js](https://github.com/electerious/rosid-handler-js): Load, transform, bundle and compress JS.
- โš™๏ธ [rosid-handler-node](https://github.com/electerious/rosid-handler-node): Load JS and transform to HTML.
- โš™๏ธ [rosid-handler-sass](https://github.com/electerious/rosid-handler-sass): Load SASS and transform to CSS, add vendor prefixes and minify.
- โš™๏ธ [rosid-handler-less](https://github.com/freedeebee/rosid-handler-less): Load LESS and transform to CSS, add vendor prefixes and minify.
- โš™๏ธ [rosid-handler-ejs](https://github.com/electerious/rosid-handler-ejs): Load EJS templates and render them.
- โš™๏ธ [rosid-handler-njk](https://github.com/electerious/rosid-handler-njk): Load Nunjucks templates and render them.
- โš™๏ธ [rosid-handler-twig](https://github.com/electerious/rosid-handler-twig): Load Twig templates and render them.
- โš™๏ธ [rosid-handler-malvid](https://github.com/comwrap/rosid-handler-malvid): UI to help you build and document web components.
- โš™๏ธ [rosid-handler-postcss](https://github.com/omarkhatibco/rosid-handler-postcss): Load CSS and transform it using Post CSS.

Sites powered by Rosid:

- ๐ŸŒ [Rosid](https://rosid.electerious.com)
- ๐ŸŒŽย [Electerious](https://electerious.com)
- ๐ŸŒย [Lychee](https://lychee.electerious.com)
- ๐ŸŒ [LaudableApps](https://laudableapps.com)
- ๐ŸŒŽ [LaudableSites](https://laudablesites.com)
- ๐ŸŒ [basicLightbox](https://basiclightbox.electerious.com)
- ๐ŸŒ [basicGrid](https://basicgrid.electerious.com)
- ๐ŸŒŽ [Coffee Table](https://coffee.electerious.com)
- ๐ŸŒ [Malvid](https://malvid.electerious.com)

Guides for Rosid:

- ๐Ÿ“„ [Get started](docs/Get%20started.md)
- ๐Ÿ“„ [Writing a handler](docs/Writing%20a%20handler.md)

## Documentation

### Requirements

Rosid depends on...

- [Node.js](https://nodejs.org/en/) (v8.9.0 or newer)
- [npm](https://www.npmjs.com)

Make sure to install and update all dependencies before you setup Rosid.

### Routes

Routes tell Rosid how to transform your code. They specify which [handler](docs/Handlers.md) should be executed when a defined pattern matches. [Routes ยป](docs/Routes.md)

### Handlers

Handlers are functions which load and transform files. You can write them on your own or use existing handlers from npm. [Handlers ยป](docs/Handlers.md)

### API

Rosid can be integrated into your project using its API *or* CLI. The API gives you more flexibility and allows you to use Rosid in your existing asset pipeline or toolset. [API ยป](docs/API.md)

### CLI

The CLI of Rosid is located in the `bin` folder and allows you to run the `serve` and `compile` functions without adding JS files to your project. This approach is simpler than using the API, but provides less flexibility. [CLI ยป](docs/CLI.md)

### Options

If you want more control over Rosid, pass an object of options to it. [Options ยป](docs/Options.md)

## Tips

- Install Rosid without optional dependencies using npm's `--no-optional` flag. This speeds up the installation and skips a lot of dependencies. It's perfect when used in production. The downside: Running the `serve` function isn't possible anymore.