108 lines
3.2 KiB
JavaScript
108 lines
3.2 KiB
JavaScript
/**
|
|
* @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]));
|