requirejs.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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.<%= mode %>.js',
  8. baseUrl: './app',
  9. paths: config.modeOptions.requirejs.paths,
  10. modules: [], // populated below,
  11. optimize: 'none',
  12. optimizeCss: 'none',
  13. optimizeAllPluginResources: false,
  14. removeCombined: true,
  15. findNestedDependencies: true,
  16. normalizeDirDefines: 'all',
  17. inlineText: true,
  18. skipPragmas: true,
  19. done: function (done, output) {
  20. var duplicates = require('rjs-build-analysis').duplicates(output);
  21. if (duplicates.length > 0) {
  22. grunt.log.subhead('Duplicates found in requirejs build:');
  23. grunt.log.warn(duplicates);
  24. done(new Error('r.js built duplicate modules, please check the excludes option.'));
  25. }
  26. done();
  27. }
  28. };
  29. // setup the modules require will build
  30. var requireModules = 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. 'timepicker',
  44. 'datepicker',
  45. 'lodash',
  46. 'jquery.flot',
  47. 'angular-strap',
  48. 'angular-dragdrop',
  49. 'services/all',
  50. 'features/all',
  51. 'directives/all',
  52. 'filters/all',
  53. 'controllers/all',
  54. 'routes/standalone/all',
  55. 'routes/backend/all',
  56. 'components/partials',
  57. ]
  58. }
  59. ];
  60. var fs = require('fs');
  61. var panelPath = config.srcDir+'/app/panels';
  62. // create a module for each directory in src/app/panels/
  63. fs.readdirSync(panelPath).forEach(function (panelName) {
  64. requireModules[0].include.push('panels/'+panelName+'/module');
  65. requireModules[0].include.push('text!panels/'+panelName+'/module.html');
  66. });
  67. if (config.modeOptions.requirejs.excludeConfig) {
  68. // exclude the literal config definition from all modules
  69. requireModules
  70. .forEach(function (module) {
  71. module.excludeShallow = module.excludeShallow || [];
  72. module.excludeShallow.push('config');
  73. });
  74. }
  75. return { options: options };
  76. }
  77. return { build: buildRequireJsOptions() };
  78. };