Fixes issues with uglify.js usage
Summary: Adds flow type defs for uglify, and fixes the two issues found Reviewed By: jeanlauliac Differential Revision: D5029190 fbshipit-source-id: eb5947b051844938da241e002b727edc1384e3a6
This commit is contained in:
parent
f088bca580
commit
f1a220b3cf
|
@ -0,0 +1,71 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2013-present, Facebook, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the BSD-style license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
type _SourceMap = {
|
||||||
|
file?: string,
|
||||||
|
mappings: string,
|
||||||
|
names: Array<string>,
|
||||||
|
sourceRoot?: string,
|
||||||
|
sources: Array<string>,
|
||||||
|
sourcesContent?: Array<?string>,
|
||||||
|
version: number,
|
||||||
|
};
|
||||||
|
|
||||||
|
type _Result<MapT> = {
|
||||||
|
code: string,
|
||||||
|
map: MapT,
|
||||||
|
};
|
||||||
|
|
||||||
|
type _Options = {
|
||||||
|
compress?: false | {||},
|
||||||
|
fromString?: boolean,
|
||||||
|
inSourceMap?: string | ?_SourceMap,
|
||||||
|
mangle?: boolean | {|
|
||||||
|
except?: Array<string>,
|
||||||
|
toplevel?: boolean,
|
||||||
|
eval?: boolean,
|
||||||
|
keep_fnames?: boolean,
|
||||||
|
|},
|
||||||
|
mangleProperties?: boolean | {|
|
||||||
|
regex?: RegExp,
|
||||||
|
ignore_quoted?: boolean,
|
||||||
|
debug?: false | string,
|
||||||
|
|},
|
||||||
|
outFileName?: string,
|
||||||
|
output?: {|
|
||||||
|
ascii_only?: boolean,
|
||||||
|
screw_ie8?: boolean,
|
||||||
|
|},
|
||||||
|
parse?: {|
|
||||||
|
strict?: boolean,
|
||||||
|
bare_returns?: boolean,
|
||||||
|
filename?: string,
|
||||||
|
|},
|
||||||
|
sourceMapUrl?: string,
|
||||||
|
sourceRoot?: string,
|
||||||
|
warnings?: boolean,
|
||||||
|
};
|
||||||
|
|
||||||
|
type _Input =
|
||||||
|
| string // code or file name
|
||||||
|
| Array<string> // array of file names
|
||||||
|
| {[filename: string]: string}; // file names and corresponding code
|
||||||
|
|
||||||
|
declare module 'uglify-js' {
|
||||||
|
declare function minify(
|
||||||
|
fileOrFilesOrCode: _Input,
|
||||||
|
options?: _Options & {outSourceMap?: ?false | ''},
|
||||||
|
): _Result<void>;
|
||||||
|
declare function minify(
|
||||||
|
fileOrFilesOrCode: _Input,
|
||||||
|
options?: _Options & {outSourceMap: true | string},
|
||||||
|
): _Result<string>;
|
||||||
|
}
|
|
@ -15,17 +15,19 @@ const uglify = require('uglify-js');
|
||||||
|
|
||||||
const {UGLIFY_JS_OUTPUT_OPTIONS} = require('./JsMinification');
|
const {UGLIFY_JS_OUTPUT_OPTIONS} = require('./JsMinification');
|
||||||
|
|
||||||
function minify(filename: string, code: string, sourceMap: ?string) {
|
import type {MappingsMap} from '../../lib/SourceMap';
|
||||||
const minifyResult = uglify.minify(code, {
|
|
||||||
|
function minify(filename: string, inputCode: string, sourceMap: ?MappingsMap) {
|
||||||
|
let {code, map} = uglify.minify(inputCode, {
|
||||||
fromString: true,
|
fromString: true,
|
||||||
inSourceMap: sourceMap,
|
inSourceMap: sourceMap,
|
||||||
outSourceMap: true,
|
outSourceMap: true,
|
||||||
output: UGLIFY_JS_OUTPUT_OPTIONS,
|
output: UGLIFY_JS_OUTPUT_OPTIONS,
|
||||||
});
|
});
|
||||||
|
|
||||||
minifyResult.map = JSON.parse(minifyResult.map);
|
map = JSON.parse(map);
|
||||||
minifyResult.map.sources = [filename];
|
map.sources = [filename];
|
||||||
return minifyResult;
|
return {code, map};
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = minify;
|
module.exports = minify;
|
||||||
|
|
|
@ -166,7 +166,7 @@ exports.transformAndExtractDependencies = (
|
||||||
exports.minify = (
|
exports.minify = (
|
||||||
filename: string,
|
filename: string,
|
||||||
code: string,
|
code: string,
|
||||||
sourceMap: string,
|
sourceMap: MappingsMap,
|
||||||
callback: (error: ?Error, result: mixed) => mixed,
|
callback: (error: ?Error, result: mixed) => mixed,
|
||||||
) => {
|
) => {
|
||||||
var result;
|
var result;
|
||||||
|
|
|
@ -110,7 +110,7 @@ export type TransformResult = {|
|
||||||
code: string,
|
code: string,
|
||||||
dependencies: Array<string>,
|
dependencies: Array<string>,
|
||||||
dependencyMapName?: string,
|
dependencyMapName?: string,
|
||||||
map: ?Object,
|
map: ?MappingsMap,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
export type TransformResults = {[string]: TransformResult};
|
export type TransformResults = {[string]: TransformResult};
|
||||||
|
|
|
@ -19,6 +19,7 @@ const minify = require('../../JSTransformer/worker/minify');
|
||||||
const sourceMap = require('source-map');
|
const sourceMap = require('source-map');
|
||||||
|
|
||||||
import type {TransformedSourceFile, TransformResult} from '../types.flow';
|
import type {TransformedSourceFile, TransformResult} from '../types.flow';
|
||||||
|
import type {MappingsMap, SourceMap} from '../../lib/SourceMap';
|
||||||
|
|
||||||
export type OptimizationOptions = {|
|
export type OptimizationOptions = {|
|
||||||
dev: boolean,
|
dev: boolean,
|
||||||
|
@ -71,7 +72,7 @@ function optimize(transformed, file, originalCode, options): TransformResult {
|
||||||
gen.code,
|
gen.code,
|
||||||
inputMap && mergeSourceMaps(file, inputMap, gen.map),
|
inputMap && mergeSourceMaps(file, inputMap, gen.map),
|
||||||
);
|
);
|
||||||
return {code: min.code, map: inputMap && min.map, dependencies};
|
return {code: min.code, map: min.map, dependencies};
|
||||||
}
|
}
|
||||||
|
|
||||||
function optimizeCode(code, map, filename, inliningOptions) {
|
function optimizeCode(code, map, filename, inliningOptions) {
|
||||||
|
@ -86,7 +87,11 @@ function optimizeCode(code, map, filename, inliningOptions) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function mergeSourceMaps(file, originalMap, secondMap) {
|
function mergeSourceMaps(
|
||||||
|
file: string,
|
||||||
|
originalMap: SourceMap,
|
||||||
|
secondMap: SourceMap,
|
||||||
|
): MappingsMap {
|
||||||
const merged = new sourceMap.SourceMapGenerator();
|
const merged = new sourceMap.SourceMapGenerator();
|
||||||
const inputMap = new sourceMap.SourceMapConsumer(originalMap);
|
const inputMap = new sourceMap.SourceMapConsumer(originalMap);
|
||||||
new sourceMap.SourceMapConsumer(secondMap)
|
new sourceMap.SourceMapConsumer(secondMap)
|
||||||
|
|
Loading…
Reference in New Issue