ebo

A simple and small tool for quickly creating application components from templates by script.

Usage no npm install needed!

<script type="module">
  import ebo from 'https://cdn.skypack.dev/ebo';
</script>

README

ebo

A simple and small tool for quickly creating application components from templates by script.


To get started, you must install the module

npm install ebo --saveDev or npm install ebo --global


Create a questionnaire configuration file

./.ebo/questions.js

"use strict";

const questions = [
    {
        "type": "list",
        "name": "scenario",
        "message": "Scenario:",
        "choices": ["Component", "Markup"]
    },
    {
        "type": "list",
        "name": "hierarchy",
        "message": "Atomic hierarchy:",
        "choices": ["Organism", "Group"],
        "when": (e) => {
            return e["scenario"] === "Component"
        }
    },
    {
        "type": "list",
        "name": "type",
        "message": "Markup type: ",
        "choices": ["Page", "Popup"],
        "when": (e) => {
            return e["scenario"] === "Markup"
        }
    },
    {
        "type": "input",
        "name": "name",
        "message": "Name with spaces:"
    }
];

module.exports = questions;

More information: https://www.npmjs.com/package/inquirer


Create a deployment script

./.ebo/scripts.json

[
  {
    "condition": "answers.scenario.given === 'Component'",
    "action": "new",
    "src": "./.ebo/component.js.twig",
    "dest": "./example/component/{{answers.hierarchy.lower}}/{{answers.name.camel}}.js"
  },
  {
    "condition": "answers.scenario.given === 'Markup'",
    "action": "new",
    "src": "./.ebo/markup.html.twig",
    "dest": "./example/markup/{{answers.type.lower}}/{{answers.name.camel}}.html"
  },
  {
    "condition": "answers.scenario.given === 'Component'",
    "action": "inject",
    "expression": "//@ebo inject {{answers.hierarchy.lower}}",
    "place": "before",
    "src": "const {{answers.hierarchy.lower}}{{answers.name.firstCamel}} = require('./component/{{answers.hierarchy.lower}}/{{answers.name.camel}}');\n",
    "dest": "./example/main.js"
  }
]

Create templates

./.ebo/component.js.twig

"use strict";

console.log("{{answers.hierarchy.lower}}", "{{answers.name.camel}}");

More information: https://www.npmjs.com/package/twig


Run ebo

ebo