Skip to content
186 lines (158 sloc) 5.09 KB
/*
* @license
* Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
module.exports = function(grunt) {
// List of version directories to vulcanize.
var POLYMER_VERSIONS = [
'0.5',
'1.0'
];
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
jekyllConfig: grunt.file.readYAML('_config.yml'),
polymerVersion: null,
jekyll: {
options: { // Universal options
bundleExec: true,
},
build: {
},
serve: {
options: {
//port: '<%= jekyllConfig.server_port %>',
watch: true
//serve: true
}
}
},
vulcanize: {
options: {
strip: true,
csp: true,
inline: true
},
elements: {
options: {
excludes: {
imports: [
"polymer.html$"
]
}
},
// files: {
// '<%= polymerVersion %>/elements/common_elements.vulcanized.html': '<%= polymerVersion %>/elements/common_elements.html',
// '<%= polymerVersion %>/elements/homepage_elements.vulcanized.html': '<%= polymerVersion %>/elements/homepage_elements.html',
// }
},
samples: {
files: {
'0.5/samples/layout-elements/drawer-app.vulcanized.html': '0.5/samples/layout-elements/drawer-app.html',
'0.5/samples/layout-elements/header-app.vulcanized.html': '0.5/samples/layout-elements/header-app.html',
'0.5/samples/layout-elements/scaffold-app.vulcanized.html': '0.5/samples/layout-elements/scaffold-app.html',
'0.5/samples/layout-elements/toolbar-sample.vulcanized.html': '0.5/samples/layout-elements/toolbar-sample.html'
}
}
},
watch: {
elements: {
files: ['elements/**/*.html'],
tasks: ['vulcanize'],
options: {
spawn: false,
}
}
},
appengine: {
options: {
manageFlags: {
oauth2: true
},
runFlags: {
port: 3000,
host: "0.0.0.0"
}
},
frontend: {
root: '.'
}
},
compass: {
dist: {
options: {
sassDir: 'sass',
cssDir: 'css',
watch: true
}
}
},
concurrent: {
options: {
logConcurrentOutput: true,
limit: 5
},
target1: [
'vulcanize-elements',
'jekyll:serve',
'appengine:run:frontend',
'compass',
'watch'
]
},
doc_merge: {
'0_5': {
options: {
prefix: ['core', 'paper'],
merge: true
},
src: '0.5/components',
dest: '_data/versions/0_5/elements'
}
}
});
// Plugin and grunt tasks.
require('load-grunt-tasks')(grunt);
// Default task
// Task to run vulcanize, jekyll, app engine server, compass watch, vulcanize watch
grunt.registerTask('default', ['concurrent']);
grunt.task.registerTask('vulcanize-elements', 'Vulcanizes site elements', function() {
var vulcanize = grunt.config.get('vulcanize') || {};
vulcanize.elements.files = vulcanize.elements.files || {};
// Dynamic add vulcanize rules for each polymer version.
POLYMER_VERSIONS.forEach(function(ver) {
var files = vulcanize.elements.files;
files[ver + '/elements/common_elements.vulcanized.html'] = ver + '/elements/common_elements.html';
files[ver + '/elements/homepage_elements.vulcanized.html'] = ver + '/elements/homepage_elements.html';
});
grunt.config.set('vulcanize', vulcanize);
grunt.task.run('vulcanize');
});
grunt.task.registerTask('doc-merge-all', 'Doc merge all element sets', function() {
var docMerge = grunt.config.get('doc_merge') || {};
// Exclude 0.5 because it's hardcoded in task.
POLYMER_VERSIONS.slice(1).forEach(function(ver) {
// Replace version 0.5 with 0_5 because the _data folder
// can't have directories with dots in their name
var verUnderscore = ver.replace('.', '_');
docMerge[verUnderscore] = {
src: ver + '/components',
dest: '_data/versions/' + verUnderscore + '/elements'
};
docMerge[verUnderscore].options = docMerge['0_5'].options;
});
grunt.config.set('doc_merge', docMerge);
grunt.task.run('doc_merge');
});
// Task to run vulcanize and build the jekyll site
grunt.registerTask('docs', ['doc-merge-all', 'vulcanize-elements', 'jekyll:build']);
// Task just for running the GAE dev server.
grunt.registerTask('serve', ['appengine:run:frontend']);
// Task to build and copy docs over to publishing repo.
//grunt.registerTask('publish', ['jekyll:prod', 'copy:main']);
};
Jump to Line
Something went wrong with that request. Please try again.