blob: f245d730352a1cf52ae23bad23cd92756066d005 [file] [log] [blame]
/*
* Copyright 2013 The Polymer Authors. All rights reserved.
* Use of this source code is governed by a BSD-style
* license that can be found in the LICENSE file.
*/
module.exports = function(grunt) {
ShadowDOMPolyfill = [
'sidetable.js',
'wrappers.js',
'wrappers/events.js',
'wrappers/NodeList.js',
'wrappers/Node.js',
'querySelector.js',
'wrappers/node-interfaces.js',
'wrappers/CharacterData.js',
'wrappers/Element.js',
'wrappers/HTMLElement.js',
'wrappers/HTMLContentElement.js',
'wrappers/HTMLShadowElement.js',
'wrappers/HTMLTemplateElement.js',
'wrappers/HTMLUnknownElement.js',
'wrappers/generic.js',
'wrappers/ShadowRoot.js',
'ShadowRenderer.js',
'wrappers/Document.js',
'wrappers/Window.js',
'wrappers/MutationObserver.js',
'wrappers/override-constructors.js'
];
ShadowDOMPolyfill = ShadowDOMPolyfill.map(function(p) {
return '../../../third_party/polymer/ShadowDOM/src/' + p;
});
// Apply partial patch from Polymer/Platform, dart2js, CSS
// polyfill from platform and dart2js CSS patches:
ShadowDOMPolyfill.unshift(
'../lib/src/platform/patches-shadowdom-polyfill-before.js'
);
ShadowDOMPolyfill.push(
'../lib/src/platform/patches-shadowdom-polyfill.js',
'../lib/src/platform/platform-init.js',
'../lib/src/platform/ShadowCSS.js',
'../lib/src/platform/patches-shadow-css.js'
);
// Only load polyfill if not natively present.
ConditionalShadowDOM = [].concat(
'build/if-poly.js',
ShadowDOMPolyfill,
'build/end-if.js'
);
// karma setup
var browsers;
(function() {
try {
var config = grunt.file.readJSON('local.json');
if (config.browsers) {
browsers = config.browsers;
}
} catch (e) {
var os = require('os');
browsers = ['Chrome', 'Firefox'];
if (os.type() === 'Darwin') {
browsers.push('ChromeCanary');
}
if (os.type() === 'Windows_NT') {
browsers.push('IE');
}
}
})();
grunt.initConfig({
karma: {
options: {
configFile: 'conf/karma.conf.js',
keepalive: true,
browsers: browsers
},
buildbot: {
browsers: browsers,
reporters: ['crbot'],
logLevel: 'OFF'
},
ShadowDOM: {
browsers: browsers
}
},
concat: {
ShadowDOM: {
src: ConditionalShadowDOM,
dest: '../lib/shadow_dom.debug.js',
nonull: true
}
},
uglify: {
ShadowDOM: {
options: {
compress: {
// TODO(sjmiles): should be false by default (?)
// https://github.com/mishoo/UglifyJS2/issues/165
unsafe: false
}
//compress: true, Xmangle: true, beautify: true, unsafe: false
},
files: {
'../lib/shadow_dom.min.js': ['../lib/shadow_dom.debug.js']
}
}
},
yuidoc: {
compile: {
name: '<%= pkg.name %>',
description: '<%= pkg.description %>',
version: '<%= pkg.version %>',
url: '<%= pkg.homepage %>',
options: {
exclude: 'third_party',
paths: '.',
outdir: 'docs',
linkNatives: 'true',
tabtospace: 2,
themedir: '../docs/doc_themes/simple'
}
}
},
pkg: grunt.file.readJSON('package.json')
});
// plugins
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-yuidoc');
grunt.loadNpmTasks('grunt-karma-0.9.1');
// tasks
grunt.registerTask('default', ['concat', 'uglify']);
grunt.registerTask('minify', ['concat', 'uglify']);
grunt.registerTask('docs', ['yuidoc']);
grunt.registerTask('test', ['karma:ShadowDOM']);
grunt.registerTask('test-buildbot', ['karma:buildbot']);
};