0.2.6 • Published 5 years ago

@tomilenko/custom-template-generator v0.2.6

Weekly downloads
2
License
ISC
Repository
-
Last release
5 years ago

notice

This is FORK of custom-template-generator https://www.npmjs.com/package/custom-template-generator

  • Implement the same functionality with TypesScript

custom-template-generator

npm version Downloads/week Donate

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 @tomilenko/custom-template-generator

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

import Generator from '@tomilenko/custom-template-generator';

Usage

import Generator from '@tomilenko/custom-template-generator';

const options = {
    customTemplatesUrl: __dirname + '/templates/',
    type: 'components',
    name: "button",
    dest: 'test',
    template: 'component',
    autoIndent: true
};
new Generator(options);

Options

ScaffoldTypeUsage
namestringName of the generated file/component/project
customTemplatesUrlstringLocation of the custom templates folder
typestringLocation of the custom types of templates folder
deststringDestination of generated templates files
templatestringTemplate name
autoIndentbooleanDefault set to false, will indent the whole file. Only works with js and ts files.
isSingleFilebooleanDefault set to false. If you need to generate one file template
wrapInFolderbooleanDefault set to true
autoIndentExtensionsarrayThe list of extensions file to indent. Default 'js', 'ts'
dataobjectThis custom meta data can be injected in the custom template using '{}'

Directories structure

You should have use the next templates directory structure:

./templates - type - template

For example:

./templates - - projects - expressProject - testProject - components - componentOne - componentTwo

Meta data

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

NameDescription
nameComponent name
Namecapitalized 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

new 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