mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			231 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
module.exports = function (grunt) {
 | 
						|
    var embedOption = grunt.option('embedLocales'),
 | 
						|
        embedLocaleDest = embedOption ?
 | 
						|
            'min/moment-with-customlocales.js' :
 | 
						|
            'min/moment-with-locales.js',
 | 
						|
        embedLocaleSrc = 'locale/*.js';
 | 
						|
 | 
						|
    if (embedOption && embedOption.match(/,/)) {
 | 
						|
        embedLocaleSrc = 'locale/{' + embedOption + '}.js';
 | 
						|
    }
 | 
						|
    else if (embedOption) {
 | 
						|
        embedLocaleSrc = 'locale/' + embedOption + '.js';
 | 
						|
    }
 | 
						|
 | 
						|
    grunt.initConfig({
 | 
						|
        pkg: grunt.file.readJSON('package.json'),
 | 
						|
        concat : {
 | 
						|
            locales: {
 | 
						|
                src: 'locale/*.js',
 | 
						|
                dest: 'min/locales.js'
 | 
						|
            },
 | 
						|
            tests: {
 | 
						|
                src: [
 | 
						|
                    'test/browser-prefix.js',
 | 
						|
                    'test/moment/*.js',
 | 
						|
                    'test/locale/*.js',
 | 
						|
                    'test/browser-suffix.js'
 | 
						|
                ],
 | 
						|
                dest: 'min/tests.js'
 | 
						|
            }
 | 
						|
        },
 | 
						|
        env : {
 | 
						|
            sauceLabs : (grunt.file.exists('.sauce-labs.creds') ?
 | 
						|
                    grunt.file.readJSON('.sauce-labs.creds') : {})
 | 
						|
        },
 | 
						|
        karma : {
 | 
						|
            options: {
 | 
						|
                frameworks: ['nodeunit'],
 | 
						|
                files: [
 | 
						|
                    'min/moment-with-locales.js',
 | 
						|
                    'min/tests.js',
 | 
						|
                    'test/browser.js'
 | 
						|
                ],
 | 
						|
                sauceLabs: {
 | 
						|
                    startConnect: true,
 | 
						|
                    testName: 'MomentJS'
 | 
						|
                },
 | 
						|
                customLaunchers: {
 | 
						|
                    slChromeWinXp: {
 | 
						|
                        base: 'SauceLabs',
 | 
						|
                        browserName: 'chrome',
 | 
						|
                        platform: 'Windows XP'
 | 
						|
                    },
 | 
						|
                    slIe9Win7: {
 | 
						|
                        base: 'SauceLabs',
 | 
						|
                        browserName: 'internet explorer',
 | 
						|
                        platform: 'Windows 7',
 | 
						|
                        version: '9'
 | 
						|
                    },
 | 
						|
                    slIe8Win7: {
 | 
						|
                        base: 'SauceLabs',
 | 
						|
                        browserName: 'internet explorer',
 | 
						|
                        platform: 'Windows 7',
 | 
						|
                        version: '8'
 | 
						|
                    },
 | 
						|
                    slFfLinux: {
 | 
						|
                        base: 'SauceLabs',
 | 
						|
                        browserName: 'firefox',
 | 
						|
                        platform: 'Linux'
 | 
						|
                    },
 | 
						|
                    slSafariOsx: {
 | 
						|
                        base: 'SauceLabs',
 | 
						|
                        browserName: 'safari',
 | 
						|
                        platform: 'OS X 10.8'
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            },
 | 
						|
            server: {
 | 
						|
                browsers: []
 | 
						|
            },
 | 
						|
            chrome: {
 | 
						|
                singleRun: true,
 | 
						|
                browsers: ['Chrome']
 | 
						|
            },
 | 
						|
            firefox: {
 | 
						|
                singleRun: true,
 | 
						|
                browsers: ['Firefox']
 | 
						|
            },
 | 
						|
            sauce: {
 | 
						|
                options: {reporters: ['dots']},
 | 
						|
                singleRun: true,
 | 
						|
                browsers: [
 | 
						|
                    'slChromeWinXp',
 | 
						|
                    'slIe9Win7',
 | 
						|
                    'slIe8Win7',
 | 
						|
                    'slFfLinux',
 | 
						|
                    'slSafariOsx'
 | 
						|
                ]
 | 
						|
            }
 | 
						|
        },
 | 
						|
 | 
						|
        uglify : {
 | 
						|
            main: {
 | 
						|
                files: {
 | 
						|
                    'min/moment-with-locales.min.js'     : 'min/moment-with-locales.js',
 | 
						|
                    'min/locales.min.js'                 : 'min/locales.js',
 | 
						|
                    'min/moment.min.js'                  : 'moment.js'
 | 
						|
                }
 | 
						|
            },
 | 
						|
            customlocales: {
 | 
						|
                files: {
 | 
						|
                    'min/moment-with-customlocales.min.js' : 'min/moment-with-customlocales.js'
 | 
						|
                }
 | 
						|
            },
 | 
						|
            options: {
 | 
						|
                mangle: true,
 | 
						|
                compress: {
 | 
						|
                    dead_code: false // jshint ignore:line
 | 
						|
                },
 | 
						|
                output: {
 | 
						|
                    ascii_only: true // jshint ignore:line
 | 
						|
                },
 | 
						|
                report: 'min',
 | 
						|
                preserveComments: 'some'
 | 
						|
            }
 | 
						|
        },
 | 
						|
        nodeunit : {
 | 
						|
            all : ['test/moment/**/*.js', 'test/locale/**/*.js']
 | 
						|
        },
 | 
						|
        jshint: {
 | 
						|
            all: [
 | 
						|
                'Gruntfile.js', 'moment.js', 'locale/**/*.js', 'test/**/*.js',
 | 
						|
                '!test/browser*.js'
 | 
						|
            ],
 | 
						|
            options: {
 | 
						|
                'node'     : true,
 | 
						|
                'browser'  : true,
 | 
						|
                'boss'     : false,
 | 
						|
                'curly'    : true,
 | 
						|
                'debug'    : false,
 | 
						|
                'devel'    : false,
 | 
						|
                'eqeqeq'   : true,
 | 
						|
                'eqnull'   : true,
 | 
						|
                'evil'     : false,
 | 
						|
                'forin'    : false,
 | 
						|
                'immed'    : false,
 | 
						|
                'laxbreak' : false,
 | 
						|
                'newcap'   : true,
 | 
						|
                'noarg'    : true,
 | 
						|
                'noempty'  : false,
 | 
						|
                'nonew'    : false,
 | 
						|
                'onevar'   : true,
 | 
						|
                'plusplus' : false,
 | 
						|
                'regexp'   : false,
 | 
						|
                'undef'    : true,
 | 
						|
                'sub'      : true,
 | 
						|
                'strict'   : false,
 | 
						|
                'white'    : true,
 | 
						|
                'es3'      : true,
 | 
						|
                'camelcase' : true,
 | 
						|
                'globals': {
 | 
						|
                    'define': false
 | 
						|
                }
 | 
						|
            }
 | 
						|
        },
 | 
						|
        jscs: {
 | 
						|
            all: [
 | 
						|
                'Gruntfile.js', 'moment.js', 'locale/**/*.js',
 | 
						|
                'test/**/*.js', '!test/browser*.js'
 | 
						|
            ],
 | 
						|
            options: {
 | 
						|
                config: '.jscs.json'
 | 
						|
            }
 | 
						|
        },
 | 
						|
        watch : {
 | 
						|
            test : {
 | 
						|
                files : [
 | 
						|
                    'moment.js',
 | 
						|
                    'locale/*.js',
 | 
						|
                    'test/**/*.js'
 | 
						|
                ],
 | 
						|
                tasks: ['nodeunit']
 | 
						|
            },
 | 
						|
            jshint : {
 | 
						|
                files : '<%= jshint.all %>',
 | 
						|
                tasks: ['jshint']
 | 
						|
            }
 | 
						|
        },
 | 
						|
        embedLocales: {
 | 
						|
            moment: 'moment.js',
 | 
						|
            dest: embedLocaleDest,
 | 
						|
            targetLocales: embedLocaleSrc
 | 
						|
        },
 | 
						|
        benchmark: {
 | 
						|
            all: {
 | 
						|
                src: ['benchmarks/*.js']
 | 
						|
            }
 | 
						|
        }
 | 
						|
    });
 | 
						|
 | 
						|
    grunt.loadTasks('tasks');
 | 
						|
 | 
						|
    // These plugins provide necessary tasks.
 | 
						|
    require('load-grunt-tasks')(grunt);
 | 
						|
 | 
						|
    // Default task.
 | 
						|
    grunt.registerTask('default', ['jshint', 'jscs', 'nodeunit']);
 | 
						|
 | 
						|
    // test tasks
 | 
						|
    grunt.registerTask('test', ['test:node', 'test:browser']);
 | 
						|
    grunt.registerTask('test:node', ['nodeunit']);
 | 
						|
    grunt.registerTask('test:server', ['concat', 'embedLocales', 'karma:server']);
 | 
						|
    grunt.registerTask('test:browser', ['concat', 'embedLocales', 'karma:chrome', 'karma:firefox']);
 | 
						|
    grunt.registerTask('test:sauce-browser', ['concat', 'embedLocales', 'env:sauceLabs', 'karma:sauce']);
 | 
						|
    grunt.registerTask('test:travis-sauce-browser', ['concat', 'embedLocales', 'karma:sauce']);
 | 
						|
 | 
						|
    // travis build task
 | 
						|
    grunt.registerTask('build:travis', [
 | 
						|
        // code style
 | 
						|
        'jshint', 'jscs',
 | 
						|
        // node tests
 | 
						|
        'test:node'
 | 
						|
    ]);
 | 
						|
 | 
						|
    // Task to be run when releasing a new version
 | 
						|
    grunt.registerTask('release', [
 | 
						|
        'jshint', 'nodeunit', 'concat', 'embedLocales',
 | 
						|
        'component', 'uglify:main'
 | 
						|
    ]);
 | 
						|
};
 |