@react-native-windows/cli 0.0.0-canary.25 → 0.0.0-canary.250
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/README.md +117 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindows.d.ts +88 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js +705 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js.map +1 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.d.ts +14 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js +33 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js.map +1 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.d.ts +27 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.js +208 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.js.map +1 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.d.ts +12 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js +23 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/configUtils.d.ts +141 -93
- package/lib-commonjs/commands/config/configUtils.js +420 -0
- package/lib-commonjs/commands/config/configUtils.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/dependencyConfig.d.ts +38 -37
- package/lib-commonjs/commands/config/dependencyConfig.js +230 -0
- package/lib-commonjs/commands/config/dependencyConfig.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/projectConfig.d.ts +28 -24
- package/lib-commonjs/commands/config/projectConfig.js +191 -0
- package/lib-commonjs/commands/config/projectConfig.js.map +1 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.d.ts +6 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.js +21 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.js.map +1 -0
- package/lib-commonjs/commands/healthCheck/healthChecks.d.ts +7 -0
- package/lib-commonjs/commands/healthCheck/healthChecks.js +124 -0
- package/lib-commonjs/commands/healthCheck/healthChecks.js.map +1 -0
- package/lib-commonjs/commands/initWindows/initWindows.d.ts +46 -0
- package/lib-commonjs/commands/initWindows/initWindows.js +275 -0
- package/lib-commonjs/commands/initWindows/initWindows.js.map +1 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.d.ts +16 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.js +42 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.js.map +1 -0
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindows.d.ts +10 -10
- package/lib-commonjs/commands/runWindows/runWindows.js +322 -0
- package/lib-commonjs/commands/runWindows/runWindows.js.map +1 -0
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.d.ts +56 -52
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.js +132 -131
- package/lib-commonjs/commands/runWindows/runWindowsOptions.js.map +1 -0
- package/lib-commonjs/e2etest/autolink.test.d.ts +6 -0
- package/lib-commonjs/e2etest/autolink.test.js +367 -0
- package/lib-commonjs/e2etest/autolink.test.js.map +1 -0
- package/lib-commonjs/e2etest/dependencyConfig.test.d.ts +6 -0
- package/lib-commonjs/e2etest/dependencyConfig.test.js +130 -0
- package/lib-commonjs/e2etest/dependencyConfig.test.js.map +1 -0
- package/lib-commonjs/e2etest/healthChecks.test.d.ts +6 -0
- package/lib-commonjs/e2etest/healthChecks.test.js +31 -0
- package/lib-commonjs/e2etest/healthChecks.test.js.map +1 -0
- package/lib-commonjs/e2etest/initWindows.test.d.ts +6 -0
- package/lib-commonjs/e2etest/initWindows.test.js +110 -0
- package/lib-commonjs/e2etest/initWindows.test.js.map +1 -0
- package/lib-commonjs/e2etest/projectConfig.test.d.ts +6 -0
- package/lib-commonjs/e2etest/projectConfig.test.js +111 -0
- package/lib-commonjs/e2etest/projectConfig.test.js.map +1 -0
- package/lib-commonjs/e2etest/projectConfig.utils.d.ts +8 -0
- package/lib-commonjs/e2etest/projectConfig.utils.js +77 -0
- package/lib-commonjs/e2etest/projectConfig.utils.js.map +1 -0
- package/lib-commonjs/e2etest/runWindows.test.d.ts +6 -0
- package/lib-commonjs/e2etest/runWindows.test.js +61 -0
- package/lib-commonjs/e2etest/runWindows.test.js.map +1 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.d.ts +6 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.js +21 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.js.map +1 -0
- package/lib-commonjs/generator-common/index.d.ts +39 -23
- package/lib-commonjs/generator-common/index.js +242 -221
- package/lib-commonjs/generator-common/index.js.map +1 -1
- package/lib-commonjs/generator-windows/index.d.ts +10 -10
- package/lib-commonjs/generator-windows/index.js +341 -364
- package/lib-commonjs/generator-windows/index.js.map +1 -1
- package/lib-commonjs/index.d.ts +50 -47
- package/lib-commonjs/index.js +77 -39
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/{runWindows/utils → utils}/build.d.ts +12 -13
- package/lib-commonjs/{runWindows/utils → utils}/build.js +89 -91
- package/lib-commonjs/utils/build.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.d.ts +6 -6
- package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.js +69 -65
- package/lib-commonjs/utils/checkRequirements.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.d.ts +21 -13
- package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.js +149 -113
- package/lib-commonjs/utils/commandWithProgress.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/deploy.d.ts +12 -12
- package/lib-commonjs/utils/deploy.js +354 -0
- package/lib-commonjs/utils/deploy.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/info.d.ts +6 -6
- package/lib-commonjs/{runWindows/utils → utils}/info.js +28 -25
- package/lib-commonjs/utils/info.js.map +1 -0
- package/lib-commonjs/utils/msbuildtools.d.ts +28 -0
- package/lib-commonjs/utils/msbuildtools.js +281 -0
- package/lib-commonjs/utils/msbuildtools.js.map +1 -0
- package/lib-commonjs/utils/nameHelpers.d.ts +9 -0
- package/lib-commonjs/utils/nameHelpers.js +46 -0
- package/lib-commonjs/utils/nameHelpers.js.map +1 -0
- package/lib-commonjs/utils/pathHelpers.d.ts +9 -0
- package/lib-commonjs/utils/pathHelpers.js +37 -0
- package/lib-commonjs/utils/pathHelpers.js.map +1 -0
- package/lib-commonjs/utils/telemetryHelpers.d.ts +29 -0
- package/lib-commonjs/utils/telemetryHelpers.js +121 -0
- package/lib-commonjs/utils/telemetryHelpers.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/version.d.ts +19 -19
- package/lib-commonjs/{runWindows/utils → utils}/version.js +109 -109
- package/lib-commonjs/utils/version.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/vsInstalls.d.ts +34 -34
- package/lib-commonjs/utils/vsInstalls.js +102 -0
- package/lib-commonjs/utils/vsInstalls.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/vstools.d.ts +16 -15
- package/lib-commonjs/utils/vstools.js +190 -0
- package/lib-commonjs/utils/vstools.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.d.ts +24 -24
- package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.js +108 -105
- package/lib-commonjs/utils/winappdeploytool.js.map +1 -0
- package/package.json +49 -31
- package/{powershell → src/powershell}/Add-AppDevPackage.ps1 +2 -2
- package/src/powershell/Eval-MsBuildProperties.ps1 +156 -0
- package/{powershell → src/powershell}/WindowsStoreAppUtils.ps1 +10 -0
- package/CHANGELOG.json +0 -398
- package/CHANGELOG.md +0 -192
- package/lib-commonjs/config/configUtils.js +0 -253
- package/lib-commonjs/config/configUtils.js.map +0 -1
- package/lib-commonjs/config/dependencyConfig.js +0 -167
- package/lib-commonjs/config/dependencyConfig.js.map +0 -1
- package/lib-commonjs/config/projectConfig.js +0 -121
- package/lib-commonjs/config/projectConfig.js.map +0 -1
- package/lib-commonjs/runWindows/runWindows.js +0 -159
- package/lib-commonjs/runWindows/runWindows.js.map +0 -1
- package/lib-commonjs/runWindows/runWindowsOptions.js.map +0 -1
- package/lib-commonjs/runWindows/utils/autolink.d.ts +0 -7
- package/lib-commonjs/runWindows/utils/autolink.js +0 -353
- package/lib-commonjs/runWindows/utils/autolink.js.map +0 -1
- package/lib-commonjs/runWindows/utils/build.js.map +0 -1
- package/lib-commonjs/runWindows/utils/checkRequirements.js.map +0 -1
- package/lib-commonjs/runWindows/utils/commandWithProgress.js.map +0 -1
- package/lib-commonjs/runWindows/utils/deploy.js +0 -247
- package/lib-commonjs/runWindows/utils/deploy.js.map +0 -1
- package/lib-commonjs/runWindows/utils/info.js.map +0 -1
- package/lib-commonjs/runWindows/utils/msbuildtools.d.ts +0 -22
- package/lib-commonjs/runWindows/utils/msbuildtools.js +0 -195
- package/lib-commonjs/runWindows/utils/msbuildtools.js.map +0 -1
- package/lib-commonjs/runWindows/utils/version.js.map +0 -1
- package/lib-commonjs/runWindows/utils/vsInstalls.js +0 -70
- package/lib-commonjs/runWindows/utils/vsInstalls.js.map +0 -1
- package/lib-commonjs/runWindows/utils/vstools.js +0 -150
- package/lib-commonjs/runWindows/utils/vstools.js.map +0 -1
- package/lib-commonjs/runWindows/utils/winappdeploytool.js.map +0 -1
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) Microsoft Corporation.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
* @format
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.projectConfigWindows = void 0;
|
|
9
|
-
const path = require("path");
|
|
10
|
-
const configUtils = require("./configUtils.js");
|
|
11
|
-
/**
|
|
12
|
-
* Gets the config of any RNW apps under the target folder.
|
|
13
|
-
* @param folder The absolute path to the target folder.
|
|
14
|
-
* @param userConfig A manually specified override config.
|
|
15
|
-
* @return The config if any RNW apps exist.
|
|
16
|
-
*/
|
|
17
|
-
function projectConfigWindows(folder, userConfig = {}) {
|
|
18
|
-
if (userConfig === null) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
const usingManualOverride = 'sourceDir' in userConfig;
|
|
22
|
-
const sourceDir = usingManualOverride
|
|
23
|
-
? path.join(folder, userConfig.sourceDir)
|
|
24
|
-
: configUtils.findWindowsFolder(folder);
|
|
25
|
-
if (sourceDir === null) {
|
|
26
|
-
// Nothing to look for here, bail
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
var result = {
|
|
30
|
-
folder: folder,
|
|
31
|
-
sourceDir: sourceDir.substr(folder.length + 1),
|
|
32
|
-
};
|
|
33
|
-
var validProject = false;
|
|
34
|
-
if (usingManualOverride) {
|
|
35
|
-
// Manual override, try to use it for solutionFile
|
|
36
|
-
if (!('solutionFile' in userConfig)) {
|
|
37
|
-
result.solutionFile =
|
|
38
|
-
'Error: Solution file is required but not specified in react-native.config.';
|
|
39
|
-
}
|
|
40
|
-
else if (userConfig.solutionFile === null) {
|
|
41
|
-
result.solutionFile =
|
|
42
|
-
'Error: Solution file is null in react-native.config.';
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
result.solutionFile = userConfig.solutionFile;
|
|
46
|
-
}
|
|
47
|
-
// Manual override, try to use it for project
|
|
48
|
-
if (!('project' in userConfig)) {
|
|
49
|
-
result.project = {
|
|
50
|
-
projectFile: 'Error: Project is required but not specified in react-native.config.',
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
else if (!userConfig.project) {
|
|
54
|
-
result.project = {
|
|
55
|
-
projectFile: 'Error: Project is null in react-native.config.',
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
if (!('projectFile' in userConfig.project)) {
|
|
60
|
-
result.project = {
|
|
61
|
-
projectFile: 'Error: Project file is required for project in react-native.config.',
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
else if (userConfig.project.projectFile === null) {
|
|
65
|
-
result.project = {
|
|
66
|
-
projectFile: 'Error: Project file is null in react-native.config.',
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
result.project = {
|
|
71
|
-
projectFile: userConfig.project.projectFile,
|
|
72
|
-
};
|
|
73
|
-
validProject = true;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
// No manually provided solutionFile, try to find it
|
|
79
|
-
const foundSolutions = configUtils.findSolutionFiles(sourceDir);
|
|
80
|
-
if (foundSolutions.length === 0) {
|
|
81
|
-
result.solutionFile =
|
|
82
|
-
'Error: No app solution file found, please specify in react-native.config.';
|
|
83
|
-
}
|
|
84
|
-
else if (foundSolutions.length > 1) {
|
|
85
|
-
result.solutionFile =
|
|
86
|
-
'Error: Too many app solution files found, please specify in react-native.config.';
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
result.solutionFile = foundSolutions[0];
|
|
90
|
-
}
|
|
91
|
-
// No manually provided project, try to find it
|
|
92
|
-
const foundProjects = configUtils.findAppProjectFiles(sourceDir);
|
|
93
|
-
if (foundProjects.length === 0) {
|
|
94
|
-
result.project = {
|
|
95
|
-
projectFile: 'Error: No app project file found, please specify in react-native.config.',
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
else if (foundProjects.length > 1) {
|
|
99
|
-
result.project = {
|
|
100
|
-
projectFile: 'Error: Too many app project files found, please specify in react-native.config.',
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
result.project = {
|
|
105
|
-
projectFile: foundProjects[0],
|
|
106
|
-
};
|
|
107
|
-
validProject = true;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (validProject) {
|
|
111
|
-
const projectFile = path.join(sourceDir, result.project.projectFile);
|
|
112
|
-
const projectContents = configUtils.readProjectFile(projectFile);
|
|
113
|
-
// Add missing (auto) items
|
|
114
|
-
result.project.projectName = configUtils.getProjectName(projectContents);
|
|
115
|
-
result.project.projectLang = configUtils.getProjectLanguage(projectFile);
|
|
116
|
-
result.project.projectGuid = configUtils.getProjectGuid(projectContents);
|
|
117
|
-
}
|
|
118
|
-
return result;
|
|
119
|
-
}
|
|
120
|
-
exports.projectConfigWindows = projectConfigWindows;
|
|
121
|
-
//# sourceMappingURL=projectConfig.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../../src/config/projectConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) Microsoft Corporation.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
* @format
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.runWindowsCommand = void 0;
|
|
9
|
-
const build = require("./utils/build");
|
|
10
|
-
const chalk = require("chalk");
|
|
11
|
-
const deploy = require("./utils/deploy");
|
|
12
|
-
const commandWithProgress_1 = require("./utils/commandWithProgress");
|
|
13
|
-
const info = require("./utils/info");
|
|
14
|
-
const msbuildtools_1 = require("./utils/msbuildtools");
|
|
15
|
-
const runWindowsOptions_1 = require("./runWindowsOptions");
|
|
16
|
-
const autolink_1 = require("./utils/autolink");
|
|
17
|
-
function ExitProcessWithError(loggingWasEnabled) {
|
|
18
|
-
if (!loggingWasEnabled) {
|
|
19
|
-
console.log(`Re-run the command with ${chalk.bold('--logging')} for more information`);
|
|
20
|
-
}
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Performs build deploy and launch of RNW apps.
|
|
25
|
-
* @param args Unprocessed args passed from react-native CLI.
|
|
26
|
-
* @param config Config passed from react-native CLI.
|
|
27
|
-
* @param options Options passed from react-native CLI.
|
|
28
|
-
*/
|
|
29
|
-
async function runWindows(args, config, options) {
|
|
30
|
-
const verbose = options.logging;
|
|
31
|
-
if (verbose) {
|
|
32
|
-
commandWithProgress_1.newInfo('Verbose: ON');
|
|
33
|
-
}
|
|
34
|
-
// https://github.com/yarnpkg/yarn/issues/8334 - Yarn on Windows breaks apps that read from the environment variables
|
|
35
|
-
// Yarn will run node via CreateProcess and pass npm_config_* variables in lowercase without unifying their value
|
|
36
|
-
// with their possibly existing uppercase counterparts. This breaks programs that read from the environment block
|
|
37
|
-
// and write to a case-insensitive dictionary since they expect to encounter each variable only once.
|
|
38
|
-
// The values of the lowercase variables are the one npm actually wants to use, plus they are seeded from the
|
|
39
|
-
// uppercase variable values one if there are no overrides.
|
|
40
|
-
delete process.env.NPM_CONFIG_CACHE;
|
|
41
|
-
delete process.env.NPM_CONFIG_PREFIX;
|
|
42
|
-
if (options.info) {
|
|
43
|
-
try {
|
|
44
|
-
const output = await info.getEnvironmentInfo();
|
|
45
|
-
console.log(output.trimEnd());
|
|
46
|
-
console.log(' Installed UWP SDKs:');
|
|
47
|
-
const sdks = msbuildtools_1.default.getAllAvailableUAPVersions();
|
|
48
|
-
sdks.forEach(version => console.log(' ' + version));
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
catch (e) {
|
|
52
|
-
commandWithProgress_1.newError('Unable to print environment info.\n' + e.toString());
|
|
53
|
-
ExitProcessWithError(options.logging);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
// Get the solution file
|
|
57
|
-
const slnFile = build.getAppSolutionFile(options, config);
|
|
58
|
-
if (options.autolink) {
|
|
59
|
-
const autolinkArgs = [];
|
|
60
|
-
const autolinkConfig = config;
|
|
61
|
-
const autoLinkOptions = {
|
|
62
|
-
logging: options.logging,
|
|
63
|
-
proj: options.proj,
|
|
64
|
-
sln: options.sln,
|
|
65
|
-
};
|
|
66
|
-
await autolink_1.autoLinkCommand.func(autolinkArgs, autolinkConfig, autoLinkOptions);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
commandWithProgress_1.newInfo('Autolink step is skipped');
|
|
70
|
-
}
|
|
71
|
-
let buildTools;
|
|
72
|
-
try {
|
|
73
|
-
buildTools = msbuildtools_1.default.findAvailableVersion(options.arch, verbose);
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
commandWithProgress_1.newWarn('No public VS release found');
|
|
77
|
-
// Try prerelease
|
|
78
|
-
try {
|
|
79
|
-
commandWithProgress_1.newInfo('Trying pre-release VS');
|
|
80
|
-
buildTools = msbuildtools_1.default.findAvailableVersion(options.arch, verbose, true);
|
|
81
|
-
}
|
|
82
|
-
catch (_a) {
|
|
83
|
-
throw error;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
if (options.build) {
|
|
87
|
-
if (!slnFile) {
|
|
88
|
-
commandWithProgress_1.newError('Visual Studio Solution file not found. Maybe run "react-native windows" first?');
|
|
89
|
-
ExitProcessWithError(options.logging);
|
|
90
|
-
}
|
|
91
|
-
try {
|
|
92
|
-
await build.restoreNuGetPackages(slnFile, buildTools, verbose);
|
|
93
|
-
}
|
|
94
|
-
catch (e) {
|
|
95
|
-
commandWithProgress_1.newError('Failed to restore the NuGet packages: ' + e.toString());
|
|
96
|
-
ExitProcessWithError(options.logging);
|
|
97
|
-
}
|
|
98
|
-
// Get build/deploy options
|
|
99
|
-
const buildType = deploy.getBuildConfiguration(options);
|
|
100
|
-
var msBuildProps = build.parseMsBuildProps(options);
|
|
101
|
-
// Disable the autolink check since we just ran it
|
|
102
|
-
msBuildProps.RunAutolinkCheck = 'false';
|
|
103
|
-
try {
|
|
104
|
-
await build.buildSolution(buildTools, slnFile, buildType, options.arch, msBuildProps, verbose, undefined, // build the default target
|
|
105
|
-
options.buildLogDirectory, options.singleproc);
|
|
106
|
-
}
|
|
107
|
-
catch (e) {
|
|
108
|
-
commandWithProgress_1.newError(`Build failed with message ${e.message}. Check your build configuration.`);
|
|
109
|
-
if (e.logfile) {
|
|
110
|
-
console.log('See', chalk.bold(e.logfile));
|
|
111
|
-
}
|
|
112
|
-
ExitProcessWithError(options.logging);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
commandWithProgress_1.newInfo('Build step is skipped');
|
|
117
|
-
}
|
|
118
|
-
await deploy.startServerInNewWindow(options, verbose);
|
|
119
|
-
if (options.deploy) {
|
|
120
|
-
if (!slnFile) {
|
|
121
|
-
commandWithProgress_1.newError('Visual Studio Solution file not found. Maybe run "react-native windows" first?');
|
|
122
|
-
ExitProcessWithError(options.logging);
|
|
123
|
-
}
|
|
124
|
-
try {
|
|
125
|
-
if (options.device || options.emulator || options.target) {
|
|
126
|
-
await deploy.deployToDevice(options, verbose);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
await deploy.deployToDesktop(options, verbose, config, buildTools);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
catch (e) {
|
|
133
|
-
commandWithProgress_1.newError(`Failed to deploy${e ? `: ${e.message}` : ''}`);
|
|
134
|
-
ExitProcessWithError(options.logging);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
commandWithProgress_1.newInfo('Deploy step is skipped');
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/*
|
|
142
|
-
// Example of running the Windows Command
|
|
143
|
-
runWindows({
|
|
144
|
-
root: 'C:\\github\\hack\\myapp',
|
|
145
|
-
debug: true,
|
|
146
|
-
arch: 'x86',
|
|
147
|
-
nugetPath: 'C:\\github\\react\\react-native-windows\\local-cli\\runWindows\\.nuget\\nuget.exe'
|
|
148
|
-
});
|
|
149
|
-
*/
|
|
150
|
-
/**
|
|
151
|
-
* Starts the app on a connected Windows emulator or mobile device.
|
|
152
|
-
*/
|
|
153
|
-
exports.runWindowsCommand = {
|
|
154
|
-
name: 'run-windows',
|
|
155
|
-
description: 'builds your app and starts it on a connected Windows desktop, emulator or device',
|
|
156
|
-
func: runWindows,
|
|
157
|
-
options: runWindowsOptions_1.runWindowsOptions,
|
|
158
|
-
};
|
|
159
|
-
//# sourceMappingURL=runWindows.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runWindows.js","sourceRoot":"","sources":["../../src/runWindows/runWindows.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runWindowsOptions.js","sourceRoot":"","sources":["../../src/runWindows/runWindowsOptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) Microsoft Corporation.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
* @format
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.autoLinkCommand = void 0;
|
|
9
|
-
const fs = require("fs");
|
|
10
|
-
const path = require("path");
|
|
11
|
-
const chalk = require("chalk");
|
|
12
|
-
const perf_hooks_1 = require("perf_hooks");
|
|
13
|
-
const commandWithProgress_1 = require("./commandWithProgress");
|
|
14
|
-
const vstools = require("./vstools");
|
|
15
|
-
const generatorCommon = require("../../generator-common");
|
|
16
|
-
const configUtils = require("../../config/configUtils");
|
|
17
|
-
/**
|
|
18
|
-
* Locates the react-native-windows directory containing template files
|
|
19
|
-
* @param config project configuration
|
|
20
|
-
*/
|
|
21
|
-
function resolveTemplateRoot(projectConfig) {
|
|
22
|
-
const rnwPackage = path.dirname(require.resolve('react-native-windows/package.json', {
|
|
23
|
-
paths: [projectConfig.folder],
|
|
24
|
-
}));
|
|
25
|
-
return path.join(rnwPackage, 'template');
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Logs the given message if verbose is True.
|
|
29
|
-
* @param message The message to log.
|
|
30
|
-
* @param verbose Whether or not verbose logging is enabled.
|
|
31
|
-
*/
|
|
32
|
-
function verboseMessage(message, verbose) {
|
|
33
|
-
if (verbose) {
|
|
34
|
-
console.log(message);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Loads a source template file and performs the given replacements, normalizing CRLF.
|
|
39
|
-
* @param srcFile Path to the source file.
|
|
40
|
-
* @param replacements e.g. {'TextToBeReplaced': 'Replacement'}
|
|
41
|
-
* @return The contents of the file with the replacements applied.
|
|
42
|
-
*/
|
|
43
|
-
function getNormalizedContents(srcFile, replacements) {
|
|
44
|
-
// Template files are CRLF, JS-generated replacements are LF, normalize replacements to CRLF
|
|
45
|
-
for (var key in replacements) {
|
|
46
|
-
replacements[key] = replacements[key].replace(/\n/g, '\r\n');
|
|
47
|
-
}
|
|
48
|
-
replacements.useMustache = true;
|
|
49
|
-
return generatorCommon.resolveContents(srcFile, replacements);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Updates the target file with the expected contents if it's different.
|
|
53
|
-
* @param filePath Path to the target file to update.
|
|
54
|
-
* @param expectedContents The expected contents of the file.
|
|
55
|
-
* @param verbose If true, enable verbose logging.
|
|
56
|
-
* @param checkMode It true, don't make any changes.
|
|
57
|
-
* @return Whether any changes were necessary.
|
|
58
|
-
*/
|
|
59
|
-
function updateFile(filePath, expectedContents, verbose, checkMode) {
|
|
60
|
-
const fileName = chalk.bold(path.basename(filePath));
|
|
61
|
-
verboseMessage(`Reading ${fileName}...`, verbose);
|
|
62
|
-
const actualContents = fs.existsSync(filePath)
|
|
63
|
-
? fs.readFileSync(filePath).toString()
|
|
64
|
-
: '';
|
|
65
|
-
const contentsChanged = expectedContents !== actualContents;
|
|
66
|
-
if (contentsChanged) {
|
|
67
|
-
verboseMessage(chalk.yellow(`${fileName} needs to be updated.`), verbose);
|
|
68
|
-
if (!checkMode) {
|
|
69
|
-
verboseMessage(`Writing ${fileName}...`, verbose);
|
|
70
|
-
fs.writeFileSync(filePath, expectedContents, {
|
|
71
|
-
encoding: 'utf8',
|
|
72
|
-
flag: 'w',
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
verboseMessage(`No changes to ${fileName}.`, verbose);
|
|
78
|
-
}
|
|
79
|
-
return contentsChanged;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Exits the script with the given status code.
|
|
83
|
-
* @param statusCode The status code.
|
|
84
|
-
* @param loggingWasEnabled Whether or not verbose lossing was enabled.
|
|
85
|
-
*/
|
|
86
|
-
function exitProcessWithStatusCode(statusCode, loggingWasEnabled) {
|
|
87
|
-
if (!loggingWasEnabled && statusCode !== 0) {
|
|
88
|
-
console.log(`Error: Re-run the command with ${chalk.bold('--logging')} for more information.`);
|
|
89
|
-
}
|
|
90
|
-
process.exit(statusCode);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Performs auto-linking for RNW native modules and apps.
|
|
94
|
-
* @param args Unprocessed args passed from react-native CLI.
|
|
95
|
-
* @param config Config passed from react-native CLI.
|
|
96
|
-
* @param options Options passed from react-native CLI.
|
|
97
|
-
*/
|
|
98
|
-
async function updateAutoLink(args, config, options) {
|
|
99
|
-
const startTime = perf_hooks_1.performance.now();
|
|
100
|
-
const verbose = options.logging;
|
|
101
|
-
const checkMode = options.check;
|
|
102
|
-
var changesNecessary = false;
|
|
103
|
-
const spinner = commandWithProgress_1.newSpinner(checkMode ? 'Checking auto-linked files...' : 'Auto-linking...');
|
|
104
|
-
verboseMessage('', verbose);
|
|
105
|
-
try {
|
|
106
|
-
verboseMessage('Parsing project...', verbose);
|
|
107
|
-
const projectConfig = config.project;
|
|
108
|
-
if (!('windows' in projectConfig) || projectConfig.windows === null) {
|
|
109
|
-
throw new Error('Windows auto-link only supported on Windows app projects');
|
|
110
|
-
}
|
|
111
|
-
const windowsAppConfig = projectConfig.windows;
|
|
112
|
-
const templateRoot = resolveTemplateRoot(windowsAppConfig);
|
|
113
|
-
if (options.sln) {
|
|
114
|
-
const slnFile = path.join(windowsAppConfig.folder, options.sln);
|
|
115
|
-
windowsAppConfig.solutionFile = path.relative(path.join(windowsAppConfig.folder, windowsAppConfig.sourceDir), slnFile);
|
|
116
|
-
}
|
|
117
|
-
if (options.proj) {
|
|
118
|
-
const projFile = path.join(windowsAppConfig.folder, options.proj);
|
|
119
|
-
const projectContents = configUtils.readProjectFile(projFile);
|
|
120
|
-
windowsAppConfig.project = {
|
|
121
|
-
projectFile: path.relative(path.join(windowsAppConfig.folder, windowsAppConfig.sourceDir), projFile),
|
|
122
|
-
projectName: configUtils.getProjectName(projectContents),
|
|
123
|
-
projectLang: configUtils.getProjectLanguage(projFile),
|
|
124
|
-
projectGuid: configUtils.getProjectGuid(projectContents),
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
verboseMessage('Found Windows app project, config:', verbose);
|
|
128
|
-
verboseMessage(windowsAppConfig, verbose);
|
|
129
|
-
const alwaysRequired = [
|
|
130
|
-
'folder',
|
|
131
|
-
'sourceDir',
|
|
132
|
-
'solutionFile',
|
|
133
|
-
'project',
|
|
134
|
-
];
|
|
135
|
-
alwaysRequired.forEach(item => {
|
|
136
|
-
if (!(item in windowsAppConfig) || windowsAppConfig[item] === null) {
|
|
137
|
-
throw new Error(`${item} is required but not specified by react-native config`);
|
|
138
|
-
}
|
|
139
|
-
else if (typeof windowsAppConfig[item] === 'string' &&
|
|
140
|
-
windowsAppConfig[item].startsWith('Error: ')) {
|
|
141
|
-
throw new Error(`${item} invalid. ${windowsAppConfig[item]}`);
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
const solutionFile = path.join(windowsAppConfig.folder, windowsAppConfig.sourceDir, windowsAppConfig.solutionFile);
|
|
145
|
-
const windowsAppProjectConfig = windowsAppConfig.project;
|
|
146
|
-
const projectRequired = [
|
|
147
|
-
'projectFile',
|
|
148
|
-
'projectName',
|
|
149
|
-
'projectLang',
|
|
150
|
-
'projectGuid',
|
|
151
|
-
];
|
|
152
|
-
projectRequired.forEach(item => {
|
|
153
|
-
if (!(item in windowsAppProjectConfig) ||
|
|
154
|
-
windowsAppProjectConfig[item] === null) {
|
|
155
|
-
throw new Error(`project.${item} is required but not specified by react-native config`);
|
|
156
|
-
}
|
|
157
|
-
else if (typeof windowsAppProjectConfig[item] === 'string' &&
|
|
158
|
-
windowsAppProjectConfig[item].startsWith('Error: ')) {
|
|
159
|
-
throw new Error(`project.${item} invalid. ${windowsAppProjectConfig[item]}`);
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
const projectFile = path.join(windowsAppConfig.folder, windowsAppConfig.sourceDir, windowsAppConfig.project.projectFile);
|
|
163
|
-
const projectDir = path.dirname(projectFile);
|
|
164
|
-
const projectLang = windowsAppConfig.project.projectLang;
|
|
165
|
-
verboseMessage('Parsing dependencies...', verbose);
|
|
166
|
-
const dependenciesConfig = config.dependencies;
|
|
167
|
-
let windowsDependencies = {};
|
|
168
|
-
for (const dependencyName in dependenciesConfig) {
|
|
169
|
-
const windowsDependency = dependenciesConfig[dependencyName].platforms.windows;
|
|
170
|
-
if (windowsDependency) {
|
|
171
|
-
verboseMessage(`${chalk.bold(dependencyName)} has Windows implementation, config:`, verbose);
|
|
172
|
-
verboseMessage(windowsDependency, verbose);
|
|
173
|
-
var dependencyIsValid = true;
|
|
174
|
-
dependencyIsValid = !!(dependencyIsValid &&
|
|
175
|
-
'sourceDir' in windowsDependency &&
|
|
176
|
-
windowsDependency.sourceDir &&
|
|
177
|
-
!windowsDependency.sourceDir.startsWith('Error: '));
|
|
178
|
-
if ('projects' in windowsDependency &&
|
|
179
|
-
Array.isArray(windowsDependency.projects)) {
|
|
180
|
-
windowsDependency.projects.forEach(project => {
|
|
181
|
-
const itemsToCheck = [
|
|
182
|
-
'projectFile',
|
|
183
|
-
'directDependency',
|
|
184
|
-
];
|
|
185
|
-
itemsToCheck.forEach(item => {
|
|
186
|
-
dependencyIsValid = !!(dependencyIsValid &&
|
|
187
|
-
item in project &&
|
|
188
|
-
project[item] &&
|
|
189
|
-
!project[item].toString().startsWith('Error: '));
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
if (dependencyIsValid) {
|
|
194
|
-
verboseMessage(`Adding ${chalk.bold(dependencyName)}.`, verbose);
|
|
195
|
-
windowsDependencies[dependencyName] = windowsDependency;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
// Generating cs/h files for app code consumption
|
|
200
|
-
if (projectLang === 'cs') {
|
|
201
|
-
let csUsingNamespaces = '';
|
|
202
|
-
let csReactPacakgeProviders = '';
|
|
203
|
-
for (const dependencyName in windowsDependencies) {
|
|
204
|
-
windowsDependencies[dependencyName].projects.forEach(project => {
|
|
205
|
-
if (project.directDependency) {
|
|
206
|
-
csUsingNamespaces += `\n\n// Namespaces from ${dependencyName}`;
|
|
207
|
-
project.csNamespaces.forEach(namespace => {
|
|
208
|
-
csUsingNamespaces += `\nusing ${namespace};`;
|
|
209
|
-
});
|
|
210
|
-
csReactPacakgeProviders += `\n // IReactPackageProviders from ${dependencyName}`;
|
|
211
|
-
project.csPackageProviders.forEach(packageProvider => {
|
|
212
|
-
csReactPacakgeProviders += `\n packageProviders.Add(new ${packageProvider}());`;
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
const csFileName = 'AutolinkedNativeModules.g.cs';
|
|
218
|
-
const srcCsFile = path.join(templateRoot, `${projectLang}-app`, 'src', csFileName);
|
|
219
|
-
const destCsFile = path.join(projectDir, csFileName);
|
|
220
|
-
verboseMessage(`Calculating ${chalk.bold(path.basename(destCsFile))}...`, verbose);
|
|
221
|
-
const csContents = getNormalizedContents(srcCsFile, {
|
|
222
|
-
autolinkCsUsingNamespaces: csUsingNamespaces,
|
|
223
|
-
autolinkCsReactPacakgeProviders: csReactPacakgeProviders,
|
|
224
|
-
});
|
|
225
|
-
changesNecessary =
|
|
226
|
-
updateFile(destCsFile, csContents, verbose, checkMode) ||
|
|
227
|
-
changesNecessary;
|
|
228
|
-
}
|
|
229
|
-
else if (projectLang === 'cpp') {
|
|
230
|
-
let cppIncludes = '';
|
|
231
|
-
let cppPackageProviders = '';
|
|
232
|
-
for (const dependencyName in windowsDependencies) {
|
|
233
|
-
windowsDependencies[dependencyName].projects.forEach(project => {
|
|
234
|
-
if (project.directDependency) {
|
|
235
|
-
cppIncludes += `\n\n// Includes from ${dependencyName}`;
|
|
236
|
-
project.cppHeaders.forEach(header => {
|
|
237
|
-
cppIncludes += `\n#include <${header}>`;
|
|
238
|
-
});
|
|
239
|
-
cppPackageProviders += `\n // IReactPackageProviders from ${dependencyName}`;
|
|
240
|
-
project.cppPackageProviders.forEach(packageProvider => {
|
|
241
|
-
cppPackageProviders += `\n packageProviders.Append(winrt::${packageProvider}());`;
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
if (cppPackageProviders === '') {
|
|
247
|
-
// There are no windows dependencies, this would result in warning. C4100: 'packageProviders': unreferenced formal parameter.
|
|
248
|
-
// therefore add a usage.
|
|
249
|
-
cppPackageProviders = '\n UNREFERENCED_PARAMETER(packageProviders);'; // CODESYNC: vnext\local-cli\generator-windows\index.js
|
|
250
|
-
}
|
|
251
|
-
const cppFileName = 'AutolinkedNativeModules.g.cpp';
|
|
252
|
-
const srcCppFile = path.join(templateRoot, `${projectLang}-app`, 'src', cppFileName);
|
|
253
|
-
const destCppFile = path.join(projectDir, cppFileName);
|
|
254
|
-
verboseMessage(`Calculating ${chalk.bold(path.basename(destCppFile))}...`, verbose);
|
|
255
|
-
const cppContents = getNormalizedContents(srcCppFile, {
|
|
256
|
-
autolinkCppIncludes: cppIncludes,
|
|
257
|
-
autolinkCppPackageProviders: cppPackageProviders,
|
|
258
|
-
});
|
|
259
|
-
changesNecessary =
|
|
260
|
-
updateFile(destCppFile, cppContents, verbose, checkMode) ||
|
|
261
|
-
changesNecessary;
|
|
262
|
-
}
|
|
263
|
-
// Generating targets for app project consumption
|
|
264
|
-
let projectReferencesForTargets = '';
|
|
265
|
-
for (const dependencyName in windowsDependencies) {
|
|
266
|
-
windowsDependencies[dependencyName].projects.forEach(project => {
|
|
267
|
-
if (project.directDependency) {
|
|
268
|
-
const dependencyProjectFile = path.join(windowsDependencies[dependencyName].folder, windowsDependencies[dependencyName].sourceDir, project.projectFile);
|
|
269
|
-
const relDependencyProjectFile = path.relative(projectDir, dependencyProjectFile);
|
|
270
|
-
projectReferencesForTargets += `\n <!-- Projects from ${dependencyName} -->`;
|
|
271
|
-
projectReferencesForTargets += `\n <ProjectReference Include="$(ProjectDir)${relDependencyProjectFile}">
|
|
272
|
-
<Project>${project.projectGuid}</Project>
|
|
273
|
-
</ProjectReference>`;
|
|
274
|
-
}
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
const targetFileName = 'AutolinkedNativeModules.g.targets';
|
|
278
|
-
const srcTargetFile = path.join(templateRoot, `${projectLang}-app`, 'src', targetFileName);
|
|
279
|
-
const destTargetFile = path.join(projectDir, targetFileName);
|
|
280
|
-
verboseMessage(`Calculating ${chalk.bold(path.basename(destTargetFile))}...`, verbose);
|
|
281
|
-
const targetContents = getNormalizedContents(srcTargetFile, {
|
|
282
|
-
autolinkProjectReferencesForTargets: projectReferencesForTargets,
|
|
283
|
-
});
|
|
284
|
-
changesNecessary =
|
|
285
|
-
updateFile(destTargetFile, targetContents, verbose, checkMode) ||
|
|
286
|
-
changesNecessary;
|
|
287
|
-
// Generating project entries for solution
|
|
288
|
-
let projectsForSolution = [];
|
|
289
|
-
for (const dependencyName in windowsDependencies) {
|
|
290
|
-
// Process projects
|
|
291
|
-
windowsDependencies[dependencyName].projects.forEach(project => {
|
|
292
|
-
const dependencyProjectFile = path.join(windowsDependencies[dependencyName].folder, windowsDependencies[dependencyName].sourceDir, project.projectFile);
|
|
293
|
-
projectsForSolution.push({
|
|
294
|
-
projectFile: dependencyProjectFile,
|
|
295
|
-
projectName: project.projectName,
|
|
296
|
-
projectLang: project.projectLang,
|
|
297
|
-
projectGuid: project.projectGuid,
|
|
298
|
-
});
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
verboseMessage(`Calculating ${chalk.bold(path.basename(solutionFile))} changes...`, verbose);
|
|
302
|
-
projectsForSolution.forEach(project => {
|
|
303
|
-
const contentsChanged = vstools.addProjectToSolution(solutionFile, project, verbose, checkMode);
|
|
304
|
-
changesNecessary = changesNecessary || contentsChanged;
|
|
305
|
-
});
|
|
306
|
-
spinner.succeed();
|
|
307
|
-
var endTime = perf_hooks_1.performance.now();
|
|
308
|
-
if (!changesNecessary) {
|
|
309
|
-
console.log(`${chalk.green('Success:')} No auto-linking changes necessary. (${Math.round(endTime - startTime)}ms)`);
|
|
310
|
-
}
|
|
311
|
-
else if (checkMode) {
|
|
312
|
-
console.log(`${chalk.yellow('Warning:')} Auto-linking changes were necessary but ${chalk.bold('--check')} specified. Run ${chalk.bold("'npx react-native autolink-windows'")} to apply the changes. (${Math.round(endTime - startTime)}ms)`);
|
|
313
|
-
exitProcessWithStatusCode(0, verbose);
|
|
314
|
-
}
|
|
315
|
-
else {
|
|
316
|
-
console.log(`${chalk.green('Success:')} Auto-linking changes completed. (${Math.round(endTime - startTime)}ms)`);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
catch (e) {
|
|
320
|
-
spinner.fail();
|
|
321
|
-
var endTime = perf_hooks_1.performance.now();
|
|
322
|
-
console.log(`${chalk.red('Error:')} ${e.toString()}. (${Math.round(endTime - startTime)}ms)`);
|
|
323
|
-
exitProcessWithStatusCode(1, verbose);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
exports.autoLinkCommand = {
|
|
327
|
-
name: 'autolink-windows',
|
|
328
|
-
description: 'performs autolinking',
|
|
329
|
-
func: updateAutoLink,
|
|
330
|
-
options: [
|
|
331
|
-
{
|
|
332
|
-
name: '--logging',
|
|
333
|
-
description: 'Verbose output logging',
|
|
334
|
-
default: false,
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
name: '--check',
|
|
338
|
-
description: 'Only check whether any autolinked files need to change',
|
|
339
|
-
default: false,
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
name: '--sln [string]',
|
|
343
|
-
description: "Override the app solution file determined by 'react-native config', e.g. windows\\myApp.sln",
|
|
344
|
-
default: undefined,
|
|
345
|
-
},
|
|
346
|
-
{
|
|
347
|
-
name: '--proj [string]',
|
|
348
|
-
description: "Override the app project file determined by 'react-native config', e.g. windows\\myApp\\myApp.vcxproj",
|
|
349
|
-
default: undefined,
|
|
350
|
-
},
|
|
351
|
-
],
|
|
352
|
-
};
|
|
353
|
-
//# sourceMappingURL=autolink.js.map
|