requirejs.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. paths: { config: '../config.sample' }, // fix, fallbacks need to be specified
  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. }
  29. };
  30. // setup the modules require will build
  31. var requireModules = _c.build.options.modules = [
  32. {
  33. // main/common module
  34. name: 'app',
  35. include: [
  36. 'css',
  37. 'kbn',
  38. 'text',
  39. 'jquery',
  40. 'angular',
  41. 'settings',
  42. 'bootstrap',
  43. 'modernizr',
  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-dragdrop',
  54. ]
  55. }
  56. ];
  57. var fs = require('fs');
  58. var panelPath = config.srcDir+'/app/panels'
  59. // create a module for each directory in src/app/panels/
  60. fs.readdirSync(panelPath).forEach(function (panelName) {
  61. requireModules[0].include.push('panels/'+panelName+'/module');
  62. requireModules[0].include.push('text!panels/'+panelName+'/module.html');
  63. });
  64. // exclude the literal config definition from all modules
  65. requireModules
  66. .forEach(function (module) {
  67. module.excludeShallow = module.excludeShallow || [];
  68. module.excludeShallow.push('config');
  69. });
  70. return _c;
  71. };