@tomilenko/custom-template-generator
TypeScript icon, indicating that this package has built-in type declarations

0.2.6 • Public • Published

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

Scaffold Type Usage
name string Name of the generated file/component/project
customTemplatesUrl string Location of the custom templates folder
type string Location of the custom types of templates folder
dest string Destination of generated templates files
template string Template name
autoIndent boolean Default set to false, will indent the whole file. Only works with js and ts files.
isSingleFile boolean Default set to false. If you need to generate one file template
wrapInFolder boolean Default set to true
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 '{}'

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:

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

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

Package Sidebar

Install

npm i @tomilenko/custom-template-generator

Weekly Downloads

0

Version

0.2.6

License

ISC

Unpacked Size

132 kB

Total Files

28

Last publish

Collaborators

  • tomilenko