metro 0.65.2 → 0.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +27 -27
- package/src/Assets.js +9 -9
- package/src/Assets.js.flow +5 -7
- package/src/Bundler/util.js +17 -15
- package/src/Bundler/util.js.flow +12 -10
- package/src/Bundler.js +22 -9
- package/src/Bundler.js.flow +20 -7
- package/src/DeltaBundler/DeltaCalculator.js +17 -15
- package/src/DeltaBundler/DeltaCalculator.js.flow +9 -7
- package/src/DeltaBundler/Serializers/baseBytecodeBundle.js +13 -13
- package/src/DeltaBundler/Serializers/baseBytecodeBundle.js.flow +6 -7
- package/src/DeltaBundler/Serializers/baseJSBundle.js +4 -4
- package/src/DeltaBundler/Serializers/baseJSBundle.js.flow +4 -4
- package/src/DeltaBundler/Serializers/getAllFiles.js +1 -1
- package/src/DeltaBundler/Serializers/getAllFiles.js.flow +3 -3
- package/src/DeltaBundler/Serializers/getAssets.js +3 -3
- package/src/DeltaBundler/Serializers/getAssets.js.flow +4 -5
- package/src/DeltaBundler/Serializers/getExplodedSourceMap.js +4 -4
- package/src/DeltaBundler/Serializers/getExplodedSourceMap.js.flow +4 -4
- package/src/DeltaBundler/Serializers/getRamBundleInfo.js +20 -20
- package/src/DeltaBundler/Serializers/getRamBundleInfo.js.flow +9 -10
- package/src/DeltaBundler/Serializers/helpers/bytecode.js +11 -11
- package/src/DeltaBundler/Serializers/helpers/bytecode.js.flow +5 -6
- package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.js +1 -1
- package/src/DeltaBundler/Serializers/helpers/getInlineSourceMappingURL.js.flow +1 -1
- package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js +2 -2
- package/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js.flow +4 -4
- package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.js +1 -1
- package/src/DeltaBundler/Serializers/helpers/getTransitiveDependencies.js.flow +1 -1
- package/src/DeltaBundler/Serializers/helpers/js.js +18 -8
- package/src/DeltaBundler/Serializers/helpers/js.js.flow +19 -10
- package/src/DeltaBundler/Serializers/helpers/processBytecodeModules.js +4 -4
- package/src/DeltaBundler/Serializers/helpers/processBytecodeModules.js.flow +3 -3
- package/src/DeltaBundler/Serializers/helpers/processModules.js +4 -4
- package/src/DeltaBundler/Serializers/helpers/processModules.js.flow +3 -3
- package/src/DeltaBundler/Serializers/hmrJSBundle.js +9 -9
- package/src/DeltaBundler/Serializers/hmrJSBundle.js.flow +9 -8
- package/src/DeltaBundler/Serializers/sourceMapGenerator.js +6 -6
- package/src/DeltaBundler/Serializers/sourceMapGenerator.js.flow +3 -4
- package/src/DeltaBundler/Serializers/sourceMapObject.js +5 -5
- package/src/DeltaBundler/Serializers/sourceMapObject.js.flow +4 -4
- package/src/DeltaBundler/Serializers/sourceMapString.js +2 -2
- package/src/DeltaBundler/Serializers/sourceMapString.js.flow +3 -3
- package/src/DeltaBundler/Transformer.js +16 -14
- package/src/DeltaBundler/Transformer.js.flow +15 -15
- package/src/DeltaBundler/Worker.js +8 -11
- package/src/DeltaBundler/Worker.js.flow +8 -11
- package/src/DeltaBundler/WorkerFarm.js +15 -18
- package/src/DeltaBundler/WorkerFarm.js.flow +9 -11
- package/src/DeltaBundler/__fixtures__/hasteImpl.js +2 -2
- package/src/DeltaBundler/computeDelta.js +2 -2
- package/src/DeltaBundler/computeDelta.js.flow +2 -2
- package/src/DeltaBundler/getTransformCacheKey.js +4 -4
- package/src/DeltaBundler/getTransformCacheKey.js.flow +5 -6
- package/src/DeltaBundler/mergeDeltas.js +2 -2
- package/src/DeltaBundler/mergeDeltas.js.flow +1 -1
- package/src/DeltaBundler/traverseDependencies.js +22 -22
- package/src/DeltaBundler/traverseDependencies.js.flow +3 -3
- package/src/DeltaBundler/types.flow.js +1 -1
- package/src/DeltaBundler/types.flow.js.flow +15 -1
- package/src/DeltaBundler.js +5 -5
- package/src/DeltaBundler.js.flow +4 -4
- package/src/HmrServer.js +73 -55
- package/src/HmrServer.js.flow +42 -37
- package/src/IncrementalBundler/GraphNotFoundError.js +1 -1
- package/src/IncrementalBundler/GraphNotFoundError.js.flow +1 -1
- package/src/IncrementalBundler/ResourceNotFoundError.js +1 -1
- package/src/IncrementalBundler/ResourceNotFoundError.js.flow +1 -1
- package/src/IncrementalBundler/RevisionNotFoundError.js +1 -1
- package/src/IncrementalBundler/RevisionNotFoundError.js.flow +1 -1
- package/src/IncrementalBundler.js +46 -32
- package/src/IncrementalBundler.js.flow +32 -24
- package/src/ModuleGraph/module.js +3 -3
- package/src/ModuleGraph/module.js.flow +1 -1
- package/src/ModuleGraph/node-haste/HasteFS.js +5 -3
- package/src/ModuleGraph/node-haste/HasteFS.js.flow +3 -1
- package/src/ModuleGraph/node-haste/Module.js +1 -1
- package/src/ModuleGraph/node-haste/Module.js.flow +1 -1
- package/src/ModuleGraph/node-haste/ModuleCache.js +1 -1
- package/src/ModuleGraph/node-haste/ModuleCache.js.flow +3 -3
- package/src/ModuleGraph/node-haste/Package.js +3 -3
- package/src/ModuleGraph/node-haste/Package.js.flow +3 -3
- package/src/ModuleGraph/node-haste/node-haste.flow.js +1 -1
- package/src/ModuleGraph/node-haste/node-haste.flow.js.flow +1 -1
- package/src/ModuleGraph/node-haste/node-haste.js +41 -31
- package/src/ModuleGraph/node-haste/node-haste.js.flow +28 -22
- package/src/ModuleGraph/output/indexed-ram-bundle.js +17 -17
- package/src/ModuleGraph/output/indexed-ram-bundle.js.flow +41 -9
- package/src/ModuleGraph/output/multiple-files-ram-bundle.js +18 -18
- package/src/ModuleGraph/output/multiple-files-ram-bundle.js.flow +21 -9
- package/src/ModuleGraph/output/plain-bundle.js +6 -6
- package/src/ModuleGraph/output/plain-bundle.js.flow +7 -7
- package/src/ModuleGraph/output/reverse-dependency-map-references.js +3 -3
- package/src/ModuleGraph/output/reverse-dependency-map-references.js.flow +4 -8
- package/src/ModuleGraph/output/util.js +61 -40
- package/src/ModuleGraph/output/util.js.flow +51 -28
- package/src/ModuleGraph/silent-console.js +2 -2
- package/src/ModuleGraph/silent-console.js.flow +1 -1
- package/src/ModuleGraph/test-helpers.js +7 -7
- package/src/ModuleGraph/types.flow.js +1 -1
- package/src/ModuleGraph/types.flow.js.flow +47 -31
- package/src/ModuleGraph/worker/JsFileWrapping.js +16 -16
- package/src/ModuleGraph/worker/JsFileWrapping.js.flow +3 -2
- package/src/ModuleGraph/worker/Platforms.js +2 -2
- package/src/ModuleGraph/worker/Platforms.js.flow +1 -1
- package/src/ModuleGraph/worker/collectDependencies.js +24 -25
- package/src/ModuleGraph/worker/collectDependencies.js.flow +16 -18
- package/src/ModuleGraph/worker/generate.js +2 -2
- package/src/ModuleGraph/worker/generate.js.flow +3 -3
- package/src/ModuleGraph/worker/generateImportNames.js +5 -5
- package/src/ModuleGraph/worker/generateImportNames.js.flow +3 -5
- package/src/ModuleGraph/worker/mergeSourceMaps.js +8 -7
- package/src/ModuleGraph/worker/mergeSourceMaps.js.flow +3 -3
- package/src/Server/MultipartResponse.js +4 -8
- package/src/Server/symbolicate.js +8 -8
- package/src/Server/symbolicate.js.flow +17 -5
- package/src/Server.js +204 -150
- package/src/Server.js.flow +131 -87
- package/src/cli-utils.js +4 -4
- package/src/cli-utils.js.flow +15 -13
- package/src/cli.js +4 -4
- package/src/cli.js.flow +2 -4
- package/src/commands/build.js +23 -24
- package/src/commands/build.js.flow +6 -9
- package/src/commands/dependencies.js +25 -19
- package/src/commands/serve.js +19 -19
- package/src/commands/serve.js.flow +7 -9
- package/src/index.js +117 -50
- package/src/index.js.flow +108 -40
- package/src/integration_tests/basic_bundle/AssetRegistry.js +2 -2
- package/src/integration_tests/basic_bundle/AssetRegistry.js.flow +1 -1
- package/src/integration_tests/basic_bundle/Bar.js +2 -2
- package/src/integration_tests/basic_bundle/Bar.js.flow +1 -1
- package/src/integration_tests/basic_bundle/ErrorBundle.js +2 -2
- package/src/integration_tests/basic_bundle/ErrorBundle.js.flow +1 -1
- package/src/integration_tests/basic_bundle/Foo.js +2 -2
- package/src/integration_tests/basic_bundle/Foo.js.flow +1 -1
- package/src/integration_tests/basic_bundle/TestBundle.js +2 -2
- package/src/integration_tests/basic_bundle/TestBundle.js.flow +1 -1
- package/src/integration_tests/basic_bundle/TestPolyfill.js +1 -1
- package/src/integration_tests/basic_bundle/TestPolyfill.js.flow +1 -1
- package/src/integration_tests/basic_bundle/TypeScript.ts +1 -1
- package/src/integration_tests/basic_bundle/import-export/export-1.js +2 -2
- package/src/integration_tests/basic_bundle/import-export/export-1.js.flow +1 -1
- package/src/integration_tests/basic_bundle/import-export/export-2.js +2 -2
- package/src/integration_tests/basic_bundle/import-export/export-2.js.flow +1 -1
- package/src/integration_tests/basic_bundle/import-export/export-3.js +2 -2
- package/src/integration_tests/basic_bundle/import-export/export-3.js.flow +1 -1
- package/src/integration_tests/basic_bundle/import-export/export-4.js +2 -2
- package/src/integration_tests/basic_bundle/import-export/export-4.js.flow +1 -1
- package/src/integration_tests/basic_bundle/import-export/export-5.js +2 -2
- package/src/integration_tests/basic_bundle/import-export/export-5.js.flow +1 -1
- package/src/integration_tests/basic_bundle/import-export/export-6.js +2 -2
- package/src/integration_tests/basic_bundle/import-export/export-6.js.flow +1 -1
- package/src/integration_tests/basic_bundle/import-export/export-null.js +2 -2
- package/src/integration_tests/basic_bundle/import-export/export-null.js.flow +1 -1
- package/src/integration_tests/basic_bundle/import-export/export-primitive-default.js +2 -2
- package/src/integration_tests/basic_bundle/import-export/export-primitive-default.js.flow +1 -1
- package/src/integration_tests/basic_bundle/import-export/index.js +17 -17
- package/src/integration_tests/basic_bundle/import-export/index.js.flow +1 -1
- package/src/integration_tests/basic_bundle/polyfill.js +1 -1
- package/src/integration_tests/execBundle.js +2 -2
- package/src/integration_tests/execBundle.js.flow +1 -1
- package/src/integration_tests/metro.config.js +8 -8
- package/src/lib/BatchProcessor.js +10 -6
- package/src/lib/BatchProcessor.js.flow +6 -1
- package/src/lib/JsonReporter.js +3 -2
- package/src/lib/JsonReporter.js.flow +2 -1
- package/src/lib/RamBundleParser.js +1 -1
- package/src/lib/RamBundleParser.js.flow +1 -1
- package/src/lib/TerminalReporter.js +15 -15
- package/src/lib/TerminalReporter.js.flow +15 -16
- package/src/lib/bundleToBytecode.js +6 -7
- package/src/lib/bundleToBytecode.js.flow +8 -7
- package/src/lib/bundleToString.js +3 -3
- package/src/lib/bundleToString.js.flow +5 -4
- package/src/lib/countLines.js +3 -7
- package/src/lib/countLines.js.flow +4 -7
- package/src/lib/createModuleIdFactory.js +2 -2
- package/src/lib/createModuleIdFactory.js.flow +1 -1
- package/src/lib/{attachWebsocketServer.js → createWebsocketServer.js} +18 -17
- package/src/lib/{attachWebsocketServer.js.flow → createWebsocketServer.js.flow} +13 -23
- package/src/lib/debounceAsyncQueue.js +2 -2
- package/src/lib/debounceAsyncQueue.js.flow +1 -1
- package/src/lib/formatBundlingError.js +21 -21
- package/src/lib/formatBundlingError.js.flow +18 -20
- package/src/lib/getAppendScripts.js +26 -27
- package/src/lib/getAppendScripts.js.flow +7 -8
- package/src/lib/getGraphId.js +3 -3
- package/src/lib/getGraphId.js.flow +3 -3
- package/src/lib/getMaxWorkers.js +2 -2
- package/src/lib/getMaxWorkers.js.flow +1 -1
- package/src/lib/getPreludeCode.js +2 -2
- package/src/lib/getPreludeCode.js.flow +1 -1
- package/src/lib/getPrependedScripts.js +16 -15
- package/src/lib/getPrependedScripts.js.flow +8 -8
- package/src/lib/logToConsole.js +12 -5
- package/src/lib/logToConsole.js.flow +19 -6
- package/src/lib/parseCustomTransformOptions.js +2 -2
- package/src/lib/parseCustomTransformOptions.js.flow +3 -3
- package/src/lib/parseOptionsFromUrl.js +7 -7
- package/src/lib/parseOptionsFromUrl.js.flow +29 -9
- package/src/lib/relativizeSourceMap.js +1 -1
- package/src/lib/relativizeSourceMap.js.flow +3 -3
- package/src/lib/reporting.js +5 -5
- package/src/lib/reporting.js.flow +18 -4
- package/src/lib/splitBundleOptions.js +5 -5
- package/src/lib/splitBundleOptions.js.flow +1 -1
- package/src/lib/transformHelpers.js +11 -10
- package/src/lib/transformHelpers.js.flow +6 -13
- package/src/node-haste/DependencyGraph/ModuleResolution.js +51 -30
- package/src/node-haste/DependencyGraph/ModuleResolution.js.flow +49 -48
- package/src/node-haste/DependencyGraph/createHasteMap.js +99 -0
- package/src/node-haste/DependencyGraph/createHasteMap.js.flow +88 -0
- package/src/node-haste/DependencyGraph/{assets/empty-module.js → types.js} +2 -2
- package/src/node-haste/DependencyGraph/types.js.flow +88 -0
- package/src/node-haste/DependencyGraph.js +51 -118
- package/src/node-haste/DependencyGraph.js.flow +38 -111
- package/src/node-haste/Module.js +1 -1
- package/src/node-haste/Module.js.flow +3 -3
- package/src/node-haste/ModuleCache.js +54 -13
- package/src/node-haste/ModuleCache.js.flow +53 -12
- package/src/node-haste/Package.js +2 -2
- package/src/node-haste/Package.js.flow +1 -1
- package/src/node-haste/lib/AssetPaths.js +5 -5
- package/src/node-haste/lib/AssetPaths.js.flow +7 -6
- package/src/node-haste/lib/parsePlatformFilePath.js +4 -4
- package/src/node-haste/lib/parsePlatformFilePath.js.flow +2 -2
- package/src/shared/output/RamBundle/as-assets.js +14 -15
- package/src/shared/output/RamBundle/as-assets.js.flow +9 -11
- package/src/shared/output/RamBundle/as-indexed-file.js +14 -15
- package/src/shared/output/RamBundle/as-indexed-file.js.flow +8 -12
- package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js +7 -7
- package/src/shared/output/RamBundle/buildSourcemapWithMetadata.js.flow +4 -4
- package/src/shared/output/RamBundle/magic-number.js +1 -1
- package/src/shared/output/RamBundle/magic-number.js.flow +1 -1
- package/src/shared/output/RamBundle/util.js +21 -19
- package/src/shared/output/RamBundle/util.js.flow +5 -8
- package/src/shared/output/RamBundle/write-sourcemap.js +1 -1
- package/src/shared/output/RamBundle/write-sourcemap.js.flow +1 -1
- package/src/shared/output/RamBundle.js +2 -2
- package/src/shared/output/RamBundle.js.flow +4 -5
- package/src/shared/output/bundle.js +6 -6
- package/src/shared/output/bundle.js.flow +4 -5
- package/src/shared/output/meta.js +4 -5
- package/src/shared/output/meta.js.flow +2 -4
- package/src/shared/output/unbundle.js +1 -1
- package/src/shared/output/unbundle.js.flow +1 -1
- package/src/shared/output/writeFile.js +1 -1
- package/src/shared/output/writeFile.js.flow +1 -1
- package/src/shared/types.flow.js +1 -1
- package/src/shared/types.flow.js.flow +6 -4
- package/src/node-haste/DependencyGraph/assets/empty-module.js.flow +0 -9
- package/src/node-haste/types.js +0 -10
- package/src/node-haste/types.js.flow +0 -23
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -10,22 +10,20 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
import type {RunBuildOptions} from '../index';
|
|
14
|
+
import type {YargArguments} from 'metro-config/src/configTypes.flow';
|
|
15
|
+
import typeof Yargs from 'yargs';
|
|
15
16
|
|
|
16
17
|
const {makeAsyncCommand} = require('../cli-utils');
|
|
18
|
+
const MetroApi = require('../index');
|
|
19
|
+
const TerminalReporter = require('../lib/TerminalReporter');
|
|
17
20
|
const {loadConfig} = require('metro-config');
|
|
18
21
|
const {Terminal} = require('metro-core');
|
|
19
22
|
|
|
20
|
-
import type {RunBuildOptions} from '../index';
|
|
21
|
-
import type {YargArguments} from 'metro-config/src/configTypes.flow';
|
|
22
|
-
import typeof Yargs from 'yargs';
|
|
23
|
-
|
|
24
23
|
const term = new Terminal(process.stdout);
|
|
25
24
|
const updateReporter = new TerminalReporter(term);
|
|
26
25
|
|
|
27
26
|
module.exports = (): ({|
|
|
28
|
-
// $FlowFixMe[value-as-type]
|
|
29
27
|
builder: (yargs: Yargs) => void,
|
|
30
28
|
command: string,
|
|
31
29
|
description: string,
|
|
@@ -36,7 +34,6 @@ module.exports = (): ({|
|
|
|
36
34
|
description:
|
|
37
35
|
'Generates a JavaScript bundle containing the specified entrypoint and its descendants',
|
|
38
36
|
|
|
39
|
-
// $FlowFixMe[value-as-type]
|
|
40
37
|
builder: (yargs: Yargs): void => {
|
|
41
38
|
yargs.option('project-roots', {
|
|
42
39
|
alias: 'P',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -8,19 +8,21 @@
|
|
|
8
8
|
*/
|
|
9
9
|
"use strict";
|
|
10
10
|
|
|
11
|
+
const { makeAsyncCommand } = require("../cli-utils");
|
|
12
|
+
|
|
11
13
|
const Server = require("../Server");
|
|
12
14
|
|
|
13
15
|
const denodeify = require("denodeify");
|
|
14
16
|
|
|
15
17
|
const fs = require("fs");
|
|
16
18
|
|
|
17
|
-
const path = require("path");
|
|
18
|
-
|
|
19
|
-
const { makeAsyncCommand } = require("../cli-utils");
|
|
20
|
-
|
|
21
19
|
const { loadConfig } = require("metro-config");
|
|
22
20
|
|
|
21
|
+
const path = require("path");
|
|
22
|
+
|
|
23
23
|
async function dependencies(args, config) {
|
|
24
|
+
var _config$server$unstab;
|
|
25
|
+
|
|
24
26
|
const rootModuleAbsolutePath = args.entryFile;
|
|
25
27
|
|
|
26
28
|
if (!fs.existsSync(rootModuleAbsolutePath)) {
|
|
@@ -31,7 +33,10 @@ async function dependencies(args, config) {
|
|
|
31
33
|
|
|
32
34
|
config.cacheStores = [];
|
|
33
35
|
const relativePath = path.relative(
|
|
34
|
-
config.
|
|
36
|
+
(_config$server$unstab = config.server.unstable_serverRoot) !== null &&
|
|
37
|
+
_config$server$unstab !== void 0
|
|
38
|
+
? _config$server$unstab
|
|
39
|
+
: config.projectRoot,
|
|
35
40
|
rootModuleAbsolutePath
|
|
36
41
|
);
|
|
37
42
|
const options = {
|
|
@@ -39,7 +44,7 @@ async function dependencies(args, config) {
|
|
|
39
44
|
entryFile: relativePath,
|
|
40
45
|
dev: args.dev,
|
|
41
46
|
minify: false,
|
|
42
|
-
generateSourceMaps: !args.dev
|
|
47
|
+
generateSourceMaps: !args.dev,
|
|
43
48
|
};
|
|
44
49
|
const writeToFile = args.output;
|
|
45
50
|
const outStream = writeToFile
|
|
@@ -47,13 +52,13 @@ async function dependencies(args, config) {
|
|
|
47
52
|
: process.stdout;
|
|
48
53
|
const server = new Server(config);
|
|
49
54
|
const deps = await server.getOrderedDependencyPaths(options);
|
|
50
|
-
deps.forEach(modulePath => {
|
|
55
|
+
deps.forEach((modulePath) => {
|
|
51
56
|
// Temporary hack to disable listing dependencies not under this directory.
|
|
52
57
|
// Long term, we need either
|
|
53
58
|
// (a) JS code to not depend on anything outside this directory, or
|
|
54
59
|
// (b) Come up with a way to declare this dependency in Buck.
|
|
55
60
|
const isInsideProjectRoots =
|
|
56
|
-
config.watchFolders.filter(root => modulePath.startsWith(root)).length >
|
|
61
|
+
config.watchFolders.filter((root) => modulePath.startsWith(root)).length >
|
|
57
62
|
0;
|
|
58
63
|
|
|
59
64
|
if (isInsideProjectRoots) {
|
|
@@ -69,44 +74,45 @@ async function dependencies(args, config) {
|
|
|
69
74
|
module.exports = () => ({
|
|
70
75
|
command: "get-dependencies",
|
|
71
76
|
description: "List dependencies",
|
|
72
|
-
builder: yargs => {
|
|
77
|
+
builder: (yargs) => {
|
|
73
78
|
yargs.option("entry-file", {
|
|
74
79
|
type: "string",
|
|
75
80
|
demandOption: true,
|
|
76
|
-
describe: "Absolute path to the root JS file"
|
|
81
|
+
describe: "Absolute path to the root JS file",
|
|
77
82
|
});
|
|
78
83
|
yargs.option("output", {
|
|
79
84
|
type: "string",
|
|
80
|
-
describe:
|
|
85
|
+
describe:
|
|
86
|
+
"File name where to store the output, ex. /tmp/dependencies.txt",
|
|
81
87
|
});
|
|
82
88
|
yargs.option("platform", {
|
|
83
89
|
type: "string",
|
|
84
|
-
describe: "The platform extension used for selecting modules"
|
|
90
|
+
describe: "The platform extension used for selecting modules",
|
|
85
91
|
});
|
|
86
92
|
yargs.option("transformer", {
|
|
87
93
|
type: "string",
|
|
88
|
-
describe: "Specify a custom transformer to be used"
|
|
94
|
+
describe: "Specify a custom transformer to be used",
|
|
89
95
|
});
|
|
90
96
|
yargs.option("max-workers", {
|
|
91
97
|
type: "number",
|
|
92
98
|
describe:
|
|
93
99
|
"Specifies the maximum number of workers the worker-pool " +
|
|
94
100
|
"will spawn for transforming files. This defaults to the number of the " +
|
|
95
|
-
"cores available on your machine."
|
|
101
|
+
"cores available on your machine.",
|
|
96
102
|
});
|
|
97
103
|
yargs.option("dev", {
|
|
98
104
|
type: "boolean",
|
|
99
105
|
default: true,
|
|
100
|
-
describe: "If false, skip all dev-only code path"
|
|
106
|
+
describe: "If false, skip all dev-only code path",
|
|
101
107
|
});
|
|
102
108
|
yargs.option("verbose", {
|
|
103
109
|
type: "boolean",
|
|
104
110
|
default: false,
|
|
105
|
-
description: "Enables logging"
|
|
111
|
+
description: "Enables logging",
|
|
106
112
|
});
|
|
107
113
|
},
|
|
108
|
-
handler: makeAsyncCommand(async argv => {
|
|
114
|
+
handler: makeAsyncCommand(async (argv) => {
|
|
109
115
|
const config = await loadConfig(argv);
|
|
110
116
|
await dependencies(argv, config);
|
|
111
|
-
})
|
|
117
|
+
}),
|
|
112
118
|
});
|
package/src/commands/serve.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
*/
|
|
10
10
|
"use strict";
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const { makeAsyncCommand, watchFile } = require("../cli-utils");
|
|
13
13
|
|
|
14
|
-
const
|
|
14
|
+
const MetroApi = require("../index");
|
|
15
15
|
|
|
16
16
|
const { loadConfig, resolveConfig } = require("metro-config");
|
|
17
17
|
|
|
@@ -20,55 +20,54 @@ const { promisify } = require("util");
|
|
|
20
20
|
module.exports = () => ({
|
|
21
21
|
command: "serve",
|
|
22
22
|
description: "Starts Metro on the given port, building bundles on the fly",
|
|
23
|
-
|
|
24
|
-
builder: yargs => {
|
|
23
|
+
builder: (yargs) => {
|
|
25
24
|
yargs.option("project-roots", {
|
|
26
25
|
alias: "P",
|
|
27
26
|
type: "string",
|
|
28
|
-
array: true
|
|
27
|
+
array: true,
|
|
29
28
|
});
|
|
30
29
|
yargs.option("host", {
|
|
31
30
|
alias: "h",
|
|
32
31
|
type: "string",
|
|
33
|
-
default: "localhost"
|
|
32
|
+
default: "localhost",
|
|
34
33
|
});
|
|
35
34
|
yargs.option("port", {
|
|
36
35
|
alias: "p",
|
|
37
36
|
type: "number",
|
|
38
|
-
default: 8080
|
|
37
|
+
default: 8080,
|
|
39
38
|
});
|
|
40
39
|
yargs.option("max-workers", {
|
|
41
40
|
alias: "j",
|
|
42
|
-
type: "number"
|
|
41
|
+
type: "number",
|
|
43
42
|
});
|
|
44
43
|
yargs.option("secure", {
|
|
45
44
|
type: "boolean",
|
|
46
|
-
describe: "(deprecated)"
|
|
45
|
+
describe: "(deprecated)",
|
|
47
46
|
});
|
|
48
47
|
yargs.option("secure-key", {
|
|
49
48
|
type: "string",
|
|
50
|
-
describe: "(deprecated)"
|
|
49
|
+
describe: "(deprecated)",
|
|
51
50
|
});
|
|
52
51
|
yargs.option("secure-cert", {
|
|
53
52
|
type: "string",
|
|
54
|
-
describe: "(deprecated)"
|
|
53
|
+
describe: "(deprecated)",
|
|
55
54
|
});
|
|
56
55
|
yargs.option("secure-server-options", {
|
|
57
56
|
alias: "s",
|
|
58
57
|
type: "string",
|
|
59
|
-
describe: "Use dot notation for object path"
|
|
58
|
+
describe: "Use dot notation for object path",
|
|
60
59
|
});
|
|
61
60
|
yargs.option("hmr-enabled", {
|
|
62
61
|
alias: "hmr",
|
|
63
|
-
type: "boolean"
|
|
62
|
+
type: "boolean",
|
|
64
63
|
});
|
|
65
64
|
yargs.option("config", {
|
|
66
65
|
alias: "c",
|
|
67
|
-
type: "string"
|
|
66
|
+
type: "string",
|
|
68
67
|
}); // Deprecated
|
|
69
68
|
|
|
70
69
|
yargs.option("reset-cache", {
|
|
71
|
-
type: "boolean"
|
|
70
|
+
type: "boolean",
|
|
72
71
|
}); // Examples
|
|
73
72
|
|
|
74
73
|
yargs.example(
|
|
@@ -76,7 +75,7 @@ module.exports = () => ({
|
|
|
76
75
|
'-s.cert="$(cat path/to/cert)" -s.key="$(cat path/to/key")'
|
|
77
76
|
);
|
|
78
77
|
},
|
|
79
|
-
handler: makeAsyncCommand(async argv => {
|
|
78
|
+
handler: makeAsyncCommand(async (argv) => {
|
|
80
79
|
let server = null;
|
|
81
80
|
let restarting = false;
|
|
82
81
|
|
|
@@ -89,7 +88,8 @@ module.exports = () => ({
|
|
|
89
88
|
|
|
90
89
|
if (server) {
|
|
91
90
|
// eslint-disable-next-line no-console
|
|
92
|
-
console.log("Configuration changed. Restarting the server...");
|
|
91
|
+
console.log("Configuration changed. Restarting the server..."); // $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
92
|
+
|
|
93
93
|
await promisify(server.close).call(server);
|
|
94
94
|
}
|
|
95
95
|
|
|
@@ -106,5 +106,5 @@ module.exports = () => ({
|
|
|
106
106
|
} else {
|
|
107
107
|
await restart();
|
|
108
108
|
}
|
|
109
|
-
})
|
|
109
|
+
}),
|
|
110
110
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -10,18 +10,16 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
const MetroApi = require('../index');
|
|
14
|
-
|
|
15
|
-
const {watchFile, makeAsyncCommand} = require('../cli-utils');
|
|
16
|
-
const {loadConfig, resolveConfig} = require('metro-config');
|
|
17
|
-
const {promisify} = require('util');
|
|
18
|
-
|
|
19
13
|
import type {RunServerOptions} from '../index';
|
|
20
14
|
import type {YargArguments} from 'metro-config/src/configTypes.flow';
|
|
21
15
|
import typeof Yargs from 'yargs';
|
|
22
16
|
|
|
17
|
+
const {makeAsyncCommand, watchFile} = require('../cli-utils');
|
|
18
|
+
const MetroApi = require('../index');
|
|
19
|
+
const {loadConfig, resolveConfig} = require('metro-config');
|
|
20
|
+
const {promisify} = require('util');
|
|
21
|
+
|
|
23
22
|
module.exports = (): ({|
|
|
24
|
-
// $FlowFixMe[value-as-type]
|
|
25
23
|
builder: (yargs: Yargs) => void,
|
|
26
24
|
command: $TEMPORARY$string<'serve'>,
|
|
27
25
|
description: string,
|
|
@@ -31,7 +29,6 @@ module.exports = (): ({|
|
|
|
31
29
|
|
|
32
30
|
description: 'Starts Metro on the given port, building bundles on the fly',
|
|
33
31
|
|
|
34
|
-
// $FlowFixMe[value-as-type]
|
|
35
32
|
builder: (yargs: Yargs): void => {
|
|
36
33
|
yargs.option('project-roots', {
|
|
37
34
|
alias: 'P',
|
|
@@ -81,6 +78,7 @@ module.exports = (): ({|
|
|
|
81
78
|
if (server) {
|
|
82
79
|
// eslint-disable-next-line no-console
|
|
83
80
|
console.log('Configuration changed. Restarting the server...');
|
|
81
|
+
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
84
82
|
await promisify(server.close).call(server);
|
|
85
83
|
}
|
|
86
84
|
|
package/src/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -9,13 +9,21 @@
|
|
|
9
9
|
*/
|
|
10
10
|
"use strict";
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const makeBuildCommand = require("./commands/build");
|
|
13
|
+
|
|
14
|
+
const makeDependenciesCommand = require("./commands/dependencies");
|
|
15
|
+
|
|
16
|
+
const makeServeCommand = require("./commands/serve");
|
|
13
17
|
|
|
14
18
|
const MetroHmrServer = require("./HmrServer");
|
|
15
19
|
|
|
20
|
+
const IncrementalBundler = require("./IncrementalBundler");
|
|
21
|
+
|
|
22
|
+
const createWebsocketServer = require("./lib/createWebsocketServer");
|
|
23
|
+
|
|
16
24
|
const MetroServer = require("./Server");
|
|
17
25
|
|
|
18
|
-
const
|
|
26
|
+
const outputBundle = require("./shared/output/bundle");
|
|
19
27
|
|
|
20
28
|
const chalk = require("chalk");
|
|
21
29
|
|
|
@@ -25,17 +33,13 @@ const http = require("http");
|
|
|
25
33
|
|
|
26
34
|
const https = require("https");
|
|
27
35
|
|
|
28
|
-
const
|
|
36
|
+
const { getDefaultConfig, loadConfig, mergeConfig } = require("metro-config");
|
|
29
37
|
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
const makeServeCommand = require("./commands/serve");
|
|
33
|
-
|
|
34
|
-
const outputBundle = require("./shared/output/bundle");
|
|
38
|
+
const { InspectorProxy } = require("metro-inspector-proxy");
|
|
35
39
|
|
|
36
|
-
const {
|
|
40
|
+
const { parse } = require("url");
|
|
37
41
|
|
|
38
|
-
const
|
|
42
|
+
const ws = require("ws");
|
|
39
43
|
|
|
40
44
|
async function getConfig(config) {
|
|
41
45
|
const defaultConfig = await getDefaultConfig(config.projectRoot);
|
|
@@ -44,20 +48,47 @@ async function getConfig(config) {
|
|
|
44
48
|
|
|
45
49
|
async function runMetro(config, options) {
|
|
46
50
|
const mergedConfig = await getConfig(config);
|
|
47
|
-
|
|
51
|
+
const {
|
|
52
|
+
reporter,
|
|
53
|
+
server: { port },
|
|
54
|
+
} = mergedConfig;
|
|
55
|
+
reporter.update({
|
|
48
56
|
hasReducedPerformance: options
|
|
49
57
|
? Boolean(options.hasReducedPerformance)
|
|
50
58
|
: false,
|
|
51
|
-
port
|
|
52
|
-
type: "initialize_started"
|
|
59
|
+
port,
|
|
60
|
+
type: "initialize_started",
|
|
53
61
|
});
|
|
54
|
-
|
|
62
|
+
const { waitForBundler = false, ...serverOptions } =
|
|
63
|
+
options !== null && options !== void 0 ? options : {};
|
|
64
|
+
const server = new MetroServer(mergedConfig, serverOptions);
|
|
65
|
+
const readyPromise = server
|
|
66
|
+
.ready()
|
|
67
|
+
.then(() => {
|
|
68
|
+
reporter.update({
|
|
69
|
+
type: "initialize_done",
|
|
70
|
+
port,
|
|
71
|
+
});
|
|
72
|
+
})
|
|
73
|
+
.catch((error) => {
|
|
74
|
+
reporter.update({
|
|
75
|
+
type: "initialize_failed",
|
|
76
|
+
port,
|
|
77
|
+
error,
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
if (waitForBundler) {
|
|
82
|
+
await readyPromise;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return server;
|
|
55
86
|
}
|
|
56
87
|
|
|
57
88
|
exports.runMetro = runMetro;
|
|
58
89
|
exports.loadConfig = loadConfig;
|
|
59
90
|
|
|
60
|
-
|
|
91
|
+
const createConnectMiddleware = async function (config, options) {
|
|
61
92
|
const metroServer = await runMetro(config, options);
|
|
62
93
|
let enhancedMiddleware = metroServer.processRequest; // Enhance the resulting middleware using the config options
|
|
63
94
|
|
|
@@ -70,14 +101,23 @@ exports.createConnectMiddleware = async function(config, options) {
|
|
|
70
101
|
|
|
71
102
|
return {
|
|
72
103
|
attachHmrServer(httpServer) {
|
|
73
|
-
|
|
74
|
-
httpServer,
|
|
75
|
-
path: "/hot",
|
|
104
|
+
const wss = createWebsocketServer({
|
|
76
105
|
websocketServer: new MetroHmrServer(
|
|
77
106
|
metroServer.getBundler(),
|
|
78
107
|
metroServer.getCreateModuleId(),
|
|
79
108
|
config
|
|
80
|
-
)
|
|
109
|
+
),
|
|
110
|
+
});
|
|
111
|
+
httpServer.on("upgrade", (request, socket, head) => {
|
|
112
|
+
const { pathname } = parse(request.url);
|
|
113
|
+
|
|
114
|
+
if (pathname === "/hot") {
|
|
115
|
+
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
116
|
+
wss.emit("connection", ws, request);
|
|
117
|
+
});
|
|
118
|
+
} else {
|
|
119
|
+
socket.destroy();
|
|
120
|
+
}
|
|
81
121
|
});
|
|
82
122
|
},
|
|
83
123
|
|
|
@@ -86,10 +126,12 @@ exports.createConnectMiddleware = async function(config, options) {
|
|
|
86
126
|
|
|
87
127
|
end() {
|
|
88
128
|
metroServer.end();
|
|
89
|
-
}
|
|
129
|
+
},
|
|
90
130
|
};
|
|
91
131
|
};
|
|
92
132
|
|
|
133
|
+
exports.createConnectMiddleware = createConnectMiddleware;
|
|
134
|
+
|
|
93
135
|
exports.runServer = async (
|
|
94
136
|
config,
|
|
95
137
|
{
|
|
@@ -102,7 +144,10 @@ exports.runServer = async (
|
|
|
102
144
|
//deprecated
|
|
103
145
|
secureCert,
|
|
104
146
|
// deprecated
|
|
105
|
-
secureKey
|
|
147
|
+
secureKey,
|
|
148
|
+
// deprecated
|
|
149
|
+
waitForBundler = false,
|
|
150
|
+
websocketEndpoints = {},
|
|
106
151
|
}
|
|
107
152
|
) => {
|
|
108
153
|
if (secure != null || secureCert != null || secureKey != null) {
|
|
@@ -118,13 +163,13 @@ exports.runServer = async (
|
|
|
118
163
|
const connect = require("connect");
|
|
119
164
|
|
|
120
165
|
const serverApp = connect();
|
|
121
|
-
const {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
166
|
+
const { middleware, end, metroServer } = await createConnectMiddleware(
|
|
167
|
+
config,
|
|
168
|
+
{
|
|
169
|
+
hasReducedPerformance,
|
|
170
|
+
waitForBundler,
|
|
171
|
+
}
|
|
172
|
+
);
|
|
128
173
|
serverApp.use(middleware);
|
|
129
174
|
let inspectorProxy = null;
|
|
130
175
|
|
|
@@ -141,7 +186,7 @@ exports.runServer = async (
|
|
|
141
186
|
options = Object.assign(
|
|
142
187
|
{
|
|
143
188
|
key: fs.readFileSync(secureKey),
|
|
144
|
-
cert: fs.readFileSync(secureCert)
|
|
189
|
+
cert: fs.readFileSync(secureCert),
|
|
145
190
|
},
|
|
146
191
|
secureServerOptions
|
|
147
192
|
);
|
|
@@ -152,7 +197,7 @@ exports.runServer = async (
|
|
|
152
197
|
httpServer = http.createServer(serverApp);
|
|
153
198
|
}
|
|
154
199
|
|
|
155
|
-
httpServer.on("error", error => {
|
|
200
|
+
httpServer.on("error", (error) => {
|
|
156
201
|
if (onError) {
|
|
157
202
|
onError(error);
|
|
158
203
|
}
|
|
@@ -165,13 +210,40 @@ exports.runServer = async (
|
|
|
165
210
|
onReady(httpServer);
|
|
166
211
|
}
|
|
167
212
|
|
|
168
|
-
|
|
213
|
+
Object.assign(websocketEndpoints, {
|
|
214
|
+
...(inspectorProxy
|
|
215
|
+
? { ...inspectorProxy.createWebSocketListeners(httpServer) }
|
|
216
|
+
: {}),
|
|
217
|
+
"/hot": createWebsocketServer({
|
|
218
|
+
websocketServer: new MetroHmrServer(
|
|
219
|
+
metroServer.getBundler(),
|
|
220
|
+
metroServer.getCreateModuleId(),
|
|
221
|
+
config
|
|
222
|
+
),
|
|
223
|
+
}),
|
|
224
|
+
});
|
|
225
|
+
httpServer.on("upgrade", (request, socket, head) => {
|
|
226
|
+
const { pathname } = parse(request.url);
|
|
227
|
+
|
|
228
|
+
if (pathname != null && websocketEndpoints[pathname]) {
|
|
229
|
+
websocketEndpoints[pathname].handleUpgrade(
|
|
230
|
+
request,
|
|
231
|
+
socket,
|
|
232
|
+
head,
|
|
233
|
+
(ws) => {
|
|
234
|
+
websocketEndpoints[pathname].emit("connection", ws, request);
|
|
235
|
+
}
|
|
236
|
+
);
|
|
237
|
+
} else {
|
|
238
|
+
socket.destroy();
|
|
239
|
+
}
|
|
240
|
+
});
|
|
169
241
|
|
|
170
242
|
if (inspectorProxy) {
|
|
171
|
-
|
|
243
|
+
// TODO(hypuk): Refactor inspectorProxy.processRequest into separate request handlers
|
|
172
244
|
// so that we could provide routes (/json/list and /json/version) here.
|
|
173
245
|
// Currently this causes Metro to give warning about T31407894.
|
|
174
|
-
|
|
246
|
+
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
175
247
|
serverApp.use(inspectorProxy.processRequest.bind(inspectorProxy));
|
|
176
248
|
}
|
|
177
249
|
|
|
@@ -181,7 +253,7 @@ exports.runServer = async (
|
|
|
181
253
|
// timeout of 120 seconds to respond to a request.
|
|
182
254
|
|
|
183
255
|
httpServer.timeout = 0;
|
|
184
|
-
httpServer.on("error", error => {
|
|
256
|
+
httpServer.on("error", (error) => {
|
|
185
257
|
end();
|
|
186
258
|
reject(error);
|
|
187
259
|
});
|
|
@@ -204,11 +276,11 @@ exports.runBuild = async (
|
|
|
204
276
|
out,
|
|
205
277
|
platform = "web",
|
|
206
278
|
sourceMap = false,
|
|
207
|
-
sourceMapUrl
|
|
279
|
+
sourceMapUrl,
|
|
208
280
|
}
|
|
209
281
|
) => {
|
|
210
282
|
const metroServer = await runMetro(config, {
|
|
211
|
-
watch: false
|
|
283
|
+
watch: false,
|
|
212
284
|
});
|
|
213
285
|
|
|
214
286
|
try {
|
|
@@ -220,7 +292,7 @@ exports.runBuild = async (
|
|
|
220
292
|
platform,
|
|
221
293
|
sourceMapUrl: sourceMap === false ? undefined : sourceMapUrl,
|
|
222
294
|
createModuleIdFactory: config.serializer.createModuleIdFactory,
|
|
223
|
-
onProgress
|
|
295
|
+
onProgress,
|
|
224
296
|
};
|
|
225
297
|
|
|
226
298
|
if (onBegin) {
|
|
@@ -241,7 +313,7 @@ exports.runBuild = async (
|
|
|
241
313
|
bundleOutput,
|
|
242
314
|
sourcemapOutput,
|
|
243
315
|
dev,
|
|
244
|
-
platform
|
|
316
|
+
platform,
|
|
245
317
|
}; // eslint-disable-next-line no-console
|
|
246
318
|
|
|
247
319
|
await output.save(metroBundle, outputOptions, console.log);
|
|
@@ -253,7 +325,7 @@ exports.runBuild = async (
|
|
|
253
325
|
}
|
|
254
326
|
};
|
|
255
327
|
|
|
256
|
-
exports.buildGraph = async function(
|
|
328
|
+
exports.buildGraph = async function (
|
|
257
329
|
config,
|
|
258
330
|
{
|
|
259
331
|
customTransformOptions = Object.create(null),
|
|
@@ -262,7 +334,7 @@ exports.buildGraph = async function(
|
|
|
262
334
|
minify = false,
|
|
263
335
|
onProgress,
|
|
264
336
|
platform = "web",
|
|
265
|
-
type = "module"
|
|
337
|
+
type = "module",
|
|
266
338
|
}
|
|
267
339
|
) {
|
|
268
340
|
const mergedConfig = await getConfig(config);
|
|
@@ -275,15 +347,14 @@ exports.buildGraph = async function(
|
|
|
275
347
|
dev,
|
|
276
348
|
minify,
|
|
277
349
|
platform,
|
|
278
|
-
type
|
|
350
|
+
type,
|
|
279
351
|
});
|
|
280
352
|
} finally {
|
|
281
353
|
bundler.end();
|
|
282
354
|
}
|
|
283
355
|
};
|
|
284
356
|
|
|
285
|
-
exports.attachMetroCli = function(
|
|
286
|
-
// $FlowFixMe[value-as-type]
|
|
357
|
+
exports.attachMetroCli = function (
|
|
287
358
|
yargs,
|
|
288
359
|
{ build = {}, serve = {}, dependencies = {} } = {}
|
|
289
360
|
) {
|
|
@@ -298,12 +369,8 @@ exports.attachMetroCli = function(
|
|
|
298
369
|
}
|
|
299
370
|
|
|
300
371
|
if (dependencies) {
|
|
301
|
-
const {
|
|
302
|
-
|
|
303
|
-
description,
|
|
304
|
-
builder,
|
|
305
|
-
handler
|
|
306
|
-
} = makeDependenciesCommand();
|
|
372
|
+
const { command, description, builder, handler } =
|
|
373
|
+
makeDependenciesCommand();
|
|
307
374
|
yargs.command(command, description, builder, handler);
|
|
308
375
|
}
|
|
309
376
|
|