blob: 1451742398f06a7dccbbf509a662cd57b060fb3e [file] [log] [blame]
/**
* @license
* Copyright (c) 2014 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
*/
'use strict';
/* eslint-env node */
/* eslint-disable no-console */
const gulp = require('gulp');
const sourcemaps = require('gulp-sourcemaps');
const del = require('del');
const rename = require('gulp-rename');
const rollup = require('rollup-stream');
const buffer = require('vinyl-buffer');
const source = require('vinyl-source-stream');
const closure = require('google-closure-compiler').gulp();
const size = require('gulp-size');
const modules = [
'css-parse',
'custom-style-element',
'make-element',
'svg-in-shadow',
'style-util',
'style-transformer',
'style-settings'
];
const moduleTasks = modules.map((m) => {
gulp.task(`test-module-${m}`, () => {
return rollup({
entry: `tests/module/${m}.js`,
format: 'iife',
moduleName: m.replace(/-/g, '_')
})
.pipe(source(`${m}.js`, 'tests/module'))
.pipe(gulp.dest('./tests/module/generated'))
});
return `test-module-${m}`;
});
gulp.task('clean-test-modules', () => del(['tests/module/generated']));
gulp.task('test-modules', gulp.series(['clean-test-modules', ...moduleTasks]));
function closurify(entry) {
gulp.task(`closure-${entry}`, () => {
return gulp.src(['src/*.js', 'entrypoints/*.js'], {base: './'})
.pipe(sourcemaps.init())
.pipe(closure({
compilation_level: 'ADVANCED',
language_in: 'ES6_STRICT',
language_out: 'ES5_STRICT',
isolation_mode: 'IIFE',
assume_function_wrapper: true,
js_output_file: `${entry}.min.js`,
entry_point: `./entrypoints/${entry}.js`,
dependency_mode: 'STRICT',
warning_level: 'VERBOSE',
rewrite_polyfills: false,
externs: 'externs/shadycss-externs.js'
}))
.pipe(size({showFiles: true, showTotal: false, gzip: true}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('.'))
});
return `closure-${entry}`;
}
function debugify(entry) {
gulp.task(`debug-${entry}`, () => {
return rollup({
entry: `entrypoints/${entry}.js`,
format: 'iife',
moduleName: `${entry}`.replace(/-/g, '_'),
})
.pipe(source(`${entry}.js`, 'entrypoints'))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(rename(`${entry}.min.js`))
.pipe(size({showFiles: true, showTotal: false, gzip: true}))
.pipe(gulp.dest('./'))
});
return `debug-${entry}`;
}
const entrypoints = [
'scoping-shim',
'apply-shim',
'custom-style-interface'
]
let closureTasks = entrypoints.map((e) => closurify(e));
let debugTasks = entrypoints.map((e) => debugify(e));
gulp.task('closure', gulp.series([...closureTasks]));
gulp.task('default', gulp.series('closure', 'test-modules'));
gulp.task('debug', gulp.series([...debugTasks]));