requirejs.js 2.3 KB

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