Files
less.js/Gruntfile.js
2013-08-03 16:27:49 +02:00

222 lines
5.2 KiB
JavaScript

'use strict';
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
build: grunt.file.readYAML('build/build.yml'),
pkg: grunt.file.readJSON('package.json'),
// Metadata
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' +
' * @licence \n' +
' */ \n\n'
},
shell: {
options: {stdout: 'log'},
test: {
command: 'node test/less-test.js'
},
browser: {
command: 'node test/browser-test-prepare.js'
},
phantom: {
command: 'phantomjs test/browser/phantom-runner.js'
},
benchmark: {
command: 'node benchmark/less-benchmark.js'
}
},
concat: {
options: {
stripBanners: true,
banner: '<%= meta.banner %>\n\n(function (window, undefined) {',
footer: '\n})(window);'
},
// Browser versions
browser: {
src: ['<%= build.browser %>'],
dest: 'test/browser/less.js'
},
alpha: {
src: ['<%= build.browser %>'],
dest: 'dist/less-<%= pkg.version %>-alpha.js'
},
beta: {
src: ['<%= build.browser %>'],
dest: 'dist/less-<%= pkg.version %>-beta.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'
},
// Generate readme
readme: {
options: {
process: true,
banner: '' // override task-level banner
},
src: ['build/README.md'],
dest: 'README.md'
}
},
uglify: {
options: {
banner: '<%= meta.banner %>',
mangle: true
},
browser: {
src: ['<%= concat.browser.src %>'],
dest: 'dist/less-<%= pkg.version %>.min.js'
},
alpha: {
src: ['<%= concat.alpha.src %>'],
dest: 'dist/less-<%= pkg.version %>-alpha.min.js'
},
beta: {
src: ['<%= concat.beta.src %>'],
dest: 'dist/less-<%= pkg.version %>-beta.min.js'
}
},
jshint: {
options: {
jshintrc: '.jshintrc'
},
benchmark: {
src: ['benchmark/**/*.js']
},
gruntfile: {
src: 'Gruntfile.js'
},
lib: {
src: ['lib/**/*.js']
},
test: {
src: ['test/*.js', 'test/browser/runner-*.js']
}
},
connect: {
server: {
options: {
port: 8081
// grunt-contrib-jasmine assumes that web-server runs in root directory
// it 's outfile is relativized against root
//base: 'test'
}
}
},
jasmine: {
options: {
keepRunner: true, //TODO meri: remove after it is done
host: 'http://localhost:8081/',
helpers: 'test/browser/common.js',
template: 'test/browser/test-runner-template.tmpl'
},
main: {
//TODO meri: find better location for less.js - reference can go to template and compiled browser to dist
//src is used to build list of less files to compile
src: ['test/less/*.less', '!test/less/javascript.less', '!test/less/urls.less'],
options: {
specs: 'test/browser/runner-main.js',
outfile: 'test/browser/test-runner-main.html',
templateOptions: {
originalLess: '',
expectedCss: ''
}
}
}
},
// Before running tests, clean out the results
// of any previous tests. (this will need to be
// setup based on configuration of browser tests.
clean: {
test: ['test/browser/test-runner-*.htm']
}
});
// 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');
// Default task to build Less.js
grunt.registerTask('default', [
'browser',
'rhino'
]);
// Browser
grunt.registerTask('browser', [
'concat:browser',
'uglify:browser'
]);
// Rhino
grunt.registerTask('rhino', [
'concat:rhino'
// 'uglify:rhino'
]);
// Minify
grunt.registerTask('min', [
'uglify'
]);
// Alpha
grunt.registerTask('alpha', [
'concat:alpha',
'uglify:alpha'
]);
// Beta
grunt.registerTask('beta', [
'concat:beta',
'uglify:beta'
]);
// Run all tests
grunt.registerTask('browserTest', [
'connect:server',
]);
// Run all tests
grunt.registerTask('test', [
'jshint:lib',
'clean',
'shell:test',
'browserTest'
// 'shell:browser',
// 'shell:phantom'
]);
// Run benchmark
grunt.registerTask('benchmark', [
'shell:benchmark'
]);
// Readme.
grunt.registerTask('readme', [
'concat:readme'
]);
};