requirejs.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. module.exports = function(config,grunt) {
  2. var _c = {
  3. build: {
  4. options: {
  5. appDir: '<%= tempDir %>',
  6. dir: '<%= destDir %>',
  7. mainConfigFile: '<%= tempDir %>/app/components/require.config.js',
  8. modules: [], // populated below
  9. optimize: 'none',
  10. optimizeCss: 'none',
  11. optimizeAllPluginResources: false,
  12. removeCombined: true,
  13. findNestedDependencies: true,
  14. normalizeDirDefines: 'all',
  15. inlineText: true,
  16. skipPragmas: true,
  17. done: function (done, output) {
  18. var duplicates = require('rjs-build-analysis').duplicates(output);
  19. if (duplicates.length > 0) {
  20. grunt.log.subhead('Duplicates found in requirejs build:');
  21. grunt.log.warn(duplicates);
  22. done(new Error('r.js built duplicate modules, please check the excludes option.'));
  23. }
  24. done();
  25. }
  26. }
  27. }
  28. };
  29. // setup the modules require will build
  30. var requireModules = _c.build.options.modules = [
  31. {
  32. // main/common module
  33. name: 'app',
  34. include: [
  35. 'css',
  36. 'kbn',
  37. 'text',
  38. 'jquery',
  39. 'angular',
  40. 'settings',
  41. 'bootstrap',
  42. 'modernizr',
  43. 'elasticjs',
  44. 'timepicker',
  45. 'datepicker',
  46. 'underscore',
  47. 'filters/all',
  48. 'jquery.flot',
  49. 'services/all',
  50. 'angular-strap',
  51. 'directives/all',
  52. 'jquery.flot.pie',
  53. 'angular-sanitize',
  54. 'angular-dragdrop'
  55. ]
  56. }
  57. ];
  58. var fs = require('fs');
  59. var panelPath = config.srcDir+'/app/panels'
  60. // create a module for each directory in src/app/panels/
  61. fs.readdirSync(panelPath).forEach(function (panelName) {
  62. if(!grunt.file.exists(panelPath+'/'+panelName+'/module.js')) {
  63. fs.readdirSync(panelPath+"/"+panelName).forEach(function (subName) {
  64. requireModules.push({
  65. name: 'panels/'+panelName+'/'+subName+'/module',
  66. exclude: ['app']
  67. }); })
  68. } else {
  69. requireModules.push({
  70. name: 'panels/'+panelName+'/module',
  71. exclude: ['app']
  72. });
  73. }
  74. });
  75. // exclude the literal config definition from all modules
  76. requireModules
  77. .forEach(function (module) {
  78. module.excludeShallow = module.excludeShallow || [];
  79. module.excludeShallow.push('config');
  80. });
  81. return _c;
  82. };