Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 43 additions & 27 deletions packages/build/src/optimize-streams.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,33 +105,33 @@ export class GenericOptimizeTransform extends Transform {
}
}

function getCompileTarget(
file: vinyl, options: JsOptimizeOptions): JsCompileTarget|boolean {
let target: JsCompileTarget|boolean|undefined;
const compileOptions = options.compile;
if (notExcluded(options.compile)(file)) {
if (typeof compileOptions === 'object') {
target =
(compileOptions.target === undefined) ? true : compileOptions.target;
} else {
target = compileOptions;
}
if (target === undefined) {
target = false;
}
} else {
target = false;
}
return target;
}

/**
* Transform JavaScript.
*/
export class JsTransform extends GenericOptimizeTransform {
constructor(options: OptimizeOptions) {
const jsOptions: JsOptimizeOptions = options.js || {};

function getCompileTarget(file: vinyl): JsCompileTarget|boolean {
let target: JsCompileTarget|boolean|undefined;
const compileOptions = jsOptions.compile;
if (notExcluded(jsOptions.compile)(file)) {
if (typeof compileOptions === 'object') {
target = (compileOptions.target === undefined) ?
true :
compileOptions.target;
} else {
target = compileOptions;
}
if (target === undefined) {
target = false;
}
} else {
target = false;
}
return target;
}

const shouldMinifyFile =
jsOptions.minify ? notExcluded(jsOptions.minify) : () => false;

Expand All @@ -153,7 +153,7 @@ export class JsTransform extends GenericOptimizeTransform {
}

return jsTransform(content, {
compile: getCompileTarget(file),
compile: getCompileTarget(file, jsOptions),
externalHelpers: true,
minify: shouldMinifyFile(file),
moduleResolution: jsOptions.moduleResolution,
Expand All @@ -173,7 +173,7 @@ export class JsTransform extends GenericOptimizeTransform {
*/
export class HtmlTransform extends GenericOptimizeTransform {
constructor(options: OptimizeOptions) {
const anyJsCompiledToEs5 = options.js && !!options.js.compile;
const jsOptions: JsOptimizeOptions = options.js || {};

const shouldMinifyFile = options.html && options.html.minify ?
notExcluded(options.html.minify) :
Expand All @@ -188,11 +188,27 @@ export class HtmlTransform extends GenericOptimizeTransform {
let injectBabelHelpers: 'none'|'full'|'amd' = 'none';
let injectRegeneratorRuntime = false;
if (isEntryPoint) {
if (anyJsCompiledToEs5) {
injectBabelHelpers = 'full';
injectRegeneratorRuntime = true;
} else if (transformModulesToAmd) {
injectBabelHelpers = 'amd';
const compileTarget = getCompileTarget(file, jsOptions);
switch (compileTarget) {
case 'es5':
case true:
injectBabelHelpers = 'full';
injectRegeneratorRuntime = true;
break;
case 'es2015':
case 'es2016':
case 'es2017':
injectBabelHelpers = 'full';
injectRegeneratorRuntime = false;
break;
case 'es2018':
case false:
injectBabelHelpers = transformModulesToAmd ? 'amd' : 'none';
injectRegeneratorRuntime = false;
break;
default:
const never: never = compileTarget;
throw new Error(`Unexpected compile target ${never}`);
}
}

Expand Down