grunt-roy

Compiles Roy to JavaScript

npm install grunt-roy
10 downloads in the last week
10 downloads in the last month

Grunt Roy

Invokes the Roy compiler through Grunt. Roy is a functional programming language that compiles to JavaScript.

The roy package is not listed as a dependency for this package. Therefore, you must have it installed before using this Grunt plugin. Note that it is recommended to use the version of Roy specified in the devDependencies of this package, but other versions may also work.

Getting Started

From the same directory as your project's Gruntfile.js and package.json file, install this plugin with the following command.

npm install grunt-roy --save-dev

Once that's done, add the following line to your project's Gruntfile.js file.

grunt.loadNpmTasks('grunt-roy');

If the plugin has been installed correctly, running grunt --help at the command line should list the newly-installed plugin's task or tasks. In addition, the plugin should be listed in package.json as a devDependency, which ensures that it will be installed whenever the npm install command is run.

The "roy" task

Overview

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

grunt.initConfig({
  roy: {
    app: {
      src: ['lib/**/*.roy'],
      dest: 'public/javascripts',
      options: {
        strict: true,
        sourceMap: true
      }
    }
  }
})

Options

options.strict

Type: Boolean Default value: false

A Boolean value that when true will insert "use strict"; into the compiled JavaScript.

options.sourceMap

Type: Boolean Default value: false

A Boolean value that when true will generate a source map file corresponding to each generated JavaScript file. Additionally, the original Roy source file will be copied to the destination to be made available for the source mapping.

Note that the source mapping URL will be appended to the compiled JavaScript file. The value of this URL will be relative so that it may reference the source map residing in the same directory. The reason this works is because if you include the JavaScript file with a script tag, the src attribute of the script tag will be used as the base path for the source mapping URL.

options.nodejs

Type: Boolean Default value: false

A Boolean value that when true will not wrap the compiled JavaScript in an immediately-invoked function expression. Additionally, Roy's export keyword will map to the Nodejs exports object. The following is an example.

let A = {a: "a"}
export A
var A = {
    "a": "a"
};
exports["A"] = A;;

When the option value is set to false, an IIFE will wrap the compiled JavaScript, and Roy's export keyword will map to the this object. The following is an example.

let A = {a: "a"}
export A
(function() {
var A = {
    "a": "a"
};
this["A"] = A;;
})();
npm loves you