fileform v0.2.0
fileform
In-place scaffolding with file templates
Usage
Install it globally.
pnpm i -g fileformRun it within a directory that contains a fileform.config.js file.
fileformPass a Github repository and a destination, and Fileform will use degit.
fileform aleclarson/typescript-template hello-worldFileform can cd to the new directory if you invoke it with source.
Try adding an alias to your ~/.bashrc or similar.
alias fileform="source $(pnpm bin -g)/fileform"
fileform.config.js
Create a configuration file.
touch fileform.config.jsDefine the form values to be filled out.
exports.form = {
type: [String, ['vanilla', 'react']],
name: String,
description: String,
private: Boolean,
license: [String, 'MIT'],
keywords: Array,
}Define side effects once the form is filled out.
exports.onForm = function({ type }) {
if (type == 'react') {
const pkg = this.readJsonSync('package.json')
pkg.dependencies['react'] = '^16.0.0'
this.writeJsonSync('package.json', pkg)
}
}Provide functions and variables to your file templates.
exports.context = {
foo: 'bar',
reverse: (_body, _ctx, arg1) => arg1.reverse(),
}- The
bodyargument is for block calls (eg:{{#reverse}}content{{/reverse}}). - The
ctxargument lets you access other variables/functions. - Your context can be a
Proxyif you want.
form variables
Possible value types:
StringBooleanArray
Default values can be defined with a tuple like [type, default].
When a value type is String and its default value is an array,
a list of choices is presented to the user.
When a value type is Array, its default value represents a static
list of choices. If no default value is given, the user must write
in their own values.
onForm context
In the onForm handler, this contains a few helpers.
- All
fs-extraexports logfromlodgeexecfrom@cush/execpromptfromenquirer
The end. Please open issues for any bugs or feature requests!