grunt-rendr-requirejs
Version:
Use RequireJS to package up your modules for use with Rendr (github.com/airbnb/rendr).
128 lines (96 loc) • 3.4 kB
Markdown
# 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](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
```shell
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:
```js
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()`.
```js
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.
```js
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:
```js
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.