‘use strict’;
module.exports = function(grunt) {
// Report the elapsed execution time of tasks. require('time-grunt')(grunt); // Project configuration. grunt.initConfig({ // Metadata required for build. build: grunt.file.readYAML('build/build.yml'), pkg: grunt.file.readJSON('package.json'), meta: { license: '<%= _.pluck(pkg.licenses, "type").join(", ") %>', copyright: 'Copyright (c) 2009-<%= grunt.template.today("yyyy") %>', banner: '/*! \n' + ' * LESS - <%= pkg.description %> v<%= pkg.version %> \n' + ' * http://lesscss.org \n' + ' * \n' + ' * <%= meta.copyright %>, <%= pkg.author.name %> <<%= pkg.author.email %>> \n' + ' * Licensed under the <%= meta.license %> License. \n' + ' * \n' + ' */ \n\n' + ' /**' + ' * @license <%= meta.license %>\n' + ' */ \n\n' }, shell: { options: {stdout: true, failOnError: true}, test: { command: 'node test' }, benchmark: { command: 'node benchmark/less-benchmark.js' }, "browsertest-server": { command: 'node node_modules/http-server/bin/http-server . -p 8088' }, "sourcemap-test": { command: [ 'node bin/lessc --source-map --source-map-map-inline test/less/import.less test/sourcemaps/import.css', 'node bin/lessc --source-map --source-map-map-inline test/less/sourcemaps/basic.less test/sourcemaps/basic.css', 'node node_modules/http-server/bin/http-server test/sourcemaps -p 8084'].join('&&') } }, concat: { options: { stripBanners: 'all', banner: '<%= meta.banner %>\n\n(function (window, undefined) {', footer: '\n})(window);' }, // Browser versions browsertest: { src: ['<%= build.browser %>'], dest: 'test/browser/less.js' }, stable: { src: ['<%= build.browser %>'], dest: 'dist/less-<%= pkg.version %>.js' }, // Rhino rhino: { options: { banner: '/* LESS.js v<%= pkg.version %> RHINO | <%= meta.copyright %>, <%= pkg.author.name %> <<%= pkg.author.email %>> */\n\n', footer: '' // override task-level footer }, src: ['<%= build.rhino %>'], dest: 'dist/less-rhino-<%= pkg.version %>.js' }, // lessc for Rhino rhinolessc: { options: { banner: '/* LESS.js v<%= pkg.version %> RHINO | <%= meta.copyright %>, <%= pkg.author.name %> <<%= pkg.author.email %>> */\n\n', footer: '' // override task-level footer }, src: ['<%= build.rhinolessc %>'], dest: 'dist/lessc-rhino-<%= pkg.version %>.js' }, // Generate readme readme: { // override task-level banner and footer options: {process: true, banner: '', footer: ''}, src: ['build/README.md'], dest: 'README.md' } }, uglify: { options: { banner: '<%= meta.banner %>', mangle: true }, stable: { src: ['<%= concat.stable.dest %>'], dest: 'dist/less-<%= pkg.version %>.min.js' } }, jshint: { options: {jshintrc: '.jshintrc'}, files: { src: [ 'Gruntfile.js', 'lib/less/**/*.js' ] } }, connect: { server: { options: { port: 8081 } } }, jasmine: { options: { // version: '2.0.0-rc2', keepRunner: true, host: 'http://localhost:8081/', vendor: ['test/browser/common.js', 'test/browser/less.js'], template: 'test/browser/test-runner-template.tmpl' }, main: { // src is used to build list of less files to compile src: ['test/less/*.less', '!test/less/javascript.less', '!test/less/urls.less', '!test/less/empty.less'], options: { helpers: 'test/browser/runner-main-options.js', specs: 'test/browser/runner-main-spec.js', outfile: 'tmp/browser/test-runner-main.html' } }, legacy: { src: ['test/less/legacy/*.less'], options: { helpers: 'test/browser/runner-legacy-options.js', specs: 'test/browser/runner-legacy-spec.js', outfile: 'tmp/browser/test-runner-legacy.html' } }, errors: { src: ['test/less/errors/*.less', '!test/less/errors/javascript-error.less'], options: { timeout: 20000, helpers: 'test/browser/runner-errors-options.js', specs: 'test/browser/runner-errors-spec.js', outfile: 'tmp/browser/test-runner-errors.html' } }, noJsErrors: { src: ['test/less/no-js-errors/*.less'], options: { helpers: 'test/browser/runner-no-js-errors-options.js', specs: 'test/browser/runner-no-js-errors-spec.js', outfile: 'tmp/browser/test-runner-no-js-errors.html' } }, browser: { src: ['test/browser/less/*.less'], options: { helpers: 'test/browser/runner-browser-options.js', specs: 'test/browser/runner-browser-spec.js', outfile: 'tmp/browser/test-runner-browser.html' } }, relativeUrls: { src: ['test/browser/less/relative-urls/*.less'], options: { helpers: 'test/browser/runner-relative-urls-options.js', specs: 'test/browser/runner-relative-urls-spec.js', outfile: 'tmp/browser/test-runner-relative-urls.html' } }, rootpath: { src: ['test/browser/less/rootpath/*.less'], options: { helpers: 'test/browser/runner-rootpath-options.js', specs: 'test/browser/runner-rootpath-spec.js', outfile: 'tmp/browser/test-runner-rootpath.html' } }, rootpathRelative: { src: ['test/browser/less/rootpath-relative/*.less'], options: { helpers: 'test/browser/runner-rootpath-relative-options.js', specs: 'test/browser/runner-rootpath-relative-spec.js', outfile: 'tmp/browser/test-runner-rootpath-relative.html' } }, production: { src: ['test/browser/less/production/*.less'], options: { helpers: 'test/browser/runner-production-options.js', specs: 'test/browser/runner-production-spec.js', outfile: 'tmp/browser/test-runner-production.html' } }, modifyVars: { src: ['test/browser/less/modify-vars/*.less'], options: { helpers: 'test/browser/runner-modify-vars-options.js', specs: 'test/browser/runner-modify-vars-spec.js', outfile: 'tmp/browser/test-runner-modify-vars.html' } }, globalVars: { src: ['test/browser/less/global-vars/*.less'], options: { helpers: 'test/browser/runner-global-vars-options.js', specs: 'test/browser/runner-global-vars-spec.js', outfile: 'tmp/browser/test-runner-global-vars.html' } }, postProcessor: { src: ['test/browser/less/postProcessor/*.less'], options: { helpers: 'test/browser/runner-postProcessor-options.js', specs: 'test/browser/runner-postProcessor.js', outfile: 'tmp/browser/test-postProcessor.html' } } }, // Clean the version of less built for the tests clean: { test: ['test/browser/less.js', 'tmp'], "sourcemap-test": ['test/sourcemaps/*.css', 'test/sourcemaps/*.map'] } }); // Load these plugins to provide the necessary tasks require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); // Actually load this plugin's task(s). grunt.loadTasks('build/tasks'); // by default, run tests grunt.registerTask('default', [ 'test' ]); // Release grunt.registerTask('stable', [ 'concat:stable', 'uglify:stable' ]); // Release Rhino Version grunt.registerTask('rhino', [ 'concat:rhino', 'concat:rhinolessc' ]); // Run all browser tests grunt.registerTask('browsertest', [ 'browser', 'connect', 'jasmine' ]); // setup a web server to run the browser tests in a browser rather than phantom grunt.registerTask('browsertest-server', [ 'shell:browsertest-server' ]); // Create the browser version of less.js grunt.registerTask('browser', [ 'concat:browsertest' ]); // Run all tests grunt.registerTask('test', [ 'clean', 'jshint', 'shell:test', 'browsertest' ]); // generate a good test environment for testing sourcemaps grunt.registerTask('sourcemap-test', [ 'clean:sourcemap-test', 'shell:sourcemap-test' ]); // Run benchmark grunt.registerTask('benchmark', [ 'shell:benchmark' ]); // Readme. grunt.registerTask('readme', [ 'concat:readme' ]);
};