module.exports = function(config,grunt) { 'use strict'; function buildRequireJsOptions() { var options = { appDir: '<%= tempDir %>', dir: '<%= destDir %>', mainConfigFile: '<%= tempDir %>/app/components/require.config.js', baseUrl: './app', modules: [], // populated below, optimize: 'none', optimizeCss: 'none', optimizeAllPluginResources: false, removeCombined: true, findNestedDependencies: true, normalizeDirDefines: 'all', inlineText: true, skipPragmas: true, done: function (done, output) { var duplicates = require('rjs-build-analysis').duplicates(output); if (duplicates.length > 0) { grunt.log.subhead('Duplicates found in requirejs build:'); grunt.log.warn(duplicates); done(new Error('r.js built duplicate modules, please check the excludes option.')); } done(); } }; // setup the modules require will build var requireModules = options.modules = [ { // main/common module name: 'app', include: [ 'kbn', 'text', 'jquery', 'angular', 'settings', 'bootstrap', 'modernizr', 'timepicker', 'datepicker', 'lodash', 'jquery.flot', 'angular-strap', 'angular-dragdrop', 'services/all', 'features/all', 'directives/all', 'filters/all', 'controllers/all', 'routes/all', 'components/partials', // bundle the datasources 'plugins/datasource/grafana/datasource', 'plugins/datasource/graphite/datasource', 'plugins/datasource/influxdb_08/datasource', ] } ]; var fs = require('fs'); var panelPath = config.srcDir+'/app/panels'; // create a module for each directory in public/app/panels/ fs.readdirSync(panelPath).forEach(function (panelName) { requireModules[0].include.push('panels/'+panelName+'/module'); }); return { options: options }; } return { build: buildRequireJsOptions() }; };