apostrophe/data/media/table_editor/handsontable/Gruntfile.js

300 lines
8.9 KiB
JavaScript

/**
* This file is used to build Handsontable from `src/*`
*
* Installation:
* 1. Install Grunt CLI (`npm install -g grunt-cli`)
* 1. Install Grunt 0.4.0 and other dependencies (`npm install`)
*
* Build:
* Execute `grunt` from root directory of this directory (where Gruntfile.js is)
* To execute automatically after each change, execute `grunt --force default watch`
* To execute build followed by the test run, execute `grunt test`
*
* Result:
* building Handsontable will create files:
* - dist/handsontable.js
* - dist/handsontable.css
* - dist/handsontable.full.js
* - dist/handsontable.full.css
* - dist/handsontable.full.min.js
* - dist/handsontable.full.min.css
*
* See http://gruntjs.com/getting-started for more information about Grunt
*/
var browsers = [
{
browserName: 'firefox',
platform: 'Windows 7'
},
{
browserName: 'chrome',
platform: 'Windows 7'
},
{
browserName: 'opera',
platform: 'Windows 7'
},
//{
// browserName: 'internet explorer',
// version: '8',
// platform: 'Windows 7'
//},
//{
// browserName: 'internet explorer',
// version: '9',
// platform: 'Windows 7'
//},
{
browserName: 'internet explorer',
version: '10',
platform: 'Windows 8'
}
];
module.exports = function (grunt) {
require('time-grunt')(grunt);
require('load-grunt-tasks')(grunt);
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
gitinfo: {},
meta: {
src: [
'src/*.js',
'src/editors/*.js',
'src/plugins/**/!(*.spec).js',
'src/renderers/*.js',
'src/validators/*.js',
'src/shims/*.js',
'src/3rdparty/*.js'
],
walkontable: [
'src/3rdparty/walkontable/src/*.js'
],
vendor: [
'lib/numeral/numeral.js'
]
},
watch: {
options: {
livereload: true // works with Chrome LiveReload extension. See: https://github.com/gruntjs/grunt-contrib-watch
},
files: [
'src/**/*(*.js|*.css|*.html)',
'!src/3rdparty/walkontable/test/**/*',
'lib/**/*(*.js|*.css)'
],
tasks: ['build-dev']
},
jasmine: {
handsontable: {
src: [
'dist/handsontable.js',
'demo/js/numeral.de-de.js',
'demo/js/backbone/lodash.underscore.js',
'demo/js/backbone/backbone.js',
'demo/js/backbone/backbone-relational/backbone-relational.js',
'demo/js/jquery-ui/js/jquery-ui.custom.js',
'plugins/removeRow/handsontable.removeRow.js'
],
options: {
specs: [
'test/jasmine/spec/*Spec.js',
'test/jasmine/spec/!(mobile)*/*Spec.js',
'src/plugins/*/test/*.spec.js',
'plugins/*/test/*.spec.js',
'test/jasmine/spec/MemoryLeakTest.js'
],
styles: [
'test/jasmine/css/SpecRunner.css',
'dist/handsontable.css',
'plugins/removeRow/handsontable.removeRow.css',
'demo/js/jquery-ui/css/ui-bootstrap/jquery-ui.custom.css',
'demo/js/pikaday/css/pikaday.css'
],
vendor: [
'demo/js/jquery.min.js',
'lib/numeral/numeral.js',
'lib/autoResize/autoResize.js',
'lib/copyPaste/copyPaste.js',
'lib/SheetClip/SheetClip.js',
'lib/jsonpatch/json-patch-duplex.js',
'demo/js/moment/moment.js',
'demo/js/pikaday/pikaday.js',
'demo/js/ZeroClipboard.js',
'test/jasmine/lib/jasmine-extensions.js'
],
helpers: [
'test/jasmine/spec/SpecHelper.js',
'test/jasmine/lib/nodeShim.js',
'test/jasmine/spec/test-init.js'
],
outfile: 'test/jasmine/SpecRunner.html',
template: 'test/jasmine/templates/SpecRunner.tmpl',
keepRunner: true
}
},
walkontable: {
src: [
//'dist/walkontable.js',
'dist/handsontable.js'
],
options: {
specs: [
'src/3rdparty/walkontable/test/jasmine/spec/*.spec.js'
],
styles: [
'src/3rdparty/walkontable/css/walkontable.css'
],
vendor: [
'demo/js/jquery.min.js',
'lib/numeral/numeral.js',
'lib/autoResize/autoResize.js',
'lib/copyPaste/copyPaste.js',
'lib/SheetClip/SheetClip.js',
'lib/jsonpatch/json-patch-duplex.js',
'demo/js/moment/moment.js',
'demo/js/pikaday/pikaday.js',
'demo/js/ZeroClipboard.js',
'demo/js/numeral.de-de.js'
],
helpers: [
'src/3rdparty/walkontable/test/jasmine/SpecHelper.js',
'test/jasmine/lib/nodeShim.js',
'src/3rdparty/walkontable/test/jasmine/test-init.js'
],
outfile: 'src/3rdparty/walkontable/test/jasmine/SpecRunner.html',
template: 'test/jasmine/templates/SpecRunner.tmpl',
keepRunner: true
}
},
mobile: {
src: [
'dist/handsontable.js',
'demo/js/numeral.de-de.js',
'demo/js/backbone/lodash.underscore.js',
'demo/js/backbone/backbone.js',
'demo/js/backbone/backbone-relational/backbone-relational.js',
'demo/js/jquery-ui/js/jquery-ui.custom.js',
'plugins/removeRow/handsontable.removeRow.js'
],
options: {
specs: [
'test/jasmine/spec/mobile/*Spec.js',
'src/plugins/*/test/mobile/*.spec.js'
],
styles: [
'test/jasmine/css/SpecRunner.css',
'dist/handsontable.css',
'plugins/removeRow/handsontable.removeRow.css',
'demo/js/jquery-ui/css/ui-bootstrap/jquery-ui.custom.css',
'demo/js/pikaday/css/pikaday.css'
],
vendor: [
'demo/js/jquery.min.js',
'lib/numeral/numeral.js',
'demo/js/ZeroClipboard.js',
'demo/js/moment/moment.js',
'demo/js/pikaday/pikaday.js',
'test/jasmine/lib/jasmine-extensions.js'
],
helpers: [
'test/jasmine/spec/SpecHelper.js',
'test/jasmine/spec/MobileSpecHelper.js',
'test/jasmine/lib/nodeShim.js',
'test/jasmine/spec/test-init.js'
],
outfile: 'test/jasmine/MobileSpecRunner.html',
template: 'test/jasmine/templates/SpecRunner.tmpl',
keepRunner: true
}
}
},
connect: {
server: {
options: {
port: 8080,
base: '.',
keepalive: true
}
},
sauce: {
options: {
port: 9999,
base: '.',
keepalive: false
}
}
},
'saucelabs-jasmine': {
handsontable: {
options: {
urls: ['http://localhost:9999/test/jasmine/SpecRunner.html'],
// build: process.env.TRAVIS_JOB_ID,
build: '<%= pkg.version %>-<%= gitinfo.local.branch.current.name %>',
concurrency: 3,
browsers: browsers,
testname: "Development test (Handsontable)"
}
},
walkontable: {
options: {
urls: ['http://localhost:9999/src/3rdparty/walkontable/test/jasmine/SpecRunner.html'],
// build: process.env.TRAVIS_JOB_ID,
build: '<%= pkg.version %>-<%= gitinfo.local.branch.current.name %>',
concurrency: 3,
browsers: browsers,
testname: "Development test (Walkontable)"
}
}
},
jshint: {
options: {
jshintrc: true
},
handsontable: '<%= meta.src %>',
walkontable: '<%= meta.walkontable %>'
},
hotBuilder: {
handsontable: {
files: {
'dist': 'package.json'
}
},
handsontableDev: {
files: {
'dist': 'package.json'
},
options: {
devMode: true
}
},
options: {
minify: true
}
}
});
// Default task.
grunt.registerTask('default', ['jshint', 'gitinfo', 'build']);
grunt.registerTask('build', ['hotBuilder:handsontable']);
grunt.registerTask('build-dev', ['hotBuilder:handsontableDev']);
grunt.registerTask('test', ['default', 'jasmine:handsontable', 'jasmine:walkontable', 'jasmine:mobile:build']);
grunt.registerTask('test:handsontable', ['default', 'jasmine:handsontable']);
grunt.registerTask('test:walkontable', ['default', 'jasmine:walkontable']);
grunt.registerTask('test:mobile', ['default', 'jasmine:mobile:build']);
grunt.registerTask('sauce', ['default', 'connect:sauce', 'saucelabs-jasmine:walkontable', 'saucelabs-jasmine:handsontable']);
grunt.registerTask('sauce:handsontable', ['default', 'connect:sauce', 'saucelabs-jasmine:handsontable']);
grunt.registerTask('sauce:walkontable', ['default', 'connect:sauce', 'saucelabs-jasmine:walkontable']);
grunt.loadTasks('tasks');
};