grunt-portal

Start a development environment.

Usage no npm install needed!

<script type="module">
  import gruntPortal from 'https://cdn.skypack.dev/grunt-portal';
</script>

README

grunt-portal

Get a development environment up and running

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-portal --save-dev

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

grunt.loadNpmTasks('grunt-portal');

The "portal" task

Overview

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

grunt.initConfig({
  portal: {
    // dev is your target name
    dev: {
      options: {
        // Task-specific options go here.
      }
    }
  },
});

Options

options.blueprint

Type: String Default value: ''

Path to blueprint file which will be used to start a api mock server at the root of the server and Aglio documentation at /doc/api

options.publicDir

Type: String Default value: ``

Directory from which views and static files will be served. Also, it's the base directory for templates, if viewsDir, partialsDir or helpersDir are not specified.

options.viewsDir

Type: String Default value: `` (falls back to options.publicDir + '/views')

Directory from which views will be served.

options.partialsDir

Type: String Default value: `` (falls back to options.publicDir + '/partials')

Directory from which partials will be registered.

options.helpersDir

Type: String Default value: `` (falls back to options.publicDir + '/helpers')

Files inside this directory will be used as helpers for Handlebars. The file should be a node module file, and the filename (with .js extension) will be used as the helper name (removing the extension).

For example, filename compare.js:

module.export = function(lvalue, rvalue, options) {

    if (arguments.length < 3)
        throw new Error("Handlerbars Helper 'compare' needs 2 parameters");

    operator = options.hash.operator || "==";

    var operators = {
        '==':       function(l,r) { return l == r; },
        '===':      function(l,r) { return l === r; },
        '!=':       function(l,r) { return l != r; },
        '<':        function(l,r) { return l < r; },
        '>':        function(l,r) { return l > r; },
        '<=':       function(l,r) { return l <= r; },
        '>=':       function(l,r) { return l >= r; },
        'typeof':   function(l,r) { return typeof l == r; }
    }

    if (!operators[operator])
        throw new Error("Handlerbars Helper 'compare' doesn't know the operator "+operator);

    var result = operators[operator](lvalue,rvalue);

    if( result ) {
        return options.fn(this);
    } else {
        return options.inverse(this);
    }

};

Would be used as {{#compare var_a var_b operator='!='}}

options.docsDir

Type: String Default value: ``

Files inside this directory will be served as documentation, You will be able to access /doc/{pathname}.md at /doc/{pathname}.

options.useHTML

Type: Boolean Default value: false

Defines wether to serve html files instead of the default Handlebars templates. Used to serve prebuilt HTML files.

options.portalViewsPrefix

Type: string Default value: ``

Set a prefix for the Portal views. It can use url variables, for example:

portalViewsPrefix: "internationalized/:language_:country/:portal"

When requiring http://localhost:3000/es_ar/apps/personas/appname, it would search for the file viewsDir/internationalized/es_ar/personas/index.html (or index.hbs).

options.routes

Type: String Default value: {}

A map where object keys will be used as uri routes that route into local files.

options.proxies

Type: String Default value: {}

A map where object keys will be used as uri paths to intercept and redirect to proxy.

For example:

proxies: {
    "/ws/*": {
        host: "api.example.com",
        port: "80"
    }
}

will redirect any request to localhost:3000/ws/my_service.php to api.example.com/ws/my_service.php.

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

(Nothing yet)