2.0.0 ā€¢ Published 4 years ago

@itsjonq/remake v2.0.0

Weekly downloads
18
License
MIT
Repository
github
Last release
4 years ago

šŸ¦‹ Remake

Build Status npm version

A simple generator from locally defined templates!

Usage: remake
  šŸ¦‹  Remake

  remake <cmd> --option

  Example:
  remake component --name=MyComponent --someProp=value


Options:
  -V, --version    output the version number
  -n, --name       The name for the generate file(s)
  -o, --output     Location to output generated file(s)
  -i, --entry      Location of the template file(s)
  -w, --overwrite  Overwrite existing files
  -s, --silence    Suppresses the logs
  -h, --help       output usage information

Commands:
  *              The directory name for the template under .remake/

Table of contents

Installation

npm install --save-dev @itsjonq/remake

To install it globally, run:

npm install -g @itsjonq/remake

Usage

Create the template files

In your project's root directory, create a new directory called .remake:

my-app/
ā”œā”€ā”€ .remake/
ā””ā”€ā”€ .../

Within the .remake directory, create sub directories to associate with "commands" that you would like Remake to run. In this example, we'll create a directory called component, which Remake will use when running the command component:

my-app/
ā”œā”€ā”€ .remake/
ā”‚   ā””ā”€ā”€ component/
ā””ā”€ā”€ .../

Under the new component directory, we'll add a couple of files that we want Remake to generate for us:

my-app/
ā”œā”€ā”€ .remake/
ā”‚   ā””ā”€ā”€ component/
ā”‚       ā””ā”€ā”€ remake-name/
ā”‚           ā”œā”€ā”€ index.js
ā”‚           ā””ā”€ā”€ remake-name.js
ā””ā”€ā”€ .../

Notice the remake-name directory and remake-name.js file. Remake will use props you provide to replace any remake-* file name. For this example, the file name will be replaced with the name prop.

Within the remake-name.js, let's add some template content:

// component/remake-name/remake-name.js
import React from 'react'

export class <%= name %> extends React.PureComponent {
  render () {
    return <div />
  }
}

export default <%= name %>

Notice the <%= name %>. Remake uses lodash.template to parse and modify template files. The name prop is provided to the template through CLI arguments. You can specify anything you'd like! Including if/else logic, if you wanna get fancy.

Run the command

Once you're happy with your template files, run the remake command.

The recommended way is to add a remake script to your project's package.json, like so:

  ...
  "remake": "remake",
  ...

You can even add the options to dedicated remake scripts for more commonly generated templates:

"remake:component": "remake component --output=src/components"

Alternatively, if you've installed remake globally, you can run:

remake component --name=Hello

For this example, remake will generate the following files:

my-app/
ā”œā”€ā”€ .remake/
ā”‚   ā””ā”€ā”€ component/
ā”‚       ā””ā”€ā”€ remake-name/
ā”‚           ā”œā”€ā”€ index.js
ā”‚           ā””ā”€ā”€ remake-name.js
ā”œā”€ā”€ Hello
ā”‚   ā”œā”€ā”€ index.js
ā”‚   ā””ā”€ā”€ Hello.js
ā””ā”€ā”€ .../

If we take a look at Hello.js, you'll see that the <%= name %> variables have been replaced by Hello, specified by --name=Hello:

// Hello/Hello.js
import React from 'react';

export class Hello extends React.PureComponent {
	render() {
		return <div />;
	}
}

export default Hello;

Example

Check out the example in the example directory šŸ™Œ

License

MIT Ā© Q