Skip to content

m2omou/custom-template-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

template-generator

npm version

Help generate template files (angular, nodejs, backbone, java...)

Prerequisites

This project has a dependencies that require Node to be installed. For help to install Node, go to:

https://nodejs.org

Table of Contents

Installation

BEFORE YOU INSTALL: please read the prerequisites

npm install custom-template-generator

Once the plugin has been installed, just need to add this line:

var generator = require('custom-template-generator');

Usage

var generator = require('custom-template-generator');

generator({
    componentName: "button",
    customTemplatesUrl: './templates/',
    dest: 'src',
    templateName: 'component'
    autoIndent: true,
    data: {
        someStaticData: {},
        size: 42,
        desc: 'this button can talk'
    }
});

Options

Scaffold Type Usage
componentName string Name of the component
customTemplatesUrl string Location of the custom templates folder
dest string Destination of generated templates files
templateName string Template name
autoIndent boolean Default set to false, will indent the whole file. Only works with js and ts files.
autoIndentExtensions array The list of extensions file to indent. Default ['js', 'ts']
data object This custom meta data can be injected in the custom template using '{}'

Meta data

The meta data helps customize your templates, here are some options:

Name Description
name Component name
Name capitalized component name

Demo

In this repository, use the demo folder to test the generator. Here is the folder hierarchy:

To help customized the file name {component} will be replace by the componentName defined in the generator parameters.

The following template {component}.interface.ts:

// Angular imports
import { ElementRef, Renderer } from '@angular/core';
// Custom imports
import { {Name}Config } from './config/{name}.config';

export interface {Name}Interface<T> {
    /*
     * Model from the {name}.
     */
    model: T;
    /*
     * Stores config for the {name}.
     */
    readonly options: {Name}Config;
    /*
     * init
     */
    ngOnInit(): void;
}

By running this function

generator({
    componentName: "button",
    customTemplatesUrl: './templates/',
    dest: 'src',
    templateName: 'component'
});

Will generate this file

// Angular imports
import { ElementRef, Renderer } from '@angular/core';
// Custom imports
import { ButtonConfig } from './config/button.config';

export interface ButtonInterface<T> {
    /*
     * Model from the button.
     */
    model: T;
    /*
     * Stores config for the button.
     */
    readonly options: ButtonConfig;
    /*
     * init
     */
    ngOnInit(): void;
}

License

MIT