/** * @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]));