Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Use RequireJS to package up your modules for use with Rendr (github.com/airbnb/rendr).
JavaScript Shell
Pull request Compare This branch is 21 commits ahead, 7 commits behind rendrjs:master.

Merge pull request #5 from gitter-badger/gitter-badge

Add a Gitter chat badge to README.md
latest commit 6e67c65d3a
@alexindigo authored
Failed to load latest commit information.
tasks
test First try. Updated tests.
.gitignore
.jshintrc Initial commit of plugin
.npmignore
Gruntfile.js Changed resolution of `node_modules` section
LICENSE-MIT Update LICENSE-MIT
README.md Added Gitter badge
docker
package.json

README.md

grunt-rendr-requirejs

Join the chat at https://gitter.im/alexindigo/grunt-rendr-requirejs

Adopted grunt-rendr-stitch to use with RequireJS (work in progress).

Use RequireJS to package up your modules for use with Rendr (https://github.com/rendrjs/rendr).

Getting Started

This plugin requires Grunt ~0.4.1

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-rendr-requirejs --save-dev

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

grunt.loadNpmTasks('grunt-rendr-requirejs');

The "rendr_requirejs" task

Overview

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

grunt.initConfig({
  rendr_requirejs: {
    options: {
      appDir: 'assets',
      mainConfigFile: 'assets/common.js',
      dir: 'public',
      node_modules:
      [
        {name: 'async', location: 'async/lib', main: 'async.js'}
      ],
      modules: [
        {
          name: '../common',
          include:
          [
            'jquery',
            'async',
            'shared/module',
            'app/controller/Base',
            'app/model/Base'
          ],
        },
        {
            name: '../bundle',
            include: ['app/app'],
            exclude: ['../common']
        },
        {
            name: '../other-bundle',
            include: ['../other/foo'],
            exclude: ['../common']
        }
      ]
    }
  }
});

We can then use RequireJS in the browser to require any of the source files.

require(['app/views/user_show_view'], function(UserShowView)
{
  ...
});

Together with amdefine could be used for requiring modules in both Node.js and in the browser. For example:

if (typeof define !== 'function') {
  var define = require('amdefine')(module);
}

define(['../base'], function(BaseView) {

});

Options

options.node_modules

Type: Object Default value: {}

An object containing a list of node modules to pass as options.packages to requirejs.optimize().

options.node_modules is optional and can be omitted.

Release History

1.0.0

Update Rendr version to 1.0.1

0.3.3

Exposed unfoldPath, getModulePaths and findDependencies for better integration. Added _keepFullPath option to return list of fullpath files, useful for testing. (Experimental)

0.3.1

Exposed updateConfigNode method for grunt tasks. (Experimental) Added reset argument to updateConfigNode. (Experimental)

0.3.0

Added shallow option for modules multi-module and single file bundling. (Experimental) Added short form modules listing when shallow options is used.

0.2.1

Added content hashing function (Experimental).

0.2.0

Added glob parsing in include (root) blocks with mapping (paths) support (Experimental).

0.1.0

Changed resolution of node_modules section, now it will check dependencies of the rendr module and if not found, will travel up directory tree, same as standard dependency resolution.

0.0.1

grunt-rendr-stitch mangled into grunt-rendr-requirejs.

Something went wrong with that request. Please try again.