bigbluebutton-Github/bigbluebutton-html5/Gruntfile.js
2017-06-02 19:25:02 +00:00

104 lines
2.9 KiB
JavaScript
Executable File

/* jshint node: true */
module.exports = function (grunt) {
require('load-grunt-tasks')(grunt);
// importing the Meteor settings:
const SHELL_CONFIG = require('./private/config/server/shell.yaml');
const PROD_SHELL_CONFIG = require('./private/config/production/server/shell.yaml');
// root URL in development/production:
const rootURL = (SHELL_CONFIG.shell.rootURL == undefined)
? 'http://127.0.0.1/html5client'
: SHELL_CONFIG.shell.rootURL;
// command line string containing the Meteor's home directory in production:
const prodHomeStr = (PROD_SHELL_CONFIG.shell.home == undefined) ? ''
: (`HOME=${PROD_SHELL_CONFIG.shell.home} `);
// final commands:
const METEOR_DEV_COMMAND = `ROOT_URL=${
rootURL} NODE_ENV=development` + ' meteor';
const METEOR_PROD_COMMAND = `${prodHomeStr}ROOT_URL=${
rootURL} NODE_ENV=production` + ' meteor';
// configure Grunt
grunt.initConfig({
watch: {
scripts: {
files: ['**/*.js', '**/*.jsx'],
tasks: ['force:newer:jscs:check'],
options: {
event: ['all'],
spawn: true,
},
},
},
jscs: {
check: {
src: ['**/*.js', '**/*.jsx'],
options: {
config: '.jscsrc',
verbose: true,
esnext: true,
},
},
autofix: {
src: ['**/*.js', '**/*.jsx'],
options: {
config: '.jscsrc',
verbose: true,
esnext: true,
fix: true,
},
},
},
shell: {
start_meteor_development: {
command: METEOR_DEV_COMMAND,
},
start_meteor_production: {
command: METEOR_PROD_COMMAND,
},
},
concurrent: {
options: {
logConcurrentOutput: true,
limit: 3,
},
meteor_watch_development: {
tasks: ['shell:start_meteor_development', 'watch'],
},
meteor_watch_production: {
tasks: ['shell:start_meteor_production', 'watch'],
},
},
});
grunt.loadNpmTasks('grunt-jscs');
grunt.loadNpmTasks('grunt-force-task');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-shell');
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-newer');
const mode = (grunt.option('mode') == 'production') ? 'production' : 'development';
// sets the default task to run JSCS first (forcing our way past warnings) and then start Meteor:
grunt.registerTask('default', ['force:newer:jscs:check', `concurrent:meteor_watch_${mode}`]);
// sets the autofix task to fix JSCS warning when possible and then start Meteor:
grunt.registerTask('autofix', ['force:newer:jscs:autofix', `concurrent:meteor_watch_${mode}`]);
// runs the linter task:
grunt.registerTask('quicklint', ['force:jscs:check']);
// runs the linter task and autofixes errors when possible:
grunt.registerTask('quickfix', ['force:jscs:autofix']);
};