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');
|
||||
|
||||
function minify(filename: string, code: string, sourceMap: ?string) {
|
||||
const minifyResult = uglify.minify(code, {
|
||||
import type {MappingsMap} from '../../lib/SourceMap';
|
||||
|
||||
function minify(filename: string, inputCode: string, sourceMap: ?MappingsMap) {
|
||||
let {code, map} = uglify.minify(inputCode, {
|
||||
fromString: true,
|
||||
inSourceMap: sourceMap,
|
||||
outSourceMap: true,
|
||||
output: UGLIFY_JS_OUTPUT_OPTIONS,
|
||||
});
|
||||
|
||||
minifyResult.map = JSON.parse(minifyResult.map);
|
||||
minifyResult.map.sources = [filename];
|
||||
return minifyResult;
|
||||
map = JSON.parse(map);
|
||||
map.sources = [filename];
|
||||
return {code, map};
|
||||
}
|
||||
|
||||
module.exports = minify;
|
||||
|
|
|
@ -166,7 +166,7 @@ exports.transformAndExtractDependencies = (
|
|||
exports.minify = (
|
||||
filename: string,
|
||||
code: string,
|
||||
sourceMap: string,
|
||||
sourceMap: MappingsMap,
|
||||
callback: (error: ?Error, result: mixed) => mixed,
|
||||
) => {
|
||||
var result;
|
||||
|
|
|
@ -110,7 +110,7 @@ export type TransformResult = {|
|
|||
code: string,
|
||||
dependencies: Array<string>,
|
||||
dependencyMapName?: string,
|
||||
map: ?Object,
|
||||
map: ?MappingsMap,
|
||||
|};
|
||||
|
||||
export type TransformResults = {[string]: TransformResult};
|
||||
|
|
|
@ -19,6 +19,7 @@ const minify = require('../../JSTransformer/worker/minify');
|
|||
const sourceMap = require('source-map');
|
||||
|
||||
import type {TransformedSourceFile, TransformResult} from '../types.flow';
|
||||
import type {MappingsMap, SourceMap} from '../../lib/SourceMap';
|
||||
|
||||
export type OptimizationOptions = {|
|
||||
dev: boolean,
|
||||
|
@ -71,7 +72,7 @@ function optimize(transformed, file, originalCode, options): TransformResult {
|
|||
gen.code,
|
||||
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) {
|
||||
|
@ -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 inputMap = new sourceMap.SourceMapConsumer(originalMap);
|
||||
new sourceMap.SourceMapConsumer(secondMap)
|
||||
|
|
Loading…
Reference in New Issue