in frontend_server_client/lib/src/frontend_server_client.dart [43:99]
static Future<FrontendServerClient> start(
String entrypoint,
String outputDillPath,
String platformKernel, {
String dartdevcModuleFormat = 'amd',
bool debug = false,
List<String>? enabledExperiments,
bool enableHttpUris = false,
List<String> fileSystemRoots = const [], // For `fileSystemScheme` uris,
String fileSystemScheme =
'org-dartlang-root', // Custom scheme for virtual `fileSystemRoots`.
String? frontendServerPath, // Defaults to the snapshot in the sdk.
String packagesJson = '.dart_tool/package_config.json',
String? sdkRoot, // Defaults to the current SDK root.
String target = 'vm', // The kernel target type.
bool verbose = false, // Verbose logs, including server/client messages
bool printIncrementalDependencies = true,
}) async {
var feServer = await Process.start(Platform.resolvedExecutable, [
if (debug) '--observe',
frontendServerPath ?? _feServerPath,
'--sdk-root',
sdkRoot ?? sdkDir,
'--platform=$platformKernel',
'--target=$target',
if (target == 'dartdevc')
'--dartdevc-module-format=$dartdevcModuleFormat',
for (var root in fileSystemRoots) '--filesystem-root=$root',
'--filesystem-scheme',
fileSystemScheme,
'--output-dill',
outputDillPath,
'--packages=$packagesJson',
if (enableHttpUris) '--enable-http-uris',
'--incremental',
if (verbose) '--verbose',
if (!printIncrementalDependencies) '--no-print-incremental-dependencies',
if (enabledExperiments != null)
for (var experiment in enabledExperiments)
'--enable-experiment=$experiment',
]);
var feServerStdoutLines = StreamQueue(feServer.stdout
.transform(utf8.decoder)
.transform(const LineSplitter()));
// The frontend_server doesn't appear to recursively create files, so we
// need to make sure the output dir already exists.
var outputDir = Directory(p.dirname(outputDillPath));
if (!await outputDir.exists()) await outputDir.create();
return FrontendServerClient._(
entrypoint,
feServer,
feServerStdoutLines,
verbose: verbose,
);
}