This tool is a tiny project scaffolder that customizes a given template directory using a user-defined map.
Install it globally through npm:
npm i -g scaffy
The following represents an example directory to be used as a template. Notice the fields in double braces.
templates/module
├── lib
│ └── {{name}}.js -> ''
├── license -> ...
├── package.json -> '{ "name": "{{name}}", "description": "{{description}}" }'
└── readme.md -> '# {{name}}\n> {{description}}'
Passing this directory into scaffy will bring up a prompt that enables you to fill in the necessary fields.
$ scaffy templates/module
scaffy v3.0.3
Using template `module`
(1/2) name: example
(2/2) description: An example module
Write to `/foo/bar/example` successful
$ cat example/readme.md
# example
> An example module
$ ls example/lib
example.js
This concept can be further expanded upon to cover logic-less templates as large as you deem necessary.
usage:
$ scaffy [src] [options]
options:
-h, --help show this help message
-v, --version display package version
-i, --input path to source template (alias for <src>)
-o, --output path to which the resulting file tree is written (defaults to name arg)
-O, --open tag indicating the beginning of an expression (defaults to "{{")
-C, --close tag indicating the end of an expression (defaults to "}}")
examples:
$ scaffy
$ scaffy templates/module -o new-directory
Replaces all instances of the keys provided by opts.data
within src
. The resulting file tree is passed to cb
via tree
, which takes the form folder : { name : folder | file }
.
Options:
data
: map detailing the keys to be replaced within the given template and their corresponding values (defaults to an empty object)dest
: path to which the resulting file tree is written (defaults tosrc
)open
: tag indicating the beginning of an expression (defaults to{{
)close
: tag indicating the end of an expression (defaults to}}
)
semibran/fs-tree
: underlying basis for this module's reads and writesjamen/pixie
: flexible templating engine responsible for this module's replacement mechanism