3.0.0 • Published 7 years ago
interactive-template v3.0.0
Interactive template
I just wanted to automate hardcoding variables into a boilerplate template, this script helps me do it.
This tool can be used to:
- Take constants from a json
- Take variable declarations from a json
- Interactively inquire user to provide variable values
- Render a set of templates using constants and variables
In essence this is a wrapper for:
- Mustache.js (templating engine)
- Inquirer.js (questioning library)
- fs-jetpack.js (Filesystem library)
Usage
See /examples folder for more information.
cli (aka binary) mode
Typical usage supposing a default file structure
npm install -g git+https://git@github.com/kshaa/interactive-template.git#v3.0.0
interactive-templateCustom file structure
interactive-template -i document.sample.txt -v variables.json -o document.txt"library (aka require) mode
const interactiveTemplate = require('interactive-template');
(async () => {
    const templateInstance = new interactiveTemplate.InteractiveTemplate({
         constants: 'constants.json',
         variables: 'variables.json',
         input: 'input.txt',
         output: 'output.txt'
     });
     
    await templateInstance.initialize();
    await templateInstance.compile();
    await templateInstance.render();
})()Configuration
Flags in cli (aka binary) mode
{
    // Source of constant data for rendering templates
    constants: nodeFlag.get('constants') || nodeFlag.get('constant') || nodeFlag.get('c'),
    // Source of interactively generated data for rendering templates
    variables: nodeFlag.get('variables') || nodeFlag.get('variable') || nodeFlag.get('v'),
    // File or directory of templates
    input: nodeFlag.get('input') || nodeFlag.get('i'),
    // File or directory of rendered templates
    output: nodeFlag.get('output') || nodeFlag.get('o')
}This is copy-pasted from code.
E.g to pass in the constants option through a flag use --constants, --constant or -c
Constants and variables can be comma-seperated  
Options in library (aka require) mode
{
    // Source of constant data for rendering templates
    constants: './constants.json',
    // Source of interactively generated data for rendering templates
    variables: './variables.json',
    // File or directory of templates
    input: './in',
    // File or directory of rendered templates
    output: './out',
    // Symbols used in templates to indicate an evaluation
    templateTags: [ '<%', '%>' ]
}These are the default options, when creating a new InteractiveTemplate, you can pass overridden values.
Notes
- Reliablity not guaranteed
- Mustache.js's interpolation notation {{}} has been replaced with <%%>
- If an error appears and it's stack seems cropped, run node w/ --stack-trace-limit=1000
3.0.0
7 years ago