UNPKG

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
# 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.