node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »

greni

greni npm version

A batteries-included way to quickly build modern, fast, single-page applications

Introduction

Greni is the Icelandic word for the den of a fox. It is also a build tool that intelligently concatenates a pipeline of the following tools:

greni is cunning, and avoids rebuilding your svelte component files unless they have changed or the build configuration (i.e. debug vs production) has changed.

Usage

Create a greni.json file, and populate it with contents such as the following:

{
    "components": ["src/components/Card.html", "src/components/App.html"],
    "entryPoints": {"index.js": "src/index.js"},
}

You can also put this in your package.json under the greniConfig key:

{
    "greniConfig": {
        "output": "output/",
        "components": ["src/components/Card.html", "src/components/App.html"],
        "entryPoints": {"index.js": "src/index.js"}
    }
}

Run greni or greni --debug to build the following artifacts:

  • output/index.js
  • output/index.js.map

To automatically rebuild when your source files change, use the entr utility:

while true; do find src/ -type f | entr -d greni || break; done

Configuration Reference

You can configure greni via either a greni.json file, or package.json using the greniConfig key.

The possible keys in this object are shown below:

Key Value
components An array of svelte component paths. Defaults to [].
entryPoints An object mapping outputName -> entrySourceFile.
output A path. Defaults to output/.
buble An object defining buble options. Defaults to null, meaning buble is not run.
eslint A boolean. Defaults to true.

Future Plans

greni may someday become the central tool for building Vixeno apps, and house a repository of common components.