Searchs for AMD modules required on your source code (eg. template files) and generates an AMD module from it.
Example:
<!-- a/path/to/page.html -->
<!-- require("jquery, widgets, twitter") -->
<!-- another/path/to/anotherpage.html -->
<!-- require("jquery, widgets, fx") -->
Running grunt-requiregrep can generate:
define(['jquery', 'widgets', 'twitter', 'fx'], function()){
console.log('all modules loaded');
});
Now you can include this new module in your requirejs main config file. This way if you use a bundler like r.js (check grunt-contrib-requirejs) it will include all modules used on your source files automatically.
Install this grunt plugin with: npm install grunt-requiregrep
Then add this line to your grunt.js gruntfile:
grunt.loadNpmTasks('grunt-requiregrep');
Supports the following options:
- src/files: source files to grep for AMD dependencies (default: **/*.*html).
- dest: output filename (eg
all.js
) - options:
- requirePattern: regex to detect dependencies on source files, first capture group should be a comma-separated list of module names. default:
/require\(\s*[\'\"]([^\'\"]*)[\'\"]/gi
- moduleName: output module name. default: null, ie. anonymous module
- onLoad: code to include on module load (eg.
console.log('all modules loaded!');
). - forEachFile: function that will be called for each parsed file with these arguments: file, contents, registerDependency (use this function add a dependency programmatically)
- requirePattern: regex to detect dependencies on source files, first capture group should be a comma-separated list of module names. default:
/*jslint node:true*/
module.exports = function (grunt) {
'use strict';
grunt.loadNpmTasks('grunt-requiregrep'); // load the task
grunt.initConfig({
watch: {
files: '<config:requiregrep.files>',
tasks: 'requiregrep'
},
requiregrep: { // configure the task
all: {
files: {
'scripts/all.js': [
'home.html',
'view/**/*.html'
]
},
options: {
onLoad: 'if (window.console){window.console('all modules loaded');}', // run after all dependencies are loaded
}
}
}
});
grunt.registerTask('default', 'watch');
};