grunt-umd
Grunt task to surround JavaScript code with the universal module definition.
Usage
Install this grunt plugin next to your project's grunt.js gruntfile with: npm install grunt-umd
Add the following line to your project's grunt.js
gruntfile:
grunt.loadNpmTasks('grunt-umd');
Then configure the task:
grunt.initConfig({
umd: {
all: {
src: 'path/to/input.js',
dest: 'path/to/output.js', // optional, if missing the src will be used
template: 'path/to/template.hbs', // optional; a template from templates subdir can be specified by name (e.g. 'umd');
// if missing the templates/umd.hbs file will be used
objectToExport: 'library', // optional, internal object that will be exported
amdModuleId: 'id', // optional, if missing the AMD module will be anonymous
globalAlias: 'alias', // optional, changes the name of the global variable
indent: ' ', // optional, indent source code
deps: { // optional
'default': ['foo', 'bar'],
amd: ['foobar', 'barbar'],
cjs: ['foo', 'barbar'],
global: ['foobar', 'bar']
}
}
}
});
And finally use it:
grunt umd:all
Templates
The following predefined Handlebars-templates are available:
umd
- the default template; the template is based on umd/returnExports.jsunit
- the template that can be helpful to wrap standalone CommonJS/Node modules; it is slightly modified version ofumd
template; ifobjectToExport
option is not specified thenmodule.exports
value will be used by default
The template that should be applied can be specified by template
option (e.g. 'umd'
or 'unit'
).
You can create and use your own template (see predefined templates for examples).
The path to the template file should be set relative to Gruntfile.
Demo
- Install dependencies -
npm install
- Go to demo -
cd demo
- Execute demo -
grunt
You should see some /output
after this. Study Gruntfile.js
to understand how it generates.
Contributors
- Alex Lawrence - Project founder, previous maintainer
- Juho Vepsäläinen - Handlerbars fixes etc., current maintainer
- Stéphane Bachelier - Code indentation option
- Milan Adamovsky - Enhanced configurability and Rails assets pipeline support
- Brian J. Miller - Indent only non-empty lines
- Denis - Add default value for objectToExport and template option support
- Boris Cherny - Properly export module IDs containing dashes to browser globals
- Paulo Gaspar - Fix GitHub user name at repo and homepage URLs
License
MIT. See LICENSE for more info.