Skip to content

Commit

Permalink
more work on two grunt build modes, backend/standalone modes
Browse files Browse the repository at this point in the history
  • Loading branch information
torkelo committed Dec 31, 2014
1 parent f8ddfec commit 9c3cd87
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 72 deletions.
14 changes: 13 additions & 1 deletion Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,19 @@ module.exports = function (grunt) {
docsDir: 'docs/'
};

config.mode = grunt.option('mode') || 'standalone';
config.modeOptions = {
requirejs: {
paths: { config: '../config.sample' },
excludeConfig: true,
}
};

if (config.mode === 'backend') {
config.modeOptions.requirejs.path = { config: 'components/config' };
config.modeOptions.requirejs.excludeConfig = true;
}

// load plugins
require('load-grunt-tasks')(grunt);

Expand All @@ -34,5 +47,4 @@ module.exports = function (grunt) {

// pass the config to grunt
grunt.initConfig(config);

};
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
"dependencies": {
"grunt-jscs-checker": "^0.4.4",
"karma-sinon": "^1.0.3",
"lodash": "^2.4.1",
"sinon": "^1.10.3"
}
}
2 changes: 1 addition & 1 deletion tasks/build_task.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ module.exports = function(grunt) {
'filerev',
'usemin',
'clean:temp',
// 'uglify:dest'
'uglify:dest'
]);

grunt.registerTask('build:grafanaVersion', function() {
Expand Down
142 changes: 72 additions & 70 deletions tasks/options/requirejs.js
Original file line number Diff line number Diff line change
@@ -1,90 +1,92 @@
module.exports = function(config,grunt) {
'use strict';

var _c = {
build: {
options: {
appDir: '<%= tempDir %>',
dir: '<%= destDir %>',
baseUrl: './app',
function buildRequireJsOptions() {

mainConfigFile: '<%= tempDir %>/app/components/require.standalone.js',
modules: [], // populated below,
var options = {
appDir: '<%= tempDir %>',
dir: '<%= destDir %>',
mainConfigFile: '<%= tempDir %>/app/components/require.<%= mode %>.js',
baseUrl: './app',
paths: config.modeOptions.requirejs.paths,

optimize: 'none',
optimizeCss: 'none',
optimizeAllPluginResources: false,
modules: [], // populated below,

paths: { config: '../config.sample' }, // fix, fallbacks need to be specified
optimize: 'none',
optimizeCss: 'none',
optimizeAllPluginResources: false,

removeCombined: true,
findNestedDependencies: true,
normalizeDirDefines: 'all',
inlineText: true,
skipPragmas: true,
removeCombined: true,
findNestedDependencies: true,
normalizeDirDefines: 'all',
inlineText: true,
skipPragmas: true,

done: function (done, output) {
var duplicates = require('rjs-build-analysis').duplicates(output);
done: function (done, output) {
var duplicates = require('rjs-build-analysis').duplicates(output);

if (duplicates.length > 0) {
grunt.log.subhead('Duplicates found in requirejs build:');
grunt.log.warn(duplicates);
done(new Error('r.js built duplicate modules, please check the excludes option.'));
}

done();
if (duplicates.length > 0) {
grunt.log.subhead('Duplicates found in requirejs build:');
grunt.log.warn(duplicates);
done(new Error('r.js built duplicate modules, please check the excludes option.'));
}

done();
}
}
};
};

// setup the modules require will build
var requireModules = _c.build.options.modules = [
// setup the modules require will build
var requireModules = options.modules = [
{
// main/common module
name: 'app',
include: [
'css',
'kbn',
'text',
'jquery',
'angular',
'settings',
'bootstrap',
'modernizr',
'timepicker',
'datepicker',
'lodash',
'jquery.flot',
'angular-strap',
'angular-dragdrop',
'services/all',
'features/all',
'directives/all',
'filters/all',
'controllers/all',
'routes/standalone/all',
'routes/backend/all',
'components/partials',
]
}
];

var fs = require('fs');
var panelPath = config.srcDir+'/app/panels';
include: [
'css',
'kbn',
'text',
'jquery',
'angular',
'settings',
'bootstrap',
'modernizr',
'timepicker',
'datepicker',
'lodash',
'jquery.flot',
'angular-strap',
'angular-dragdrop',
'services/all',
'features/all',
'directives/all',
'filters/all',
'controllers/all',
'routes/standalone/all',
'routes/backend/all',
'components/partials',
]
}
];

// create a module for each directory in src/app/panels/
fs.readdirSync(panelPath).forEach(function (panelName) {
requireModules[0].include.push('panels/'+panelName+'/module');
requireModules[0].include.push('text!panels/'+panelName+'/module.html');
});
var fs = require('fs');
var panelPath = config.srcDir+'/app/panels';

// exclude the literal config definition from all modules
requireModules
.forEach(function (module) {
module.excludeShallow = module.excludeShallow || [];
module.excludeShallow.push('config');
// create a module for each directory in src/app/panels/
fs.readdirSync(panelPath).forEach(function (panelName) {
requireModules[0].include.push('panels/'+panelName+'/module');
requireModules[0].include.push('text!panels/'+panelName+'/module.html');
});

return _c;
if (config.modeOptions.requirejs.excludeConfig) {
// exclude the literal config definition from all modules
requireModules
.forEach(function (module) {
module.excludeShallow = module.excludeShallow || [];
module.excludeShallow.push('config');
});
}

return { options: options };
}

return { build: buildRequireJsOptions() };
};

0 comments on commit 9c3cd87

Please sign in to comment.