Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit 2c4bf81

Browse files
author
James Judd
committed
Remove closure compilation from the CLI
This removes the need for google-closure-compiler to be a dependency. Now it can be a dev dependency and the CLI should just work when downloaded from npm.
1 parent 9d641fb commit 2c4bf81

File tree

1 file changed

+3
-46
lines changed

1 file changed

+3
-46
lines changed

src/main.ts

Lines changed: 3 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#!/usr/bin/env node
22

3-
import * as closure from 'google-closure-compiler';
43
import * as fs from 'fs';
54
import * as minimist from 'minimist';
65
import * as path from 'path';
@@ -23,21 +22,17 @@ interface Settings {
2322

2423
/** If provided, path to save externs to. */
2524
externsPath?: string;
26-
27-
/** Path to write the final JS bundle to. */
28-
outputPath: string;
2925
}
3026

3127
function usage() {
3228
console.error(`usage: tsickle [tsickle args] -- [tsc args]
3329
3430
example:
35-
tsickle --output bundle.js -- -p src --noImplicitAny
31+
tsickle --externs=/foo/externs.js -- -p src --noImplicitAny
3632
3733
tsickle flags are:
3834
--saveTemporaries save intermediate .js files to disk
3935
--externs=PATH save generated Closure externs.js to PATH
40-
--output=PATH write final Closure bundle to PATH
4136
`);
4237
}
4338

@@ -48,7 +43,6 @@ tsickle flags are:
4843
function loadSettingsFromArgs(args: string[]): {settings: Settings, tscArgs: string[]} {
4944
let settings: Settings = {
5045
saveTemporaries: null,
51-
outputPath: null,
5246
};
5347
let parsedArgs = minimist(args);
5448
for (let flag of Object.keys(parsedArgs)) {
@@ -64,9 +58,6 @@ function loadSettingsFromArgs(args: string[]): {settings: Settings, tscArgs: str
6458
case 'externs':
6559
settings.externsPath = parsedArgs[flag];
6660
break;
67-
case 'output':
68-
settings.outputPath = parsedArgs[flag];
69-
break;
7061
case '_':
7162
// This is part of the minimist API, and holds args after the '--'.
7263
break;
@@ -76,8 +67,8 @@ function loadSettingsFromArgs(args: string[]): {settings: Settings, tscArgs: str
7667
process.exit(1);
7768
}
7869
}
79-
if (!settings.outputPath && !settings.externsPath) {
80-
console.error('must specify --output or --externs path');
70+
if (!settings.externsPath) {
71+
console.error('must specify --externs path');
8172
usage();
8273
process.exit(1);
8374
}
@@ -220,32 +211,6 @@ function toClosureJS(options: ts.CompilerOptions, fileNames: string[]):
220211
return {jsFiles};
221212
}
222213

223-
function closureCompile(
224-
jsFiles: {[fileName: string]: string}, outFile: string,
225-
callback: (exitCode: number, output: string) => void): void {
226-
const closureOptions: closure.CompileOptions = {
227-
// Read input files from stdin as JSON.
228-
'json_streams': 'IN',
229-
// Write output file to disk.
230-
'js_output_file': outFile,
231-
'warning_level': 'VERBOSE',
232-
'language_in': 'ECMASCRIPT6_STRICT',
233-
'compilation_level': 'ADVANCED_OPTIMIZATIONS',
234-
};
235-
236-
let compiler = new closure.compiler(closureOptions);
237-
let process = compiler.run((exitCode, stdout, stderr) => { callback(exitCode, stderr); });
238-
239-
let jsonInput: closure.JSONStreamFile[] = [];
240-
for (let fileName of Object.keys(jsFiles)) {
241-
jsonInput.push({
242-
path: fileName,
243-
src: jsFiles[fileName],
244-
});
245-
}
246-
process.stdin.end(JSON.stringify(jsonInput));
247-
}
248-
249214
function main(args: string[]) {
250215
let {settings, tscArgs} = loadSettingsFromArgs(args);
251216
let {options, fileNames, errors} = loadTscConfig(tscArgs);
@@ -275,14 +240,6 @@ function main(args: string[]) {
275240
if (settings.externsPath) {
276241
fs.writeFileSync(settings.externsPath, jsFiles[internalExternsFileName]);
277242
}
278-
279-
if (settings.outputPath) {
280-
// Run Closure compiiler to convert JS files to output bundle.
281-
closureCompile(jsFiles, settings.outputPath, (exitCode, output) => {
282-
if (output) console.error(output);
283-
process.exit(exitCode);
284-
});
285-
}
286243
}
287244

288245
// CLI entry point

0 commit comments

Comments
 (0)