From aa9119e53bc16e973d63bbb9d68864cf4b99cf06 Mon Sep 17 00:00:00 2001 From: includecmath Date: Tue, 21 Jul 2020 17:31:03 +0800 Subject: [PATCH] [flutter_tools] Concise dart2js commands outputKernel & outputJavaScript (#61881) --- .../lib/src/build_system/targets/web.dart | 76 ++++++++----------- .../build_system/targets/web_test.dart | 36 ++++----- 2 files changed, 48 insertions(+), 64 deletions(-) diff --git a/packages/flutter_tools/lib/src/build_system/targets/web.dart b/packages/flutter_tools/lib/src/build_system/targets/web.dart index 5a4e6bde0a..2e955f5c8f 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/web.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/web.dart @@ -153,64 +153,48 @@ class Dart2JSTarget extends Target { @override Future build(Environment environment) async { - final String dart2jsOptimization = environment.defines[kDart2jsOptimization]; - final bool csp = environment.defines[kCspMode] == 'true'; final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]); - final String specPath = globals.fs.path.join( - globals.artifacts.getArtifactPath(Artifact.flutterWebSdk), 'libraries.json'); - // TODO(jonahwilliams): support configuration of this file. - const String packageFile = '.packages'; - final File outputKernel = environment.buildDir.childFile('app.dill'); - final File outputFile = environment.buildDir.childFile('main.dart.js'); - final List dartDefines = decodeDartDefines(environment.defines, kDartDefines); - final List extraFrontEndOptions = decodeDartDefines(environment.defines, kExtraFrontEndOptions); + + final List sharedCommandOptions = [ + globals.artifacts.getArtifactPath(Artifact.engineDartBinary), + '--disable-dart-dev', + globals.artifacts.getArtifactPath(Artifact.dart2jsSnapshot), + '--libraries-spec=${globals.fs.path.join(globals.artifacts.getArtifactPath(Artifact.flutterWebSdk), 'libraries.json')}', + ...?decodeDartDefines(environment.defines, kExtraFrontEndOptions), + if (buildMode == BuildMode.profile) + '-Ddart.vm.profile=true' + else + '-Ddart.vm.product=true', + for (final String dartDefine in decodeDartDefines(environment.defines, kDartDefines)) + '-D$dartDefine', + ]; // Run the dart2js compilation in two stages, so that icon tree shaking can // parse the kernel file for web builds. final ProcessResult kernelResult = await globals.processManager.run([ - globals.artifacts.getArtifactPath(Artifact.engineDartBinary), - '--disable-dart-dev', - globals.artifacts.getArtifactPath(Artifact.dart2jsSnapshot), - '--libraries-spec=$specPath', - ...?extraFrontEndOptions, + ...sharedCommandOptions, '-o', - outputKernel.path, - '--packages=$packageFile', - if (buildMode == BuildMode.profile) - '-Ddart.vm.profile=true' - else - '-Ddart.vm.product=true', - for (final String dartDefine in dartDefines) - '-D$dartDefine', + environment.buildDir.childFile('app.dill').path, + '--packages=.packages', '--cfe-only', - environment.buildDir.childFile('main.dart').path, + environment.buildDir.childFile('main.dart').path, // dartfile ]); if (kernelResult.exitCode != 0) { throw Exception(kernelResult.stdout + kernelResult.stderr); } + + final String dart2jsOptimization = environment.defines[kDart2jsOptimization]; + final File outputJSFile = environment.buildDir.childFile('main.dart.js'); + final bool csp = environment.defines[kCspMode] == 'true'; + final ProcessResult javaScriptResult = await globals.processManager.run([ - globals.artifacts.getArtifactPath(Artifact.engineDartBinary), - '--disable-dart-dev', - globals.artifacts.getArtifactPath(Artifact.dart2jsSnapshot), - '--libraries-spec=$specPath', - ...?extraFrontEndOptions, - if (dart2jsOptimization != null) - '-$dart2jsOptimization' - else - '-O4', - if (buildMode == BuildMode.profile) - '-Ddart.vm.profile=true' - else - '-Ddart.vm.product=true', - for (final String dartDefine in dartDefines) - '-D$dartDefine', - if (buildMode == BuildMode.profile) - '--no-minify', - if (csp) - '--csp', + ...sharedCommandOptions, + if (dart2jsOptimization != null) '-$dart2jsOptimization' else '-O4', + if (buildMode == BuildMode.profile) '--no-minify', + if (csp) '--csp', '-o', - outputFile.path, - environment.buildDir.childFile('app.dill').path, + outputJSFile.path, + environment.buildDir.childFile('app.dill').path, // dartfile ]); if (javaScriptResult.exitCode != 0) { throw Exception(javaScriptResult.stdout + javaScriptResult.stderr); @@ -228,7 +212,7 @@ class Dart2JSTarget extends Target { ); final Depfile depfile = depfileService.parseDart2js( environment.buildDir.childFile('app.dill.deps'), - outputFile, + outputJSFile, ); depfileService.writeToFile( depfile, diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart index f4a9cb04cf..a3e719f487 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart @@ -225,10 +225,10 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, + '-Ddart.vm.profile=true', '-o', environment.buildDir.childFile('app.dill').absolute.path, '--packages=.packages', - '-Ddart.vm.profile=true', '--cfe-only', environment.buildDir.childFile('main.dart').absolute.path, ] @@ -236,8 +236,8 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, - '-O4', '-Ddart.vm.profile=true', + '-O4', '--no-minify', '--csp', '-o', @@ -259,10 +259,10 @@ void main() { command: [ ...kDart2jsLinuxArgs, '--enable-experiment=non-nullable', + '-Ddart.vm.profile=true', '-o', environment.buildDir.childFile('app.dill').absolute.path, '--packages=.packages', - '-Ddart.vm.profile=true', '--cfe-only', environment.buildDir.childFile('main.dart').absolute.path, ] @@ -271,8 +271,8 @@ void main() { command: [ ...kDart2jsLinuxArgs, '--enable-experiment=non-nullable', - '-O4', '-Ddart.vm.profile=true', + '-O4', '--no-minify', '-o', environment.buildDir.childFile('main.dart.js').absolute.path, @@ -290,10 +290,10 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, + '-Ddart.vm.profile=true', '-o', environment.buildDir.childFile('app.dill').absolute.path, '--packages=.packages', - '-Ddart.vm.profile=true', '--cfe-only', environment.buildDir.childFile('main.dart').absolute.path, ] @@ -301,8 +301,8 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, - '-O4', '-Ddart.vm.profile=true', + '-O4', '--no-minify', '-o', environment.buildDir.childFile('main.dart.js').absolute.path, @@ -320,10 +320,10 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, + '-Ddart.vm.product=true', '-o', environment.buildDir.childFile('app.dill').absolute.path, '--packages=.packages', - '-Ddart.vm.product=true', '--cfe-only', environment.buildDir.childFile('main.dart').absolute.path, ] @@ -331,8 +331,8 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, - '-O4', '-Ddart.vm.product=true', + '-O4', '-o', environment.buildDir.childFile('main.dart.js').absolute.path, environment.buildDir.childFile('app.dill').absolute.path, @@ -350,10 +350,10 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, + '-Ddart.vm.product=true', '-o', environment.buildDir.childFile('app.dill').absolute.path, '--packages=.packages', - '-Ddart.vm.product=true', '--cfe-only', environment.buildDir.childFile('main.dart').absolute.path, ] @@ -361,8 +361,8 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, - '-O3', '-Ddart.vm.product=true', + '-O3', '-o', environment.buildDir.childFile('main.dart.js').absolute.path, environment.buildDir.childFile('app.dill').absolute.path, @@ -399,12 +399,12 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, - '-o', - environment.buildDir.childFile('app.dill').absolute.path, - '--packages=.packages', '-Ddart.vm.product=true', '-DFOO=bar', '-DBAZ=qux', + '-o', + environment.buildDir.childFile('app.dill').absolute.path, + '--packages=.packages', '--cfe-only', environment.buildDir.childFile('main.dart').absolute.path, ] @@ -412,10 +412,10 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, - '-O4', '-Ddart.vm.product=true', '-DFOO=bar', '-DBAZ=qux', + '-O4', '-o', environment.buildDir.childFile('main.dart.js').absolute.path, environment.buildDir.childFile('app.dill').absolute.path, @@ -433,12 +433,12 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, - '-o', - environment.buildDir.childFile('app.dill').absolute.path, - '--packages=.packages', '-Ddart.vm.profile=true', '-DFOO=bar', '-DBAZ=qux', + '-o', + environment.buildDir.childFile('app.dill').absolute.path, + '--packages=.packages', '--cfe-only', environment.buildDir.childFile('main.dart').absolute.path, ] @@ -446,10 +446,10 @@ void main() { processManager.addCommand(FakeCommand( command: [ ...kDart2jsLinuxArgs, - '-O4', '-Ddart.vm.profile=true', '-DFOO=bar', '-DBAZ=qux', + '-O4', '--no-minify', '-o', environment.buildDir.childFile('main.dart.js').absolute.path,