Skip to content

alloc/fileform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fileform

npm Code style: Prettier Donate

In-place scaffolding with file templates

Usage

Install it globally.

npm i -g fileform

Run it within a directory that contains a fileform.config.js file.

fileform

Pass a Github repository and a destination, and Fileform will use degit.

fileform aleclarson/typescript-template hello-world

Fileform can cd to the new directory if you invoke it with source.

Try adding an alias to your ~/.bashrc or similar.

alias fileform="source $(npm bin -g)/fileform"

 

fileform.config.js

Create a configuration file.

touch fileform.config.js

Define 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 body argument is for block calls (eg: {{#reverse}}content{{/reverse}}).
  • The ctx argument lets you access other variables/functions.
  • Your context can be a Proxy if you want.

 

form variables

Possible value types:

  • String
  • Boolean
  • Array

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.

 

The end. Please open issues for any bugs or feature requests!

About

In-place scaffolding with file templates

Resources

License

Stars

Watchers

Forks

Packages

No packages published