requirejs.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. module.exports = function(config,grunt) {
  2. 'use strict';
  3. function buildRequireJsOptions() {
  4. var options = {
  5. appDir: '<%= tempDir %>',
  6. dir: '<%= destDir %>',
  7. mainConfigFile: '<%= tempDir %>/app/components/require.config.js',
  8. baseUrl: './app',
  9. modules: [], // populated below,
  10. optimize: 'none',
  11. optimizeCss: 'none',
  12. optimizeAllPluginResources: false,
  13. removeCombined: true,
  14. findNestedDependencies: true,
  15. normalizeDirDefines: 'all',
  16. inlineText: true,
  17. skipPragmas: true,
  18. done: function (done, output) {
  19. var duplicates = require('rjs-build-analysis').duplicates(output);
  20. if (duplicates.length > 0) {
  21. grunt.log.subhead('Duplicates found in requirejs build:');
  22. grunt.log.warn(duplicates);
  23. done(new Error('r.js built duplicate modules, please check the excludes option.'));
  24. }
  25. done();
  26. }
  27. };
  28. // setup the modules require will build
  29. var requireModules = options.modules = [
  30. {
  31. // main/common module
  32. name: 'app',
  33. include: [
  34. 'css',
  35. 'kbn',
  36. 'text',
  37. 'jquery',
  38. 'angular',
  39. 'settings',
  40. 'bootstrap',
  41. 'modernizr',
  42. 'timepicker',
  43. 'datepicker',
  44. 'lodash',
  45. 'jquery.flot',
  46. 'angular-strap',
  47. 'angular-dragdrop',
  48. 'services/all',
  49. 'features/all',
  50. 'directives/all',
  51. 'filters/all',
  52. 'controllers/all',
  53. 'routes/all',
  54. 'components/partials',
  55. // bundle the datasources
  56. 'plugins/datasource/grafana/datasource',
  57. 'plugins/datasource/graphite/datasource',
  58. 'plugins/datasource/influxdb_08/datasource',
  59. ]
  60. }
  61. ];
  62. var fs = require('fs');
  63. var panelPath = config.srcDir+'/app/panels';
  64. // create a module for each directory in public/app/panels/
  65. fs.readdirSync(panelPath).forEach(function (panelName) {
  66. requireModules[0].include.push('panels/'+panelName+'/module');
  67. requireModules[0].include.push('text!panels/'+panelName+'/module.html');
  68. });
  69. return { options: options };
  70. }
  71. return { build: buildRequireJsOptions() };
  72. };