orokop
v1.1.0
Published
Generate files and folders based on the structure definition and file templates.
Readme
Orokop
Generate files and folders based on the structure definition and file templates.
File Structure
Structure definition is stored in a single Node.js module which exports two separate objects.
/**
* File Structure
*
* Object key can represent a 'path/' or a 'filename'.
*
* = 'main.js' file will be created from 'index.js' template
* = 'users/users.js' file will be created from 'users/component.js' file with
* values from #settings object
* = 'users/users.html' file will be created from 'shared/page.js' file with
* values from #settings object which are overwritten by values in an array
* object
*/
const structure = {
"main.js": "index.js",
"users/": {
"#settings": {
title: "Users"
},
"users.js": "users/component.js",
"users.html": ["shared/crud-table.js", {
title: "List of users",
create: true,
fields: {
uid: "string",
active: "boolean"
}
}]
}
}
/**
* Options
*
* = output, relative or absolute path to the output directory
* = templates, relative or absolute path to the templates
* = soft, boolean representing whether to skip existing files
*/
const options = {
output: "app",
templates: "templates",
soft: true
}
module.exports = { structure, options }Presented structure will generate following files and folders inside the app
directory:
- main.js
- users/
- users.js
- users.html
Templates
Orokop uses Node.js environment for writing templates. Each template is a module
which exports render function.
Render function can have an optional object argument with specific template settings.
/* Basic template */
function render ()
{
const template = `<h1>Halo!</h1>`
return template
}
module.exports = render
/* Template with settings argument */
function render (settings)
{
const template = `<h1>Halo ${ settings.name }!</h1>`
return template
}
module.exports = render
/* Asynchronous render function */
async function render (settings)
{
const template = await getTemplate(settings)
return template
}
module.exports = renderUsage
Orokop is intended to be used as a CLI tool which can be installed via NPM.
# Installation
npm install -g orokop
# Generate structure from file "structure.orokop.js" in the working directory
$ orokop
# Explicitly set path to structure file
$ orokop path/to/structure.orokop.js
# If present, arguments will overwrite default and structure options
$ orokop <path-to-structure-file>
-o, --output, relative or absolute path to the output directory
-t, --templates, relative or absolute path to the templates
-s, --soft, boolean representing whether to skip existing filesFuture
- Dynamically define file structure
License
MIT
