grunt-terrific-modules

1.1.1 • Public • Published

grunt-terrific-modules

A grunt module generator for terrific modules

Build Status Dependencies npm Codestyle

Getting Started

This plugin requires Grunt ~0.4.5

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-terrific-modules --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-terrific-modules');

The Template Module folder needs to be copied from the Github Repository and placed at the folder location

The "terrific_modules" task

Overview

In your project's Gruntfile, add a section named terrific_modules to the data object passed into grunt.initConfig().

grunt.initConfig({
    terrific_modules: {
        options: {
            placeholder: {
                module: {
                    underscore: 'T_module',
                    camelCase: 'T_Module'
                },
                skin: {
                    underscore: 'T_skin',
                    camelCase: 'T_Skin'
                },
                template: {
                    underscore: 'T_template',
                    camelCase: 'T_Template'
                },
                type: {
                    underscore: 'T_type',
                    camelCase: 'T_Type',
                    customUnderscore: {
                        atoms: 'a',
                        molecules: 'm',
                        organisms: 'o',
                        helper: 'h'
                    }
                },
                author: 'T_author'
            },
            files: {
                module: [
                    {
                        src: '<%=paths.resource%>',
                        dest: '<%=paths.modules%>/T_type/T_module',
                        template: 'T_module.jsp'
                    },
                    {
                        src: '<%=paths.resource%>',
                        dest: '<%=paths.modules%>/T_type/T_module',
                        template: 'T_module.readme.md'
                    },
                    {
                        src: '<%=paths.resource%>',
                        dest: '<%=paths.modules%>/T_type/T_module/js',
                        template: 'T_module.js',
                        enrichWith: {
                            src: '<%=paths.es6modules%>',
                            placeholder: '// outlet.es6modules',
                            template: '<%=paths.resource%>/T_module.es6module.js'
                        }
                    },
                    {
                        src: '<%=paths.resource%>',
                        dest: '<%=paths.modules%>/T_type/T_module/css',
                        template: 'T_module.less'
                    },
                    {
                        src: '<%=paths.resource%>',
                        dest: '<%=paths.modules%>/T_type/T_module/i18n',
                        template: 'T_module.properties'
                    },
                    {
                        src: '<%=paths.resource%>',
                        dest: '<%=paths.tags%>/T_type',
                        template: 'T_module.tag'
                    }
                ],
                skin: [
                    {
                        src: '<%=paths.resource%>',
                        dest: '<%=paths.modules%>/T_type/T_module/js',
                        template: 'T_module.skin.T_skin.js'
                    },
                    {
                        src: '<%=paths.resource%>',
                        dest: '<%=paths.modules%>/T_type/T_module/css',
                        template: 'T_module.skin.T_skin.less'
                    }
                ],
                template: [
                    {
                        src: '<%=paths.resource%>',
                        dest: '<%=paths.modules%>/T_type/T_module',
                        template: 'T_module-T_template.jsp',
                        enrichWith: {
                            src: '<%=paths.tags%>/T_type/T_module.tag',
                            // use UTF8 code for % (U+0025)
                            placeholder: '<U+0025-- outlet.template --U+0025>',
                            template: '<%=paths.resource%>/T_module.template.tag'
                        }
                    }
                ]
            },
            triggerFile: 'triggerfile'
        }
    }
});

Options

options.placeholder

Type: object

A object with all placeholders used throughout the templates

options.files

Type: array

This array defines all file objects which are needed for generation of a "module", "skin" or "template". All files defined in this array need to exist in the resource directory.

Convention

Terrific:

Grunt task arguments:

  • help (grunt terrific_modules)
  • module name (grunt terrific_modules:example-module)
  • skin name (grunt terrific_modules:example-module:example-skin)
  • template name (grunt terrific_modules:example-module:%example-template)
  • author (grunt terrific_modules:example-module:@example-author)

Recommended placeholder names:

(can be changed but is not recommended because you have to change all resource file-names)

  • module lowercase: T_module
  • module camelcase: T_Module
  • skin lowercase: T_skin
  • skin camelcase: T_Skin
  • template lowercase: T_template
  • template camelcase: T_Template
  • author lowercase: T_author
  • author camelcase: T_Author

License

MIT License

Changelog

Please see the releases

Package Sidebar

Install

npm i grunt-terrific-modules

Weekly Downloads

58

Version

1.1.1

License

MIT

Last publish

Collaborators

  • smollweide