@react-native-windows/cli 0.74.0 → 0.75.0-preview.1

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.
@@ -14,7 +14,7 @@ exports.HealthCheckList = [
14
14
  [true, 'DeveloperMode', 'Developer mode is on'],
15
15
  [true, 'LongPath', 'Long path support is enabled'],
16
16
  [true, 'VSUWP', 'Visual Studio 2022 (>= 17.9) & req. components'],
17
- [true, 'Node', 'Node.js (LTS, >= 18.0)'],
17
+ [true, 'Node', 'Node.js (LTS, >= 18.18)'],
18
18
  [true, 'Yarn', 'Yarn'],
19
19
  [true, 'DotNetCore', '.NET SDK (LTS, = 6.0)'],
20
20
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"healthCheckList.js","sourceRoot":"","sources":["../../../src/commands/healthCheck/healthCheckList.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,0GAA0G;AAC7F,QAAA,eAAe,GAAG;IAC7B,CAAC,KAAK,EAAE,WAAW,EAAE,qCAAqC,CAAC;IAC3D,CAAC,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,CAAC;IACvD,CAAC,IAAI,EAAE,gBAAgB,EAAE,iCAAiC,CAAC;IAC3D,CAAC,IAAI,EAAE,eAAe,EAAE,sBAAsB,CAAC;IAC/C,CAAC,IAAI,EAAE,UAAU,EAAE,8BAA8B,CAAC;IAClD,CAAC,IAAI,EAAE,OAAO,EAAE,gDAAgD,CAAC;IACjE,CAAC,IAAI,EAAE,MAAM,EAAE,wBAAwB,CAAC;IACxC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACtB,CAAC,IAAI,EAAE,YAAY,EAAE,uBAAuB,CAAC;CAC9C,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n// Store list of health checks here to avoid having to launch PowerShell on every react-native config call\nexport const HealthCheckList = [\n [false, 'FreeSpace', 'Free space on current drive > 15 GB'],\n [false, 'InstalledMemory', 'Installed memory >= 16 GB'],\n [true, 'WindowsVersion', 'Windows version >= 10.0.17763.0'],\n [true, 'DeveloperMode', 'Developer mode is on'],\n [true, 'LongPath', 'Long path support is enabled'],\n [true, 'VSUWP', 'Visual Studio 2022 (>= 17.9) & req. components'],\n [true, 'Node', 'Node.js (LTS, >= 18.0)'],\n [true, 'Yarn', 'Yarn'],\n [true, 'DotNetCore', '.NET SDK (LTS, = 6.0)'],\n];\n"]}
1
+ {"version":3,"file":"healthCheckList.js","sourceRoot":"","sources":["../../../src/commands/healthCheck/healthCheckList.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,0GAA0G;AAC7F,QAAA,eAAe,GAAG;IAC7B,CAAC,KAAK,EAAE,WAAW,EAAE,qCAAqC,CAAC;IAC3D,CAAC,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,CAAC;IACvD,CAAC,IAAI,EAAE,gBAAgB,EAAE,iCAAiC,CAAC;IAC3D,CAAC,IAAI,EAAE,eAAe,EAAE,sBAAsB,CAAC;IAC/C,CAAC,IAAI,EAAE,UAAU,EAAE,8BAA8B,CAAC;IAClD,CAAC,IAAI,EAAE,OAAO,EAAE,gDAAgD,CAAC;IACjE,CAAC,IAAI,EAAE,MAAM,EAAE,yBAAyB,CAAC;IACzC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACtB,CAAC,IAAI,EAAE,YAAY,EAAE,uBAAuB,CAAC;CAC9C,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n// Store list of health checks here to avoid having to launch PowerShell on every react-native config call\nexport const HealthCheckList = [\n [false, 'FreeSpace', 'Free space on current drive > 15 GB'],\n [false, 'InstalledMemory', 'Installed memory >= 16 GB'],\n [true, 'WindowsVersion', 'Windows version >= 10.0.17763.0'],\n [true, 'DeveloperMode', 'Developer mode is on'],\n [true, 'LongPath', 'Long path support is enabled'],\n [true, 'VSUWP', 'Visual Studio 2022 (>= 17.9) & req. components'],\n [true, 'Node', 'Node.js (LTS, >= 18.18)'],\n [true, 'Yarn', 'Yarn'],\n [true, 'DotNetCore', '.NET SDK (LTS, = 6.0)'],\n];\n"]}
@@ -61,7 +61,7 @@ class InitWindows {
61
61
  for (const file of await glob('**/template.config.js', {
62
62
  cwd: templatesRoot,
63
63
  })) {
64
- const templateName = path_1.default.dirname(file).replace('\\', '/');
64
+ const templateName = path_1.default.dirname(file).replace(/[\\]/g, '/');
65
65
  const templateConfig = require(path_1.default.join(templatesRoot, file));
66
66
  this.templates.set(templateName, templateConfig);
67
67
  }
@@ -113,7 +113,7 @@ class InitWindows {
113
113
  spinner.info();
114
114
  (_a = (_c = this.options).template) !== null && _a !== void 0 ? _a : (_c.template = this.getDefaultTemplateName());
115
115
  spinner.info(`Using template '${this.options.template}'...`);
116
- if (!this.templates.has(this.options.template.replace('\\', '/'))) {
116
+ if (!this.templates.has(this.options.template.replace(/[\\]/g, '/'))) {
117
117
  throw new telemetry_1.CodedError('InvalidTemplateName', `Unable to find template '${this.options.template}'.`);
118
118
  }
119
119
  const templateConfig = this.templates.get(this.options.template);
@@ -1 +1 @@
1
- {"version":3,"file":"initWindows.js","sourceRoot":"","sources":["../../../src/commands/initWindows/initWindows.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport {glob as globFunc} from 'glob';\nimport _ from 'lodash';\nimport {performance} from 'perf_hooks';\nimport {Ora} from 'ora';\nimport util from 'util';\n\nconst glob = util.promisify(globFunc);\n\nimport {Command, Config} from '@react-native-community/cli-types';\nimport {CodedError, Telemetry} from '@react-native-windows/telemetry';\n\nimport {\n newSpinner,\n setExitProcessWithError,\n} from '../../utils/commandWithProgress';\nimport * as pathHelpers from '../../utils/pathHelpers';\nimport {\n getDefaultOptions,\n startTelemetrySession,\n endTelemetrySession,\n} from '../../utils/telemetryHelpers';\nimport {copyAndReplaceWithChangedCallback} from '../../generator-common';\nimport {InitOptions, initOptions} from './initWindowsOptions';\n\nexport interface TemplateFileMapping {\n from: string;\n to: string;\n replacements?: Record<string, any>;\n}\n\nexport interface InitWindowsTemplateConfig {\n name: string;\n description: string;\n isDefault?: boolean;\n preInstall?: (config: Config, options: InitOptions) => Promise<void>;\n getFileMappings?: (\n config: Config,\n options: InitOptions,\n ) => Promise<TemplateFileMapping[]>;\n postInstall?: (config: Config, options: InitOptions) => Promise<void>;\n}\n\nexport class InitWindows {\n protected readonly rnwPath: string;\n protected readonly templates: Map<string, InitWindowsTemplateConfig> =\n new Map();\n\n constructor(readonly config: Config, readonly options: InitOptions) {\n this.rnwPath = pathHelpers.resolveRnwRoot(this.config.root);\n }\n\n protected verboseMessage(message: any) {\n verboseMessage(message, !!this.options.logging);\n }\n\n protected async loadTemplates() {\n const templatesRoot = path.join(this.rnwPath, 'templates');\n for (const file of await glob('**/template.config.js', {\n cwd: templatesRoot,\n })) {\n const templateName = path.dirname(file).replace('\\\\', '/');\n const templateConfig: InitWindowsTemplateConfig = require(path.join(\n templatesRoot,\n file,\n ));\n this.templates.set(templateName, templateConfig);\n }\n if (this.templates.size === 0) {\n throw new CodedError(\n 'NoTemplatesFound',\n `No templates were found in ${templatesRoot}.`,\n );\n }\n }\n\n protected getDefaultTemplateName(): string {\n for (const [name, config] of this.templates) {\n if (config.isDefault) {\n return name;\n }\n }\n throw new CodedError(\n 'NoDefaultTemplate',\n 'No template specified and no default template found.',\n );\n }\n\n protected pascalCase(str: string): string {\n const camelCase = _.camelCase(str);\n return camelCase[0].toUpperCase() + camelCase.substr(1);\n }\n\n protected isValidProjectName(name: string): boolean {\n if (name.match(/^[a-z][a-z0-9]*$/gi)) {\n return true;\n }\n return false;\n }\n\n protected getReactNativeProjectName(projectDir: string): string {\n this.verboseMessage('Looking for project name in package.json...');\n const pkgJsonPath = path.join(projectDir, 'package.json');\n if (!fs.existsSync(pkgJsonPath)) {\n throw new CodedError(\n 'NoPackageJson',\n 'Unable to find package.json. This should be run from within an existing react-native project.',\n );\n }\n type PackageJson = {name: string};\n\n let name = fs.readJsonFileSync<PackageJson>(pkgJsonPath).name;\n if (!name) {\n const appJsonPath = path.join(projectDir, 'app.json');\n if (fs.existsSync(appJsonPath)) {\n this.verboseMessage('Looking for project name in app.json...');\n name = fs.readJsonFileSync<PackageJson>(pkgJsonPath).name;\n }\n }\n\n if (!name) {\n throw new CodedError(\n 'NoProjectName',\n 'Please specify name in package.json or app.json',\n );\n }\n\n return name;\n }\n\n public async run(spinner: Ora) {\n await this.loadTemplates();\n\n spinner.info();\n\n this.options.template ??= this.getDefaultTemplateName();\n\n spinner.info(`Using template '${this.options.template}'...`);\n if (!this.templates.has(this.options.template.replace('\\\\', '/'))) {\n throw new CodedError(\n 'InvalidTemplateName',\n `Unable to find template '${this.options.template}'.`,\n );\n }\n const templateConfig = this.templates.get(this.options.template)!;\n\n if (this.options.name && !this.isValidProjectName(this.options.name)) {\n throw new CodedError(\n 'InvalidProjectName',\n `The specified name is not a valid identifier`,\n );\n }\n\n if (!this.options.name) {\n const projectName = this.getReactNativeProjectName(this.config.root);\n this.options.name = this.isValidProjectName(projectName)\n ? projectName\n : this.pascalCase(projectName);\n }\n\n this.options.namespace ??= this.options.name;\n\n if (templateConfig.preInstall) {\n spinner.info(`Running ${this.options.template} preInstall()...`);\n await templateConfig.preInstall(this.config, this.options);\n }\n\n // Get template files to copy and copy if available\n if (templateConfig.getFileMappings) {\n const fileMappings = await templateConfig.getFileMappings(\n this.config,\n this.options,\n );\n\n for (const fileMapping of fileMappings) {\n const targetDir = path.join(\n this.config.root,\n path.dirname(fileMapping.to),\n );\n\n if (!(await fs.exists(targetDir))) {\n await fs.mkdir(targetDir, {recursive: true});\n }\n\n await copyAndReplaceWithChangedCallback(\n fileMapping.from,\n this.config.root,\n fileMapping.to,\n fileMapping.replacements,\n this.options.overwrite,\n );\n }\n }\n\n if (templateConfig.postInstall) {\n spinner.info(`Running ${this.options.template} postInstall()...`);\n await templateConfig.postInstall(this.config, this.options);\n }\n\n spinner.succeed();\n }\n}\n\n/**\n * Logs the given message if verbose is True.\n * @param message The message to log.\n * @param verbose Whether or not verbose logging is enabled.\n */\nfunction verboseMessage(message: any, verbose?: boolean) {\n if (verbose) {\n console.log(message);\n }\n}\n\n/**\n * Sanitizes the given option for telemetry.\n * @param key The key of the option.\n * @param value The unsanitized value of the option.\n * @returns The sanitized value of the option.\n */\nfunction optionSanitizer(key: keyof InitOptions, value: any): any {\n // Do not add a default case here.\n // Strings risking PII should just return true if present, false otherwise.\n // All others should return the value (or false if undefined).\n switch (key) {\n case 'name':\n case 'namespace':\n return value === undefined ? false : true; // Strip PII\n case 'logging':\n case 'template':\n case 'overwrite':\n case 'telemetry':\n return value === undefined ? false : value; // Return value\n }\n}\n\n/**\n * Get the extra props to add to the `init-windows` telemetry event.\n * @returns The extra props.\n */\nasync function getExtraProps(): Promise<Record<string, any>> {\n const extraProps: Record<string, any> = {};\n return extraProps;\n}\n\n/**\n * The function run when calling `react-native init-windows`.\n * @param args Unprocessed args passed from react-native CLI.\n * @param config Config passed from react-native CLI.\n * @param options Options passed from react-native CLI.\n */\nasync function initWindows(\n args: string[],\n config: Config,\n options: InitOptions,\n) {\n await startTelemetrySession(\n 'init-windows',\n config,\n options,\n getDefaultOptions(config, initOptions),\n optionSanitizer,\n );\n\n let initWindowsError: Error | undefined;\n try {\n await initWindowsInternal(args, config, options);\n } catch (ex) {\n initWindowsError =\n ex instanceof Error ? (ex as Error) : new Error(String(ex));\n Telemetry.trackException(initWindowsError);\n }\n\n await endTelemetrySession(initWindowsError, getExtraProps);\n setExitProcessWithError(options.logging, initWindowsError);\n}\n\n/**\n * Initializes a new RNW project from a given template.\n * @param args Unprocessed args passed from react-native CLI.\n * @param config Config passed from react-native CLI.\n * @param options Options passed from react-native CLI.\n */\nexport async function initWindowsInternal(\n args: string[],\n config: Config,\n options: InitOptions,\n) {\n const startTime = performance.now();\n const spinner = newSpinner('Running init-windows...');\n try {\n const codegen = new InitWindows(config, options);\n await codegen.run(spinner);\n const endTime = performance.now();\n\n console.log(\n `${chalk.green('Success:')} init-windows completed. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n } catch (e) {\n spinner.fail();\n const endTime = performance.now();\n console.log(\n `${chalk.red('Error:')} ${(e as any).toString()}. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n throw e;\n }\n}\n\n/**\n * Initializes a new RNW project from a given template.\n */\nexport const initCommand: Command = {\n name: 'init-windows',\n description: 'Initializes a new RNW project from a given template.',\n func: initWindows,\n options: initOptions,\n};\n"]}
1
+ {"version":3,"file":"initWindows.js","sourceRoot":"","sources":["../../../src/commands/initWindows/initWindows.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,kEAA0C;AAC1C,gDAAwB;AACxB,kDAA0B;AAC1B,+BAAsC;AACtC,oDAAuB;AACvB,2CAAuC;AAEvC,gDAAwB;AAExB,MAAM,IAAI,GAAG,cAAI,CAAC,SAAS,CAAC,WAAQ,CAAC,CAAC;AAGtC,+DAAsE;AAEtE,yEAGyC;AACzC,qEAAuD;AACvD,mEAIsC;AACtC,6DAAyE;AACzE,6DAA8D;AAoB9D,MAAa,WAAW;IAKtB,YAAqB,MAAc,EAAW,OAAoB;QAA7C,WAAM,GAAN,MAAM,CAAQ;QAAW,YAAO,GAAP,OAAO,CAAa;QAH/C,cAAS,GAC1B,IAAI,GAAG,EAAE,CAAC;QAGV,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAES,cAAc,CAAC,OAAY;QACnC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAES,KAAK,CAAC,aAAa;QAC3B,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC3D,KAAK,MAAM,IAAI,IAAI,MAAM,IAAI,CAAC,uBAAuB,EAAE;YACrD,GAAG,EAAE,aAAa;SACnB,CAAC,EAAE;YACF,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC9D,MAAM,cAAc,GAA8B,OAAO,CAAC,cAAI,CAAC,IAAI,CACjE,aAAa,EACb,IAAI,CACL,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;SAClD;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;YAC7B,MAAM,IAAI,sBAAU,CAClB,kBAAkB,EAClB,8BAA8B,aAAa,GAAG,CAC/C,CAAC;SACH;IACH,CAAC;IAES,sBAAsB;QAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YAC3C,IAAI,MAAM,CAAC,SAAS,EAAE;gBACpB,OAAO,IAAI,CAAC;aACb;SACF;QACD,MAAM,IAAI,sBAAU,CAClB,mBAAmB,EACnB,sDAAsD,CACvD,CAAC;IACJ,CAAC;IAES,UAAU,CAAC,GAAW;QAC9B,MAAM,SAAS,GAAG,gBAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAES,kBAAkB,CAAC,IAAY;QACvC,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,yBAAyB,CAAC,UAAkB;QACpD,IAAI,CAAC,cAAc,CAAC,6CAA6C,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YAC/B,MAAM,IAAI,sBAAU,CAClB,eAAe,EACf,+FAA+F,CAChG,CAAC;SACH;QAGD,IAAI,IAAI,GAAG,YAAE,CAAC,gBAAgB,CAAc,WAAW,CAAC,CAAC,IAAI,CAAC;QAC9D,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACtD,IAAI,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;gBAC9B,IAAI,CAAC,cAAc,CAAC,yCAAyC,CAAC,CAAC;gBAC/D,IAAI,GAAG,YAAE,CAAC,gBAAgB,CAAc,WAAW,CAAC,CAAC,IAAI,CAAC;aAC3D;SACF;QAED,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,sBAAU,CAClB,eAAe,EACf,iDAAiD,CAClD,CAAC;SACH;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,OAAY;;;QAC3B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,YAAA,IAAI,CAAC,OAAO,EAAC,QAAQ,uCAAR,QAAQ,GAAK,IAAI,CAAC,sBAAsB,EAAE,EAAC;QAExD,OAAO,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE;YACpE,MAAM,IAAI,sBAAU,CAClB,qBAAqB,EACrB,4BAA4B,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CACtD,CAAC;SACH;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAE,CAAC;QAElE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpE,MAAM,IAAI,sBAAU,CAClB,oBAAoB,EACpB,8CAA8C,CAC/C,CAAC;SACH;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;gBACtD,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;SAClC;QAED,YAAA,IAAI,CAAC,OAAO,EAAC,SAAS,uCAAT,SAAS,GAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAC;QAE7C,IAAI,cAAc,CAAC,UAAU,EAAE;YAC7B,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,kBAAkB,CAAC,CAAC;YACjE,MAAM,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5D;QAED,mDAAmD;QACnD,IAAI,cAAc,CAAC,eAAe,EAAE;YAClC,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,eAAe,CACvD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,CACb,CAAC;YAEF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;gBACtC,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CACzB,IAAI,CAAC,MAAM,CAAC,IAAI,EAChB,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAC7B,CAAC;gBAEF,IAAI,CAAC,CAAC,MAAM,YAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;oBACjC,MAAM,YAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;iBAC9C;gBAED,MAAM,IAAA,oDAAiC,EACrC,WAAW,CAAC,IAAI,EAChB,IAAI,CAAC,MAAM,CAAC,IAAI,EAChB,WAAW,CAAC,EAAE,EACd,WAAW,CAAC,YAAY,EACxB,IAAI,CAAC,OAAO,CAAC,SAAS,CACvB,CAAC;aACH;SACF;QAED,IAAI,cAAc,CAAC,WAAW,EAAE;YAC9B,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,mBAAmB,CAAC,CAAC;YAClE,MAAM,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC7D;QAED,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;CACF;AA9JD,kCA8JC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,OAAY,EAAE,OAAiB;IACrD,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACtB;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,GAAsB,EAAE,KAAU;IACzD,kCAAkC;IAClC,2EAA2E;IAC3E,8DAA8D;IAC9D,QAAQ,GAAG,EAAE;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW;YACd,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY;QACzD,KAAK,SAAS,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe;KAC9D;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,aAAa;IAC1B,MAAM,UAAU,GAAwB,EAAE,CAAC;IAC3C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,WAAW,CACxB,IAAc,EACd,MAAc,EACd,OAAoB;IAEpB,MAAM,IAAA,wCAAqB,EACzB,cAAc,EACd,MAAM,EACN,OAAO,EACP,IAAA,oCAAiB,EAAC,MAAM,EAAE,gCAAW,CAAC,EACtC,eAAe,CAChB,CAAC;IAEF,IAAI,gBAAmC,CAAC;IACxC,IAAI;QACF,MAAM,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAClD;IAAC,OAAO,EAAE,EAAE;QACX,gBAAgB;YACd,EAAE,YAAY,KAAK,CAAC,CAAC,CAAE,EAAY,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,qBAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;KAC5C;IAED,MAAM,IAAA,sCAAmB,EAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC3D,IAAA,6CAAuB,EAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,mBAAmB,CACvC,IAAc,EACd,MAAc,EACd,OAAoB;IAEpB,MAAM,SAAS,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,IAAA,gCAAU,EAAC,yBAAyB,CAAC,CAAC;IACtD,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAC;QAElC,OAAO,CAAC,GAAG,CACT,GAAG,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,6BAA6B,IAAI,CAAC,KAAK,CAC/D,OAAO,GAAG,SAAS,CACpB,KAAK,CACP,CAAC;KACH;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CACT,GAAG,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAK,CAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK,CAC7D,OAAO,GAAG,SAAS,CACpB,KAAK,CACP,CAAC;QACF,MAAM,CAAC,CAAC;KACT;AACH,CAAC;AA3BD,kDA2BC;AAED;;GAEG;AACU,QAAA,WAAW,GAAY;IAClC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,sDAAsD;IACnE,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,gCAAW;CACrB,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport {glob as globFunc} from 'glob';\nimport _ from 'lodash';\nimport {performance} from 'perf_hooks';\nimport {Ora} from 'ora';\nimport util from 'util';\n\nconst glob = util.promisify(globFunc);\n\nimport {Command, Config} from '@react-native-community/cli-types';\nimport {CodedError, Telemetry} from '@react-native-windows/telemetry';\n\nimport {\n newSpinner,\n setExitProcessWithError,\n} from '../../utils/commandWithProgress';\nimport * as pathHelpers from '../../utils/pathHelpers';\nimport {\n getDefaultOptions,\n startTelemetrySession,\n endTelemetrySession,\n} from '../../utils/telemetryHelpers';\nimport {copyAndReplaceWithChangedCallback} from '../../generator-common';\nimport {InitOptions, initOptions} from './initWindowsOptions';\n\nexport interface TemplateFileMapping {\n from: string;\n to: string;\n replacements?: Record<string, any>;\n}\n\nexport interface InitWindowsTemplateConfig {\n name: string;\n description: string;\n isDefault?: boolean;\n preInstall?: (config: Config, options: InitOptions) => Promise<void>;\n getFileMappings?: (\n config: Config,\n options: InitOptions,\n ) => Promise<TemplateFileMapping[]>;\n postInstall?: (config: Config, options: InitOptions) => Promise<void>;\n}\n\nexport class InitWindows {\n protected readonly rnwPath: string;\n protected readonly templates: Map<string, InitWindowsTemplateConfig> =\n new Map();\n\n constructor(readonly config: Config, readonly options: InitOptions) {\n this.rnwPath = pathHelpers.resolveRnwRoot(this.config.root);\n }\n\n protected verboseMessage(message: any) {\n verboseMessage(message, !!this.options.logging);\n }\n\n protected async loadTemplates() {\n const templatesRoot = path.join(this.rnwPath, 'templates');\n for (const file of await glob('**/template.config.js', {\n cwd: templatesRoot,\n })) {\n const templateName = path.dirname(file).replace(/[\\\\]/g, '/');\n const templateConfig: InitWindowsTemplateConfig = require(path.join(\n templatesRoot,\n file,\n ));\n this.templates.set(templateName, templateConfig);\n }\n if (this.templates.size === 0) {\n throw new CodedError(\n 'NoTemplatesFound',\n `No templates were found in ${templatesRoot}.`,\n );\n }\n }\n\n protected getDefaultTemplateName(): string {\n for (const [name, config] of this.templates) {\n if (config.isDefault) {\n return name;\n }\n }\n throw new CodedError(\n 'NoDefaultTemplate',\n 'No template specified and no default template found.',\n );\n }\n\n protected pascalCase(str: string): string {\n const camelCase = _.camelCase(str);\n return camelCase[0].toUpperCase() + camelCase.substr(1);\n }\n\n protected isValidProjectName(name: string): boolean {\n if (name.match(/^[a-z][a-z0-9]*$/gi)) {\n return true;\n }\n return false;\n }\n\n protected getReactNativeProjectName(projectDir: string): string {\n this.verboseMessage('Looking for project name in package.json...');\n const pkgJsonPath = path.join(projectDir, 'package.json');\n if (!fs.existsSync(pkgJsonPath)) {\n throw new CodedError(\n 'NoPackageJson',\n 'Unable to find package.json. This should be run from within an existing react-native project.',\n );\n }\n type PackageJson = {name: string};\n\n let name = fs.readJsonFileSync<PackageJson>(pkgJsonPath).name;\n if (!name) {\n const appJsonPath = path.join(projectDir, 'app.json');\n if (fs.existsSync(appJsonPath)) {\n this.verboseMessage('Looking for project name in app.json...');\n name = fs.readJsonFileSync<PackageJson>(pkgJsonPath).name;\n }\n }\n\n if (!name) {\n throw new CodedError(\n 'NoProjectName',\n 'Please specify name in package.json or app.json',\n );\n }\n\n return name;\n }\n\n public async run(spinner: Ora) {\n await this.loadTemplates();\n\n spinner.info();\n\n this.options.template ??= this.getDefaultTemplateName();\n\n spinner.info(`Using template '${this.options.template}'...`);\n if (!this.templates.has(this.options.template.replace(/[\\\\]/g, '/'))) {\n throw new CodedError(\n 'InvalidTemplateName',\n `Unable to find template '${this.options.template}'.`,\n );\n }\n const templateConfig = this.templates.get(this.options.template)!;\n\n if (this.options.name && !this.isValidProjectName(this.options.name)) {\n throw new CodedError(\n 'InvalidProjectName',\n `The specified name is not a valid identifier`,\n );\n }\n\n if (!this.options.name) {\n const projectName = this.getReactNativeProjectName(this.config.root);\n this.options.name = this.isValidProjectName(projectName)\n ? projectName\n : this.pascalCase(projectName);\n }\n\n this.options.namespace ??= this.options.name;\n\n if (templateConfig.preInstall) {\n spinner.info(`Running ${this.options.template} preInstall()...`);\n await templateConfig.preInstall(this.config, this.options);\n }\n\n // Get template files to copy and copy if available\n if (templateConfig.getFileMappings) {\n const fileMappings = await templateConfig.getFileMappings(\n this.config,\n this.options,\n );\n\n for (const fileMapping of fileMappings) {\n const targetDir = path.join(\n this.config.root,\n path.dirname(fileMapping.to),\n );\n\n if (!(await fs.exists(targetDir))) {\n await fs.mkdir(targetDir, {recursive: true});\n }\n\n await copyAndReplaceWithChangedCallback(\n fileMapping.from,\n this.config.root,\n fileMapping.to,\n fileMapping.replacements,\n this.options.overwrite,\n );\n }\n }\n\n if (templateConfig.postInstall) {\n spinner.info(`Running ${this.options.template} postInstall()...`);\n await templateConfig.postInstall(this.config, this.options);\n }\n\n spinner.succeed();\n }\n}\n\n/**\n * Logs the given message if verbose is True.\n * @param message The message to log.\n * @param verbose Whether or not verbose logging is enabled.\n */\nfunction verboseMessage(message: any, verbose?: boolean) {\n if (verbose) {\n console.log(message);\n }\n}\n\n/**\n * Sanitizes the given option for telemetry.\n * @param key The key of the option.\n * @param value The unsanitized value of the option.\n * @returns The sanitized value of the option.\n */\nfunction optionSanitizer(key: keyof InitOptions, value: any): any {\n // Do not add a default case here.\n // Strings risking PII should just return true if present, false otherwise.\n // All others should return the value (or false if undefined).\n switch (key) {\n case 'name':\n case 'namespace':\n return value === undefined ? false : true; // Strip PII\n case 'logging':\n case 'template':\n case 'overwrite':\n case 'telemetry':\n return value === undefined ? false : value; // Return value\n }\n}\n\n/**\n * Get the extra props to add to the `init-windows` telemetry event.\n * @returns The extra props.\n */\nasync function getExtraProps(): Promise<Record<string, any>> {\n const extraProps: Record<string, any> = {};\n return extraProps;\n}\n\n/**\n * The function run when calling `react-native init-windows`.\n * @param args Unprocessed args passed from react-native CLI.\n * @param config Config passed from react-native CLI.\n * @param options Options passed from react-native CLI.\n */\nasync function initWindows(\n args: string[],\n config: Config,\n options: InitOptions,\n) {\n await startTelemetrySession(\n 'init-windows',\n config,\n options,\n getDefaultOptions(config, initOptions),\n optionSanitizer,\n );\n\n let initWindowsError: Error | undefined;\n try {\n await initWindowsInternal(args, config, options);\n } catch (ex) {\n initWindowsError =\n ex instanceof Error ? (ex as Error) : new Error(String(ex));\n Telemetry.trackException(initWindowsError);\n }\n\n await endTelemetrySession(initWindowsError, getExtraProps);\n setExitProcessWithError(options.logging, initWindowsError);\n}\n\n/**\n * Initializes a new RNW project from a given template.\n * @param args Unprocessed args passed from react-native CLI.\n * @param config Config passed from react-native CLI.\n * @param options Options passed from react-native CLI.\n */\nexport async function initWindowsInternal(\n args: string[],\n config: Config,\n options: InitOptions,\n) {\n const startTime = performance.now();\n const spinner = newSpinner('Running init-windows...');\n try {\n const codegen = new InitWindows(config, options);\n await codegen.run(spinner);\n const endTime = performance.now();\n\n console.log(\n `${chalk.green('Success:')} init-windows completed. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n } catch (e) {\n spinner.fail();\n const endTime = performance.now();\n console.log(\n `${chalk.red('Error:')} ${(e as any).toString()}. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n throw e;\n }\n}\n\n/**\n * Initializes a new RNW project from a given template.\n */\nexport const initCommand: Command = {\n name: 'init-windows',\n description: 'Initializes a new RNW project from a given template.',\n func: initWindows,\n options: initOptions,\n};\n"]}
@@ -120,6 +120,7 @@ async function copyProjectTemplateAndReplace(srcRootPath, destPath, newProjectNa
120
120
  // packaging and signing variables:
121
121
  packageGuid: packageGuid,
122
122
  currentUser: currentUser,
123
+ devMode: options.useDevMode,
123
124
  useExperimentalNuget: options.experimentalNuGetDependency,
124
125
  nuGetTestFeed: options.nuGetTestFeed,
125
126
  nuGetADOFeed: nugetVersion.startsWith('0.0.0-'),
@@ -141,9 +142,7 @@ async function copyProjectTemplateAndReplace(srcRootPath, destPath, newProjectNa
141
142
  ? [
142
143
  // app common mappings
143
144
  {
144
- from: path_1.default.join(srcRootPath, options.useDevMode
145
- ? 'metro.devMode.config.js'
146
- : 'metro.config.js'),
145
+ from: path_1.default.join(srcRootPath, 'metro.config.js'),
147
146
  to: 'metro.config.js',
148
147
  },
149
148
  {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator-windows/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport chalk from 'chalk';\nimport path from 'path';\nimport username from 'username';\nimport uuid from 'uuid';\nimport childProcess from 'child_process';\nimport fs from '@react-native-windows/fs';\nimport semver from 'semver';\nimport _ from 'lodash';\nimport findUp from 'find-up';\nimport {\n readProjectFile,\n findPropertyValue,\n tryFindPropertyValueAsBoolean,\n} from '../commands/config/configUtils';\n\nimport {\n createDir,\n copyAndReplaceAll,\n copyAndReplaceWithChangedCallback,\n} from '../generator-common';\nimport {GenerateOptions} from '..';\nimport {\n CodedError,\n getVersionOfNpmPackage,\n} from '@react-native-windows/telemetry';\nimport {\n findPackage,\n WritableNpmPackage,\n} from '@react-native-windows/package-utils';\n\nconst windowsDir = 'windows';\nconst bundleDir = 'Bundle';\n\n/**\n * This represents the data to insert nuget packages\n */\ninterface NugetPackage {\n id: string;\n version: string;\n privateAssets: boolean;\n}\n\nfunction pascalCase(str: string) {\n const camelCase = _.camelCase(str);\n return camelCase[0].toUpperCase() + camelCase.substr(1);\n}\n\nfunction resolveRnwPath(subpath: string): string {\n return require.resolve(path.join('react-native-windows', subpath), {\n paths: [process.cwd()],\n });\n}\n\n// Existing high cyclomatic complexity\n// eslint-disable-next-line complexity\nexport async function copyProjectTemplateAndReplace(\n srcRootPath: string,\n destPath: string,\n newProjectName: string,\n namespace: string,\n options: GenerateOptions,\n) {\n if (!srcRootPath) {\n throw new CodedError(\n 'CopyProjectTemplateNoSourcePath',\n 'Need a path to copy from',\n );\n }\n\n if (!destPath) {\n throw new CodedError(\n 'CopyProjectTemplateNoDestPath',\n 'Need a path to copy to',\n );\n }\n\n if (!newProjectName) {\n throw new CodedError(\n 'CopyProjectTemplateNoProjectName',\n 'Need a project name',\n );\n }\n\n const projectType = options.projectType;\n const language = options.language;\n\n // React-native init only allows alphanumerics in project names, but other\n // new project tools (like create-react-native-module) are less strict.\n if (projectType === 'lib') {\n newProjectName = pascalCase(newProjectName);\n }\n\n // Similar to the above, but we want to retain namespace separators\n if (projectType === 'lib') {\n namespace = namespace.split(/[.:]+/).map(pascalCase).join('.');\n }\n\n // Checking if we're overwriting an existing project and re-uses their projectGUID\n const existingProjectPath = path.join(\n destPath,\n windowsDir,\n newProjectName,\n newProjectName + (language === 'cs' ? '.csproj' : '.vcxproj'),\n );\n let existingProjectGuid: string | undefined;\n if (fs.existsSync(existingProjectPath)) {\n console.log('Found existing project, extracting ProjectGuid.');\n existingProjectGuid = findPropertyValue(\n readProjectFile(existingProjectPath),\n 'ProjectGuid',\n existingProjectPath,\n ).replace(/[{}]/g, '');\n }\n\n createDir(path.join(destPath, windowsDir));\n createDir(path.join(destPath, windowsDir, newProjectName));\n\n if (projectType === 'app') {\n createDir(path.join(destPath, windowsDir, newProjectName, bundleDir));\n createDir(path.join(destPath, windowsDir, newProjectName, 'BundleBuilder'));\n }\n\n const namespaceCpp = toCppNamespace(namespace);\n if (options.experimentalNuGetDependency) {\n console.log('Using experimental NuGet dependency.');\n }\n\n const experimentalPropsPath = path.join(\n destPath,\n windowsDir,\n 'ExperimentalFeatures.props',\n );\n\n let existingUseHermes: boolean | null = null;\n if (fs.existsSync(experimentalPropsPath)) {\n existingUseHermes = tryFindPropertyValueAsBoolean(\n readProjectFile(experimentalPropsPath),\n 'UseHermes',\n );\n }\n\n if (existingUseHermes === false) {\n console.warn(\n 'Hermes is now the default JS engine and will be enabled for this project. Support for Chakra will be deprecated in the future. To disable Hermes and keep using Chakra for now, see https://microsoft.github.io/react-native-windows/docs/hermes#disabling-hermes.',\n );\n }\n options.useHermes = true;\n\n if (options.useWinUI3) {\n throw new CodedError(\n 'IncompatibleOptions',\n 'Experimental WinUI 3 project has been deprecated.',\n );\n }\n\n const projDir = 'proj';\n const srcPath = path.join(srcRootPath, `${language}-${projectType}`);\n const sharedPath = path.join(srcRootPath, `shared-${projectType}`);\n const projectGuid = existingProjectGuid || uuid.v4();\n const rnwVersion = require(resolveRnwPath('package.json')).version;\n const nugetVersion = options.nuGetTestVersion || rnwVersion;\n const packageGuid = uuid.v4();\n const currentUser = username.sync()!; // Gets the current username depending on the platform.\n\n let mainComponentName = newProjectName;\n const appJsonPath = await findUp('app.json', {cwd: destPath});\n if (appJsonPath) {\n const appJson = await fs.readJsonFile<{name: string}>(appJsonPath);\n mainComponentName = appJson.name;\n }\n\n // We should prefer putting new, necessary PackageReference dependencies into the appropriate\n // external property sheets, but this is here if we \"must\" inject the dependency into the project file\n const csNugetPackages: NugetPackage[] = [];\n const cppNugetPackages: NugetPackage[] = [];\n\n const templateVars: Record<string, any> = {\n useMustache: true,\n regExpPatternsToRemove: [],\n\n name: newProjectName,\n namespace: namespace,\n namespaceCpp: namespaceCpp,\n languageIsCpp: language === 'cpp',\n\n rnwVersion: await getVersionOfNpmPackage('react-native-windows'),\n\n mainComponentName: mainComponentName,\n\n // Visual Studio is very picky about the casing of the guids for projects, project references and the solution\n // https://www.bing.com/search?q=visual+studio+project+guid+casing&cvid=311a5ad7f9fc41089507b24600d23ee7&FORM=ANAB01&PC=U531\n // we therefore have to precariously use the right casing in the right place or risk building in VS breaking.\n projectGuidLower: `{${projectGuid.toLowerCase()}}`,\n projectGuidUpper: `{${projectGuid.toUpperCase()}}`,\n\n // packaging and signing variables:\n packageGuid: packageGuid,\n currentUser: currentUser,\n\n useExperimentalNuget: options.experimentalNuGetDependency,\n nuGetTestFeed: options.nuGetTestFeed,\n nuGetADOFeed: nugetVersion.startsWith('0.0.0-'),\n\n // cpp template variables\n useWinUI3: options.useWinUI3,\n useHermes: options.useHermes,\n cppNugetPackages: cppNugetPackages,\n\n // cs template variables\n csNugetPackages: csNugetPackages,\n\n // autolinking template variables\n autolinkPropertiesForProps: '',\n autolinkProjectReferencesForTargets: '',\n autolinkCsUsingNamespaces: '',\n autolinkCsReactPackageProviders: '',\n autolinkCppIncludes: '',\n autolinkCppPackageProviders:\n '\\n UNREFERENCED_PARAMETER(packageProviders);', // CODESYNC: vnext\\local-cli\\runWindows\\utils\\autolink.js\n };\n\n const commonMappings =\n projectType === 'app'\n ? [\n // app common mappings\n {\n from: path.join(\n srcRootPath,\n options.useDevMode\n ? 'metro.devMode.config.js'\n : 'metro.config.js',\n ),\n to: 'metro.config.js',\n },\n {\n from: path.join(srcRootPath, '_gitignore'),\n to: path.join(windowsDir, '.gitignore'),\n },\n {\n from: path.join(srcRootPath, 'b_gitignore'),\n to: path.join(windowsDir, newProjectName, '.gitignore'),\n },\n {\n from: path.join(srcRootPath, 'index.windows.bundle'),\n to: path.join(\n windowsDir,\n newProjectName,\n bundleDir,\n 'index.windows.bundle',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyApp.sln'),\n to: path.join(windowsDir, newProjectName + '.sln'),\n },\n ]\n : [\n // lib common mappings\n {\n from: path.join(srcRootPath, '_gitignore'),\n to: path.join(windowsDir, '.gitignore'),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.sln'),\n to: path.join(windowsDir, newProjectName + '.sln'),\n },\n ];\n\n for (const mapping of commonMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n\n if (language === 'cs') {\n const csMappings =\n projectType === 'app'\n ? [\n // cs app mappings\n {\n from: path.join(srcPath, projDir, 'MyApp.csproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.csproj',\n ),\n },\n ]\n : [\n // cs lib mappings\n {\n from: path.join(srcPath, projDir, 'MyLib.csproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.csproj',\n ),\n },\n ];\n\n for (const mapping of csMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n } else {\n const cppMappings =\n projectType === 'app'\n ? [\n // cpp app mappings\n {\n from: path.join(srcPath, projDir, 'MyApp.vcxproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyApp.vcxproj.filters'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj.filters',\n ),\n },\n ]\n : [\n // cpp lib mappings\n {\n from: path.join(srcPath, projDir, 'MyLib.vcxproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.vcxproj.filters'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj.filters',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.def'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.def',\n ),\n },\n ];\n\n for (const mapping of cppMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n }\n\n // shared proj\n if (fs.existsSync(path.join(sharedPath, projDir))) {\n const sharedProjMappings = [];\n\n sharedProjMappings.push({\n from: path.join(sharedPath, projDir, 'NuGet_Config'),\n to: path.join(windowsDir, 'NuGet.Config'),\n });\n\n if (\n fs.existsSync(\n path.join(sharedPath, projDir, 'ExperimentalFeatures.props'),\n )\n ) {\n sharedProjMappings.push({\n from: path.join(sharedPath, projDir, 'ExperimentalFeatures.props'),\n to: path.join(windowsDir, 'ExperimentalFeatures.props'),\n });\n }\n\n for (const mapping of sharedProjMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n }\n\n // shared assets\n if (fs.existsSync(path.join(sharedPath, 'assets'))) {\n await copyAndReplaceAll(\n path.join(sharedPath, 'assets'),\n destPath,\n path.join(windowsDir, newProjectName, 'Assets'),\n templateVars,\n options.overwrite,\n );\n }\n\n // shared src\n if (fs.existsSync(path.join(sharedPath, 'src'))) {\n await copyAndReplaceAll(\n path.join(sharedPath, 'src'),\n destPath,\n path.join(windowsDir, newProjectName),\n templateVars,\n options.overwrite,\n );\n }\n\n // src\n if (fs.existsSync(path.join(srcPath, 'src'))) {\n await copyAndReplaceAll(\n path.join(srcPath, 'src'),\n destPath,\n path.join(windowsDir, newProjectName),\n templateVars,\n options.overwrite,\n );\n }\n\n if (projectType === 'app') {\n console.log(chalk.white.bold('To run your app on UWP:'));\n console.log(chalk.white(' npx react-native run-windows'));\n }\n}\n\nfunction toCppNamespace(namespace: string) {\n return namespace.replace(/\\./g, '::');\n}\n\nexport async function installScriptsAndDependencies(options: {\n verbose: boolean;\n}) {\n const projectPackage = await WritableNpmPackage.fromPath(process.cwd());\n if (!projectPackage) {\n throw new Error(\n `The current directory '${process.cwd()}' is not the root of an npm package`,\n );\n }\n\n await projectPackage.mergeProps({\n scripts: {windows: 'react-native run-windows'},\n });\n\n const rnwPackage = await findPackage('react-native-windows');\n if (!rnwPackage) {\n throw new Error('Could not locate the package for react-native-windows');\n }\n\n const rnPackage = await findPackage('react-native');\n if (!rnPackage) {\n throw new Error('Could not locate the package for react-native');\n }\n\n // We add an exclusionList from metro config. This will be hoisted, but add\n // an explicit dep because we require it directly.\n const cliPackage = await findPackage('@react-native-community/cli', {\n searchPath: rnPackage.path,\n });\n const metroConfigPackage = await findPackage('metro-config', {\n searchPath: cliPackage?.path || rnPackage.path,\n });\n\n if (metroConfigPackage) {\n await projectPackage.mergeProps({\n devDependencies: {\n 'metro-config': `^${metroConfigPackage.json.version}`,\n },\n });\n }\n\n const rnPeerDependency = rnwPackage.json.peerDependencies['react-native'];\n\n if (\n !semver.satisfies(rnPackage.json.version, rnPeerDependency) &&\n projectPackage.json.dependencies?.['react-native']\n ) {\n console.log(\n chalk.green('Installing a compatible version of react-native:'),\n );\n console.log(chalk.white(` ${rnPeerDependency}`));\n\n // Patch package.json to have proper react-native version and install\n await projectPackage.mergeProps({\n dependencies: {'react-native': rnPeerDependency},\n });\n\n // Install dependencies using correct package manager\n const isYarn = fs.existsSync(path.join(process.cwd(), 'yarn.lock'));\n childProcess.execSync(\n isYarn ? 'yarn' : 'npm i',\n options.verbose ? {stdio: 'inherit'} : {},\n );\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator-windows/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport chalk from 'chalk';\nimport path from 'path';\nimport username from 'username';\nimport uuid from 'uuid';\nimport childProcess from 'child_process';\nimport fs from '@react-native-windows/fs';\nimport semver from 'semver';\nimport _ from 'lodash';\nimport findUp from 'find-up';\nimport {\n readProjectFile,\n findPropertyValue,\n tryFindPropertyValueAsBoolean,\n} from '../commands/config/configUtils';\n\nimport {\n createDir,\n copyAndReplaceAll,\n copyAndReplaceWithChangedCallback,\n} from '../generator-common';\nimport {GenerateOptions} from '..';\nimport {\n CodedError,\n getVersionOfNpmPackage,\n} from '@react-native-windows/telemetry';\nimport {\n findPackage,\n WritableNpmPackage,\n} from '@react-native-windows/package-utils';\n\nconst windowsDir = 'windows';\nconst bundleDir = 'Bundle';\n\n/**\n * This represents the data to insert nuget packages\n */\ninterface NugetPackage {\n id: string;\n version: string;\n privateAssets: boolean;\n}\n\nfunction pascalCase(str: string) {\n const camelCase = _.camelCase(str);\n return camelCase[0].toUpperCase() + camelCase.substr(1);\n}\n\nfunction resolveRnwPath(subpath: string): string {\n return require.resolve(path.join('react-native-windows', subpath), {\n paths: [process.cwd()],\n });\n}\n\n// Existing high cyclomatic complexity\n// eslint-disable-next-line complexity\nexport async function copyProjectTemplateAndReplace(\n srcRootPath: string,\n destPath: string,\n newProjectName: string,\n namespace: string,\n options: GenerateOptions,\n) {\n if (!srcRootPath) {\n throw new CodedError(\n 'CopyProjectTemplateNoSourcePath',\n 'Need a path to copy from',\n );\n }\n\n if (!destPath) {\n throw new CodedError(\n 'CopyProjectTemplateNoDestPath',\n 'Need a path to copy to',\n );\n }\n\n if (!newProjectName) {\n throw new CodedError(\n 'CopyProjectTemplateNoProjectName',\n 'Need a project name',\n );\n }\n\n const projectType = options.projectType;\n const language = options.language;\n\n // React-native init only allows alphanumerics in project names, but other\n // new project tools (like create-react-native-module) are less strict.\n if (projectType === 'lib') {\n newProjectName = pascalCase(newProjectName);\n }\n\n // Similar to the above, but we want to retain namespace separators\n if (projectType === 'lib') {\n namespace = namespace.split(/[.:]+/).map(pascalCase).join('.');\n }\n\n // Checking if we're overwriting an existing project and re-uses their projectGUID\n const existingProjectPath = path.join(\n destPath,\n windowsDir,\n newProjectName,\n newProjectName + (language === 'cs' ? '.csproj' : '.vcxproj'),\n );\n let existingProjectGuid: string | undefined;\n if (fs.existsSync(existingProjectPath)) {\n console.log('Found existing project, extracting ProjectGuid.');\n existingProjectGuid = findPropertyValue(\n readProjectFile(existingProjectPath),\n 'ProjectGuid',\n existingProjectPath,\n ).replace(/[{}]/g, '');\n }\n\n createDir(path.join(destPath, windowsDir));\n createDir(path.join(destPath, windowsDir, newProjectName));\n\n if (projectType === 'app') {\n createDir(path.join(destPath, windowsDir, newProjectName, bundleDir));\n createDir(path.join(destPath, windowsDir, newProjectName, 'BundleBuilder'));\n }\n\n const namespaceCpp = toCppNamespace(namespace);\n if (options.experimentalNuGetDependency) {\n console.log('Using experimental NuGet dependency.');\n }\n\n const experimentalPropsPath = path.join(\n destPath,\n windowsDir,\n 'ExperimentalFeatures.props',\n );\n\n let existingUseHermes: boolean | null = null;\n if (fs.existsSync(experimentalPropsPath)) {\n existingUseHermes = tryFindPropertyValueAsBoolean(\n readProjectFile(experimentalPropsPath),\n 'UseHermes',\n );\n }\n\n if (existingUseHermes === false) {\n console.warn(\n 'Hermes is now the default JS engine and will be enabled for this project. Support for Chakra will be deprecated in the future. To disable Hermes and keep using Chakra for now, see https://microsoft.github.io/react-native-windows/docs/hermes#disabling-hermes.',\n );\n }\n options.useHermes = true;\n\n if (options.useWinUI3) {\n throw new CodedError(\n 'IncompatibleOptions',\n 'Experimental WinUI 3 project has been deprecated.',\n );\n }\n\n const projDir = 'proj';\n const srcPath = path.join(srcRootPath, `${language}-${projectType}`);\n const sharedPath = path.join(srcRootPath, `shared-${projectType}`);\n const projectGuid = existingProjectGuid || uuid.v4();\n const rnwVersion = require(resolveRnwPath('package.json')).version;\n const nugetVersion = options.nuGetTestVersion || rnwVersion;\n const packageGuid = uuid.v4();\n const currentUser = username.sync()!; // Gets the current username depending on the platform.\n\n let mainComponentName = newProjectName;\n const appJsonPath = await findUp('app.json', {cwd: destPath});\n if (appJsonPath) {\n const appJson = await fs.readJsonFile<{name: string}>(appJsonPath);\n mainComponentName = appJson.name;\n }\n\n // We should prefer putting new, necessary PackageReference dependencies into the appropriate\n // external property sheets, but this is here if we \"must\" inject the dependency into the project file\n const csNugetPackages: NugetPackage[] = [];\n const cppNugetPackages: NugetPackage[] = [];\n\n const templateVars: Record<string, any> = {\n useMustache: true,\n regExpPatternsToRemove: [],\n\n name: newProjectName,\n namespace: namespace,\n namespaceCpp: namespaceCpp,\n languageIsCpp: language === 'cpp',\n\n rnwVersion: await getVersionOfNpmPackage('react-native-windows'),\n\n mainComponentName: mainComponentName,\n\n // Visual Studio is very picky about the casing of the guids for projects, project references and the solution\n // https://www.bing.com/search?q=visual+studio+project+guid+casing&cvid=311a5ad7f9fc41089507b24600d23ee7&FORM=ANAB01&PC=U531\n // we therefore have to precariously use the right casing in the right place or risk building in VS breaking.\n projectGuidLower: `{${projectGuid.toLowerCase()}}`,\n projectGuidUpper: `{${projectGuid.toUpperCase()}}`,\n\n // packaging and signing variables:\n packageGuid: packageGuid,\n currentUser: currentUser,\n\n devMode: options.useDevMode,\n\n useExperimentalNuget: options.experimentalNuGetDependency,\n nuGetTestFeed: options.nuGetTestFeed,\n nuGetADOFeed: nugetVersion.startsWith('0.0.0-'),\n\n // cpp template variables\n useWinUI3: options.useWinUI3,\n useHermes: options.useHermes,\n cppNugetPackages: cppNugetPackages,\n\n // cs template variables\n csNugetPackages: csNugetPackages,\n\n // autolinking template variables\n autolinkPropertiesForProps: '',\n autolinkProjectReferencesForTargets: '',\n autolinkCsUsingNamespaces: '',\n autolinkCsReactPackageProviders: '',\n autolinkCppIncludes: '',\n autolinkCppPackageProviders:\n '\\n UNREFERENCED_PARAMETER(packageProviders);', // CODESYNC: vnext\\local-cli\\runWindows\\utils\\autolink.js\n };\n\n const commonMappings =\n projectType === 'app'\n ? [\n // app common mappings\n {\n from: path.join(srcRootPath, 'metro.config.js'),\n to: 'metro.config.js',\n },\n {\n from: path.join(srcRootPath, '_gitignore'),\n to: path.join(windowsDir, '.gitignore'),\n },\n {\n from: path.join(srcRootPath, 'b_gitignore'),\n to: path.join(windowsDir, newProjectName, '.gitignore'),\n },\n {\n from: path.join(srcRootPath, 'index.windows.bundle'),\n to: path.join(\n windowsDir,\n newProjectName,\n bundleDir,\n 'index.windows.bundle',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyApp.sln'),\n to: path.join(windowsDir, newProjectName + '.sln'),\n },\n ]\n : [\n // lib common mappings\n {\n from: path.join(srcRootPath, '_gitignore'),\n to: path.join(windowsDir, '.gitignore'),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.sln'),\n to: path.join(windowsDir, newProjectName + '.sln'),\n },\n ];\n\n for (const mapping of commonMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n\n if (language === 'cs') {\n const csMappings =\n projectType === 'app'\n ? [\n // cs app mappings\n {\n from: path.join(srcPath, projDir, 'MyApp.csproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.csproj',\n ),\n },\n ]\n : [\n // cs lib mappings\n {\n from: path.join(srcPath, projDir, 'MyLib.csproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.csproj',\n ),\n },\n ];\n\n for (const mapping of csMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n } else {\n const cppMappings =\n projectType === 'app'\n ? [\n // cpp app mappings\n {\n from: path.join(srcPath, projDir, 'MyApp.vcxproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyApp.vcxproj.filters'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj.filters',\n ),\n },\n ]\n : [\n // cpp lib mappings\n {\n from: path.join(srcPath, projDir, 'MyLib.vcxproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.vcxproj.filters'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj.filters',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.def'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.def',\n ),\n },\n ];\n\n for (const mapping of cppMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n }\n\n // shared proj\n if (fs.existsSync(path.join(sharedPath, projDir))) {\n const sharedProjMappings = [];\n\n sharedProjMappings.push({\n from: path.join(sharedPath, projDir, 'NuGet_Config'),\n to: path.join(windowsDir, 'NuGet.Config'),\n });\n\n if (\n fs.existsSync(\n path.join(sharedPath, projDir, 'ExperimentalFeatures.props'),\n )\n ) {\n sharedProjMappings.push({\n from: path.join(sharedPath, projDir, 'ExperimentalFeatures.props'),\n to: path.join(windowsDir, 'ExperimentalFeatures.props'),\n });\n }\n\n for (const mapping of sharedProjMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n }\n\n // shared assets\n if (fs.existsSync(path.join(sharedPath, 'assets'))) {\n await copyAndReplaceAll(\n path.join(sharedPath, 'assets'),\n destPath,\n path.join(windowsDir, newProjectName, 'Assets'),\n templateVars,\n options.overwrite,\n );\n }\n\n // shared src\n if (fs.existsSync(path.join(sharedPath, 'src'))) {\n await copyAndReplaceAll(\n path.join(sharedPath, 'src'),\n destPath,\n path.join(windowsDir, newProjectName),\n templateVars,\n options.overwrite,\n );\n }\n\n // src\n if (fs.existsSync(path.join(srcPath, 'src'))) {\n await copyAndReplaceAll(\n path.join(srcPath, 'src'),\n destPath,\n path.join(windowsDir, newProjectName),\n templateVars,\n options.overwrite,\n );\n }\n\n if (projectType === 'app') {\n console.log(chalk.white.bold('To run your app on UWP:'));\n console.log(chalk.white(' npx react-native run-windows'));\n }\n}\n\nfunction toCppNamespace(namespace: string) {\n return namespace.replace(/\\./g, '::');\n}\n\nexport async function installScriptsAndDependencies(options: {\n verbose: boolean;\n}) {\n const projectPackage = await WritableNpmPackage.fromPath(process.cwd());\n if (!projectPackage) {\n throw new Error(\n `The current directory '${process.cwd()}' is not the root of an npm package`,\n );\n }\n\n await projectPackage.mergeProps({\n scripts: {windows: 'react-native run-windows'},\n });\n\n const rnwPackage = await findPackage('react-native-windows');\n if (!rnwPackage) {\n throw new Error('Could not locate the package for react-native-windows');\n }\n\n const rnPackage = await findPackage('react-native');\n if (!rnPackage) {\n throw new Error('Could not locate the package for react-native');\n }\n\n // We add an exclusionList from metro config. This will be hoisted, but add\n // an explicit dep because we require it directly.\n const cliPackage = await findPackage('@react-native-community/cli', {\n searchPath: rnPackage.path,\n });\n const metroConfigPackage = await findPackage('metro-config', {\n searchPath: cliPackage?.path || rnPackage.path,\n });\n\n if (metroConfigPackage) {\n await projectPackage.mergeProps({\n devDependencies: {\n 'metro-config': `^${metroConfigPackage.json.version}`,\n },\n });\n }\n\n const rnPeerDependency = rnwPackage.json.peerDependencies['react-native'];\n\n if (\n !semver.satisfies(rnPackage.json.version, rnPeerDependency) &&\n projectPackage.json.dependencies?.['react-native']\n ) {\n console.log(\n chalk.green('Installing a compatible version of react-native:'),\n );\n console.log(chalk.white(` ${rnPeerDependency}`));\n\n // Patch package.json to have proper react-native version and install\n await projectPackage.mergeProps({\n dependencies: {'react-native': rnPeerDependency},\n });\n\n // Install dependencies using correct package manager\n const isYarn = fs.existsSync(path.join(process.cwd(), 'yarn.lock'));\n childProcess.execSync(\n isYarn ? 'yarn' : 'npm i',\n options.verbose ? {stdio: 'inherit'} : {},\n );\n }\n}\n"]}
@@ -15,10 +15,10 @@ const version_1 = __importDefault(require("./version"));
15
15
  const commandWithProgress_1 = require("./commandWithProgress");
16
16
  const telemetry_1 = require("@react-native-windows/telemetry");
17
17
  async function buildSolution(buildTools, slnFile, buildType, buildArch, msBuildProps, verbose, target, buildLogDirectory, singleproc) {
18
- const minVersion = new version_1.default(10, 0, 19041, 0);
18
+ const minVersion = new version_1.default(10, 0, 22621, 0);
19
19
  const allVersions = msbuildtools_1.default.getAllAvailableUAPVersions();
20
20
  if (!allVersions.some(v => v.gte(minVersion))) {
21
- throw new telemetry_1.CodedError('MinSDKVersionNotMet', 'Must have a minimum Windows SDK version 10.0.19041.0 installed');
21
+ throw new telemetry_1.CodedError('MinSDKVersionNotMet', 'Must have a minimum Windows SDK version 10.0.22621.0 installed');
22
22
  }
23
23
  await buildTools.buildProject(slnFile, buildType, buildArch, msBuildProps, verbose, target, buildLogDirectory, singleproc);
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/utils/build.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport path from 'path';\n\nimport MSBuildTools from './msbuildtools';\nimport Version from './version';\nimport {newError} from './commandWithProgress';\nimport {\n RunWindowsOptions,\n BuildConfig,\n BuildArch,\n} from '../commands/runWindows/runWindowsOptions';\nimport {Config} from '@react-native-community/cli-types';\nimport {CodedError} from '@react-native-windows/telemetry';\n\nexport async function buildSolution(\n buildTools: MSBuildTools,\n slnFile: string,\n buildType: BuildConfig,\n buildArch: BuildArch,\n msBuildProps: Record<string, string>,\n verbose: boolean,\n target: 'build' | 'deploy',\n buildLogDirectory?: string,\n singleproc?: boolean,\n) {\n const minVersion = new Version(10, 0, 19041, 0);\n const allVersions = MSBuildTools.getAllAvailableUAPVersions();\n if (!allVersions.some(v => v.gte(minVersion))) {\n throw new CodedError(\n 'MinSDKVersionNotMet',\n 'Must have a minimum Windows SDK version 10.0.19041.0 installed',\n );\n }\n\n await buildTools.buildProject(\n slnFile,\n buildType,\n buildArch,\n msBuildProps,\n verbose,\n target,\n buildLogDirectory,\n singleproc,\n );\n}\n\nconst configErrorString = 'Error: ';\n\nexport function getAppSolutionFile(options: RunWindowsOptions, config: Config) {\n // Use the solution file if specified\n if (options.sln) {\n return path.join(options.root, options.sln);\n }\n\n // Check the answer from react-native config\n const windowsAppConfig = config.project.windows;\n if (!windowsAppConfig) {\n throw new CodedError(\n 'NoWindowsConfig',\n \"Couldn't determine Windows app config\",\n );\n }\n const configSolutionFile = windowsAppConfig.solutionFile;\n\n if (configSolutionFile.startsWith(configErrorString)) {\n newError(\n configSolutionFile.substr(configErrorString.length) +\n ' Optionally, use --sln {slnFile}.',\n );\n return null;\n } else {\n return path.join(\n windowsAppConfig.folder,\n windowsAppConfig.sourceDir,\n configSolutionFile,\n );\n }\n}\n\nexport function getAppProjectFile(options: RunWindowsOptions, config: Config) {\n // Use the project file if specified\n if (options.proj) {\n return path.join(options.root, options.proj);\n }\n\n // Check the answer from react-native config\n const windowsAppConfig = config.project.windows;\n const configProject = windowsAppConfig.project;\n\n if (\n typeof configProject === 'string' &&\n configProject.startsWith(configErrorString)\n ) {\n newError(\n configProject.substr(configErrorString.length) +\n ' Optionally, use --proj {projFile}.',\n );\n return null;\n } else {\n const configProjectFile = configProject.projectFile;\n if (configProjectFile.startsWith(configErrorString)) {\n newError(\n configProjectFile.substr(configErrorString.length) +\n ' Optionally, use --proj {projFile}.',\n );\n return null;\n }\n return path.join(\n windowsAppConfig.folder,\n windowsAppConfig.sourceDir,\n configProjectFile,\n );\n }\n}\n\nexport function parseMsBuildProps(\n options: RunWindowsOptions,\n): Record<string, string> {\n const result: Record<string, string> = {};\n if (options.msbuildprops) {\n const props = options.msbuildprops.split(',');\n for (const prop of props) {\n const propAssignment = prop.split('=');\n result[propAssignment[0]] = propAssignment[1];\n }\n }\n return result;\n}\n"]}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/utils/build.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,gDAAwB;AAExB,kEAA0C;AAC1C,wDAAgC;AAChC,+DAA+C;AAO/C,+DAA2D;AAEpD,KAAK,UAAU,aAAa,CACjC,UAAwB,EACxB,OAAe,EACf,SAAsB,EACtB,SAAoB,EACpB,YAAoC,EACpC,OAAgB,EAChB,MAA0B,EAC1B,iBAA0B,EAC1B,UAAoB;IAEpB,MAAM,UAAU,GAAG,IAAI,iBAAO,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,sBAAY,CAAC,0BAA0B,EAAE,CAAC;IAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE;QAC7C,MAAM,IAAI,sBAAU,CAClB,qBAAqB,EACrB,gEAAgE,CACjE,CAAC;KACH;IAED,MAAM,UAAU,CAAC,YAAY,CAC3B,OAAO,EACP,SAAS,EACT,SAAS,EACT,YAAY,EACZ,OAAO,EACP,MAAM,EACN,iBAAiB,EACjB,UAAU,CACX,CAAC;AACJ,CAAC;AA9BD,sCA8BC;AAED,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAEpC,SAAgB,kBAAkB,CAAC,OAA0B,EAAE,MAAc;IAC3E,qCAAqC;IACrC,IAAI,OAAO,CAAC,GAAG,EAAE;QACf,OAAO,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;KAC7C;IAED,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IAChD,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,sBAAU,CAClB,iBAAiB,EACjB,uCAAuC,CACxC,CAAC;KACH;IACD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,YAAY,CAAC;IAEzD,IAAI,kBAAkB,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;QACpD,IAAA,8BAAQ,EACN,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACjD,mCAAmC,CACtC,CAAC;QACF,OAAO,IAAI,CAAC;KACb;SAAM;QACL,OAAO,cAAI,CAAC,IAAI,CACd,gBAAgB,CAAC,MAAM,EACvB,gBAAgB,CAAC,SAAS,EAC1B,kBAAkB,CACnB,CAAC;KACH;AACH,CAAC;AA7BD,gDA6BC;AAED,SAAgB,iBAAiB,CAAC,OAA0B,EAAE,MAAc;IAC1E,oCAAoC;IACpC,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,OAAO,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9C;IAED,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IAChD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAE/C,IACE,OAAO,aAAa,KAAK,QAAQ;QACjC,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAC3C;QACA,IAAA,8BAAQ,EACN,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC5C,qCAAqC,CACxC,CAAC;QACF,OAAO,IAAI,CAAC;KACb;SAAM;QACL,MAAM,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC;QACpD,IAAI,iBAAiB,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;YACnD,IAAA,8BAAQ,EACN,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBAChD,qCAAqC,CACxC,CAAC;YACF,OAAO,IAAI,CAAC;SACb;QACD,OAAO,cAAI,CAAC,IAAI,CACd,gBAAgB,CAAC,MAAM,EACvB,gBAAgB,CAAC,SAAS,EAC1B,iBAAiB,CAClB,CAAC;KACH;AACH,CAAC;AAlCD,8CAkCC;AAED,SAAgB,iBAAiB,CAC/B,OAA0B;IAE1B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,OAAO,CAAC,YAAY,EAAE;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;SAC/C;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAZD,8CAYC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport path from 'path';\n\nimport MSBuildTools from './msbuildtools';\nimport Version from './version';\nimport {newError} from './commandWithProgress';\nimport {\n RunWindowsOptions,\n BuildConfig,\n BuildArch,\n} from '../commands/runWindows/runWindowsOptions';\nimport {Config} from '@react-native-community/cli-types';\nimport {CodedError} from '@react-native-windows/telemetry';\n\nexport async function buildSolution(\n buildTools: MSBuildTools,\n slnFile: string,\n buildType: BuildConfig,\n buildArch: BuildArch,\n msBuildProps: Record<string, string>,\n verbose: boolean,\n target: 'build' | 'deploy',\n buildLogDirectory?: string,\n singleproc?: boolean,\n) {\n const minVersion = new Version(10, 0, 22621, 0);\n const allVersions = MSBuildTools.getAllAvailableUAPVersions();\n if (!allVersions.some(v => v.gte(minVersion))) {\n throw new CodedError(\n 'MinSDKVersionNotMet',\n 'Must have a minimum Windows SDK version 10.0.22621.0 installed',\n );\n }\n\n await buildTools.buildProject(\n slnFile,\n buildType,\n buildArch,\n msBuildProps,\n verbose,\n target,\n buildLogDirectory,\n singleproc,\n );\n}\n\nconst configErrorString = 'Error: ';\n\nexport function getAppSolutionFile(options: RunWindowsOptions, config: Config) {\n // Use the solution file if specified\n if (options.sln) {\n return path.join(options.root, options.sln);\n }\n\n // Check the answer from react-native config\n const windowsAppConfig = config.project.windows;\n if (!windowsAppConfig) {\n throw new CodedError(\n 'NoWindowsConfig',\n \"Couldn't determine Windows app config\",\n );\n }\n const configSolutionFile = windowsAppConfig.solutionFile;\n\n if (configSolutionFile.startsWith(configErrorString)) {\n newError(\n configSolutionFile.substr(configErrorString.length) +\n ' Optionally, use --sln {slnFile}.',\n );\n return null;\n } else {\n return path.join(\n windowsAppConfig.folder,\n windowsAppConfig.sourceDir,\n configSolutionFile,\n );\n }\n}\n\nexport function getAppProjectFile(options: RunWindowsOptions, config: Config) {\n // Use the project file if specified\n if (options.proj) {\n return path.join(options.root, options.proj);\n }\n\n // Check the answer from react-native config\n const windowsAppConfig = config.project.windows;\n const configProject = windowsAppConfig.project;\n\n if (\n typeof configProject === 'string' &&\n configProject.startsWith(configErrorString)\n ) {\n newError(\n configProject.substr(configErrorString.length) +\n ' Optionally, use --proj {projFile}.',\n );\n return null;\n } else {\n const configProjectFile = configProject.projectFile;\n if (configProjectFile.startsWith(configErrorString)) {\n newError(\n configProjectFile.substr(configErrorString.length) +\n ' Optionally, use --proj {projFile}.',\n );\n return null;\n }\n return path.join(\n windowsAppConfig.folder,\n windowsAppConfig.sourceDir,\n configProjectFile,\n );\n }\n}\n\nexport function parseMsBuildProps(\n options: RunWindowsOptions,\n): Record<string, string> {\n const result: Record<string, string> = {};\n if (options.msbuildprops) {\n const props = options.msbuildprops.split(',');\n for (const prop of props) {\n const propAssignment = prop.split('=');\n result[propAssignment[0]] = propAssignment[1];\n }\n }\n return result;\n}\n"]}
@@ -163,7 +163,7 @@ class MSBuildTools {
163
163
  'Microsoft.Component.MSBuild',
164
164
  getVCToolsByArch(buildArch),
165
165
  ];
166
- const minVersion = process.env.VisualStudioVersion || '17.0';
166
+ const minVersion = process.env.MinimumVisualStudioVersion || process.env.VisualStudioVersion || '17.0';
167
167
  const vsInstallation = (0, vsInstalls_1.findLatestVsInstall)({
168
168
  requires,
169
169
  minVersion,
@@ -171,7 +171,10 @@ class MSBuildTools {
171
171
  prerelease,
172
172
  });
173
173
  if (!vsInstallation) {
174
- if (process.env.VisualStudioVersion != null) {
174
+ if (process.env.MinimumVisualStudioVersion != null) {
175
+ throw new telemetry_1.CodedError('NoMSBuild', `MSBuild tools not found for version ${process.env.MinimumVisualStudioVersion} (from environment). Make sure all required components have been installed`, { MinimumVisualStudioVersionFromEnv: process.env.MinimumVisualStudioVersion });
176
+ }
177
+ else if (process.env.VisualStudioVersion != null) {
175
178
  throw new telemetry_1.CodedError('NoMSBuild', `MSBuild tools not found for version ${process.env.VisualStudioVersion} (from environment). Make sure all required components have been installed`, { VisualStudioVersionFromEnv: process.env.VisualStudioVersion });
176
179
  }
177
180
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"msbuildtools.js","sourceRoot":"","sources":["../../src/utils/msbuildtools.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {totalmem, EOL} from 'os';\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport child_process from 'child_process';\nimport chalk from 'chalk';\nimport os from 'os';\nimport shell from 'shelljs';\nimport Version from './version';\nimport * as checkRequirements from './checkRequirements';\nimport {\n commandWithProgress,\n newInfo,\n newSpinner,\n newSuccess,\n newError,\n powershell,\n} from './commandWithProgress';\nimport {execSync} from 'child_process';\nimport {BuildArch, BuildConfig} from '../commands/runWindows/runWindowsOptions';\nimport {findLatestVsInstall} from './vsInstalls';\nimport {CodedError} from '@react-native-windows/telemetry';\n\nexport default class MSBuildTools {\n /**\n * @param version is something like 17.0 for 2022\n * @param installationPath Path to installation root\n * @param installationVersion is the full version e.g. 17.3.32929.385\n */\n constructor(\n public readonly version: string,\n public readonly installationPath: string,\n public readonly installationVersion: string,\n ) {}\n\n /**\n * @returns directory where x64 msbuild can be found\n */\n msbuildPath() {\n return path.join(this.installationPath, 'MSBuild/Current/Bin/amd64');\n }\n\n cleanProject(slnFile: string) {\n const cmd = `\"${path.join(\n this.msbuildPath(),\n 'msbuild.exe',\n )}\" \"${slnFile}\" /t:Clean`;\n const results = child_process.execSync(cmd).toString().split(EOL);\n results.forEach(result => console.log(chalk.white(result)));\n }\n\n async restorePackageConfigs(\n slnFile: any,\n buildArch: BuildArch,\n buildType: BuildConfig,\n ) {\n const text = 'Restoring NuGet packages ';\n const spinner = newSpinner(text);\n await commandWithProgress(\n spinner,\n text,\n path.join(this.msbuildPath(), 'msbuild.exe'),\n [\n slnFile,\n '/t:Restore',\n '/p:RestoreProjectStyle=PackagesConfig',\n '/p:RestorePackagesConfig=true',\n `/p:Platform=${buildArch}`,\n `/p:Configuration=${buildType}`,\n ],\n true,\n 'MSBuildError',\n );\n }\n\n async buildProject(\n slnFile: string,\n buildType: BuildConfig,\n buildArch: BuildArch,\n msBuildProps: Record<string, string>,\n verbose: boolean,\n target: 'build' | 'deploy',\n buildLogDirectory: string | undefined,\n singleproc?: boolean,\n ) {\n newSuccess(`Found Solution: ${slnFile}`);\n newInfo(`Build configuration: ${buildType}`);\n newInfo(`Build platform: ${buildArch}`);\n\n const verbosityOption = verbose ? 'normal' : 'minimal';\n const logPrefix = path.join(\n buildLogDirectory || os.tmpdir(),\n `msbuild_${process.pid}_${target}`,\n );\n\n const errorLog = logPrefix + '.err';\n const warnLog = logPrefix + '.wrn';\n\n const localBinLog = target === 'build' ? '' : ':deploy.binlog';\n const binlog = buildLogDirectory ? `:${logPrefix}.binlog` : localBinLog;\n\n const args = [\n `/clp:NoSummary;NoItemAndPropertyList;Verbosity=${verbosityOption}`,\n '/nologo',\n `/p:Configuration=${buildType}`,\n `/p:Platform=${buildArch}`,\n '/p:AppxBundle=Never',\n `/bl${binlog}`,\n `/flp1:errorsonly;logfile=${errorLog}`,\n `/flp2:warningsonly;logfile=${warnLog}`,\n ];\n\n // Building projects in parallel increases compiler memory usage and\n // doesn't lead to dramatic performance gains (See #4739). Only enable\n // parallel builds on machines with >16GB of memory to avoid OOM errors\n const highMemory = totalmem() > 16 * 1024 * 1024 * 1024;\n const enableParallelBuilds = singleproc === false || highMemory;\n\n if (enableParallelBuilds) {\n args.push('/maxCpuCount');\n }\n\n if (target === 'build') {\n args.push('/restore', '/p:RestorePackagesConfig=true');\n } else {\n args.push(`/t:Deploy`);\n }\n\n Object.keys(msBuildProps).forEach(key => {\n args.push(`/p:${key}=${msBuildProps[key]}`);\n });\n\n try {\n checkRequirements.isWinSdkPresent('10.0');\n } catch (e) {\n newError((e as Error).message);\n throw e;\n }\n\n if (verbose) {\n console.log(`Running MSBuild with args ${args.join(' ')}`);\n }\n\n const progressName =\n target === 'deploy' ? 'Deploying Solution' : 'Building Solution';\n const spinner = newSpinner(progressName);\n try {\n await commandWithProgress(\n spinner,\n progressName,\n path.join(this.msbuildPath(), 'msbuild.exe'),\n [slnFile].concat(args),\n verbose,\n 'MSBuildError',\n );\n } catch (e) {\n let error = e;\n if (e instanceof CodedError) {\n const origCodedError = e as CodedError;\n if (origCodedError.type === 'MSBuildError') {\n // Try to parse msbuild errors from errorLog\n const errorLogContents = (await fs.readFile(errorLog))\n .toString()\n .split(EOL)\n .filter(s => s)\n .map(s => s.trim());\n if (errorLogContents.length > 0) {\n const firstMessage = errorLogContents[0];\n error = new CodedError(\n 'MSBuildError',\n firstMessage,\n origCodedError.data,\n );\n // Hide error messages in a field that won't automatically get reported\n // with telemetry but is still available to be parsed and sanitized\n (error as any).msBuildErrorMessages = errorLogContents;\n }\n }\n }\n throw error;\n }\n // If we have no errors, delete the error log when we're done\n if ((await fs.stat(errorLog)).size === 0) {\n await fs.unlink(errorLog);\n }\n }\n\n static findAvailableVersion(\n buildArch: BuildArch,\n verbose: boolean,\n prerelease?: boolean,\n ): MSBuildTools {\n // https://aka.ms/vs/workloads\n const requires = [\n 'Microsoft.Component.MSBuild',\n getVCToolsByArch(buildArch),\n ];\n const minVersion = process.env.VisualStudioVersion || '17.0';\n const vsInstallation = findLatestVsInstall({\n requires,\n minVersion,\n verbose,\n prerelease,\n });\n\n if (!vsInstallation) {\n if (process.env.VisualStudioVersion != null) {\n throw new CodedError(\n 'NoMSBuild',\n `MSBuild tools not found for version ${process.env.VisualStudioVersion} (from environment). Make sure all required components have been installed`,\n {VisualStudioVersionFromEnv: process.env.VisualStudioVersion},\n );\n } else {\n throw new CodedError(\n 'NoMSBuild',\n `Could not find MSBuild with VCTools for Visual Studio ${minVersion} or later. Make sure all required components have been installed`,\n {minVersion: minVersion},\n );\n }\n }\n\n const toolsPath = path.join(\n vsInstallation.installationPath,\n 'MSBuild/Current/Bin/amd64',\n );\n\n if (fs.existsSync(toolsPath)) {\n if (verbose) {\n newSuccess(\n `Found compatible MSBuild at ${toolsPath} (${vsInstallation.installationVersion})`,\n );\n }\n return new MSBuildTools(\n minVersion,\n vsInstallation.installationPath,\n vsInstallation.installationVersion,\n );\n } else {\n throw new CodedError(\n 'NoMSBuild',\n `MSBuild path '${toolsPath} does not exist'`,\n );\n }\n }\n\n static getAllAvailableUAPVersions(): Version[] {\n const results: Version[] = [];\n\n const programFilesFolder =\n process.env['ProgramFiles(x86)'] || process.env.ProgramFiles;\n // No Program Files folder found, so we won't be able to find UAP SDK\n if (!programFilesFolder) {\n return results;\n }\n\n let uapFolderPath = path.join(\n programFilesFolder,\n 'Windows Kits',\n '10',\n 'Platforms',\n 'UAP',\n );\n\n if (!shell.test('-e', uapFolderPath)) {\n // Check other installation folder from reg\n const sdkFolder = getSDK10InstallationFolder();\n if (sdkFolder) {\n uapFolderPath = path.join(sdkFolder, 'Platforms', 'UAP');\n }\n }\n\n // No UAP SDK exists on this machine\n if (!shell.test('-e', uapFolderPath)) {\n return results;\n }\n\n shell\n .ls(uapFolderPath)\n .filter(uapDir => shell.test('-d', path.join(uapFolderPath, uapDir)))\n .map(Version.tryParse)\n .forEach(version => version && results.push(version));\n\n return results;\n }\n\n evaluateMSBuildProperties(\n solutionFile: string,\n projectFile: string,\n propertyNames?: string[],\n extraMsBuildProps?: Record<string, string>,\n ): Record<string, string> {\n const spinner = newSpinner('Running Eval-MsBuildProperties.ps1');\n\n try {\n const msbuildEvalScriptPath = path.resolve(\n __dirname,\n '..',\n '..',\n 'src',\n 'powershell',\n 'Eval-MsBuildProperties.ps1',\n );\n\n let command = `${powershell} -ExecutionPolicy Unrestricted -NoProfile \"${msbuildEvalScriptPath}\" -SolutionFile '${solutionFile}' -ProjectFile '${projectFile}' -MSBuildPath '${this.msbuildPath()}'`;\n\n if (propertyNames && propertyNames.length > 0) {\n command += ` -PropertyNames '${propertyNames.join(',')}'`;\n }\n\n if (extraMsBuildProps) {\n command += \" -ExtraMSBuildProps '\";\n for (const extraProp in extraMsBuildProps) {\n if (!(extraProp in Object.prototype)) {\n command += `,${extraProp}=${extraMsBuildProps[extraProp]}`;\n }\n }\n command += \"'\";\n }\n\n const commandOutput = execSync(command).toString();\n spinner.succeed();\n\n const properties = JSON.parse(commandOutput) as Record<string, string>;\n spinner.succeed();\n return properties;\n } catch (e) {\n spinner.fail(\n 'Running Eval-MsBuildProperties.ps1 failed: ' + (e as Error).message,\n );\n throw e;\n }\n }\n}\n\nfunction getVCToolsByArch(buildArch: BuildArch): string {\n switch (buildArch) {\n case 'x86':\n case 'x64':\n return 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64';\n case 'ARM64':\n return 'Microsoft.VisualStudio.Component.VC.Tools.ARM64';\n }\n}\n\nfunction getSDK10InstallationFolder(): string {\n const folder = '';\n\n const execString =\n 'reg query \"HKLM\\\\SOFTWARE\\\\Microsoft\\\\Microsoft SDKs\\\\Windows\\\\v10.0\" /s /v InstallationFolder /reg:32';\n let output;\n try {\n output = execSync(execString).toString();\n } catch (e) {\n return folder;\n }\n\n const re =\n /\\\\Microsoft SDKs\\\\Windows\\\\v10.0\\s*InstallationFolder\\s+REG_SZ\\s+(.*)/gim;\n const match = re.exec(output);\n if (match) {\n return match[1];\n }\n\n return folder;\n}\n"]}
1
+ {"version":3,"file":"msbuildtools.js","sourceRoot":"","sources":["../../src/utils/msbuildtools.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {totalmem, EOL} from 'os';\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport child_process from 'child_process';\nimport chalk from 'chalk';\nimport os from 'os';\nimport shell from 'shelljs';\nimport Version from './version';\nimport * as checkRequirements from './checkRequirements';\nimport {\n commandWithProgress,\n newInfo,\n newSpinner,\n newSuccess,\n newError,\n powershell,\n} from './commandWithProgress';\nimport {execSync} from 'child_process';\nimport {BuildArch, BuildConfig} from '../commands/runWindows/runWindowsOptions';\nimport {findLatestVsInstall} from './vsInstalls';\nimport {CodedError} from '@react-native-windows/telemetry';\n\nexport default class MSBuildTools {\n /**\n * @param version is something like 17.0 for 2022\n * @param installationPath Path to installation root\n * @param installationVersion is the full version e.g. 17.3.32929.385\n */\n constructor(\n public readonly version: string,\n public readonly installationPath: string,\n public readonly installationVersion: string,\n ) {}\n\n /**\n * @returns directory where x64 msbuild can be found\n */\n msbuildPath() {\n return path.join(this.installationPath, 'MSBuild/Current/Bin/amd64');\n }\n\n cleanProject(slnFile: string) {\n const cmd = `\"${path.join(\n this.msbuildPath(),\n 'msbuild.exe',\n )}\" \"${slnFile}\" /t:Clean`;\n const results = child_process.execSync(cmd).toString().split(EOL);\n results.forEach(result => console.log(chalk.white(result)));\n }\n\n async restorePackageConfigs(\n slnFile: any,\n buildArch: BuildArch,\n buildType: BuildConfig,\n ) {\n const text = 'Restoring NuGet packages ';\n const spinner = newSpinner(text);\n await commandWithProgress(\n spinner,\n text,\n path.join(this.msbuildPath(), 'msbuild.exe'),\n [\n slnFile,\n '/t:Restore',\n '/p:RestoreProjectStyle=PackagesConfig',\n '/p:RestorePackagesConfig=true',\n `/p:Platform=${buildArch}`,\n `/p:Configuration=${buildType}`,\n ],\n true,\n 'MSBuildError',\n );\n }\n\n async buildProject(\n slnFile: string,\n buildType: BuildConfig,\n buildArch: BuildArch,\n msBuildProps: Record<string, string>,\n verbose: boolean,\n target: 'build' | 'deploy',\n buildLogDirectory: string | undefined,\n singleproc?: boolean,\n ) {\n newSuccess(`Found Solution: ${slnFile}`);\n newInfo(`Build configuration: ${buildType}`);\n newInfo(`Build platform: ${buildArch}`);\n\n const verbosityOption = verbose ? 'normal' : 'minimal';\n const logPrefix = path.join(\n buildLogDirectory || os.tmpdir(),\n `msbuild_${process.pid}_${target}`,\n );\n\n const errorLog = logPrefix + '.err';\n const warnLog = logPrefix + '.wrn';\n\n const localBinLog = target === 'build' ? '' : ':deploy.binlog';\n const binlog = buildLogDirectory ? `:${logPrefix}.binlog` : localBinLog;\n\n const args = [\n `/clp:NoSummary;NoItemAndPropertyList;Verbosity=${verbosityOption}`,\n '/nologo',\n `/p:Configuration=${buildType}`,\n `/p:Platform=${buildArch}`,\n '/p:AppxBundle=Never',\n `/bl${binlog}`,\n `/flp1:errorsonly;logfile=${errorLog}`,\n `/flp2:warningsonly;logfile=${warnLog}`,\n ];\n\n // Building projects in parallel increases compiler memory usage and\n // doesn't lead to dramatic performance gains (See #4739). Only enable\n // parallel builds on machines with >16GB of memory to avoid OOM errors\n const highMemory = totalmem() > 16 * 1024 * 1024 * 1024;\n const enableParallelBuilds = singleproc === false || highMemory;\n\n if (enableParallelBuilds) {\n args.push('/maxCpuCount');\n }\n\n if (target === 'build') {\n args.push('/restore', '/p:RestorePackagesConfig=true');\n } else {\n args.push(`/t:Deploy`);\n }\n\n Object.keys(msBuildProps).forEach(key => {\n args.push(`/p:${key}=${msBuildProps[key]}`);\n });\n\n try {\n checkRequirements.isWinSdkPresent('10.0');\n } catch (e) {\n newError((e as Error).message);\n throw e;\n }\n\n if (verbose) {\n console.log(`Running MSBuild with args ${args.join(' ')}`);\n }\n\n const progressName =\n target === 'deploy' ? 'Deploying Solution' : 'Building Solution';\n const spinner = newSpinner(progressName);\n try {\n await commandWithProgress(\n spinner,\n progressName,\n path.join(this.msbuildPath(), 'msbuild.exe'),\n [slnFile].concat(args),\n verbose,\n 'MSBuildError',\n );\n } catch (e) {\n let error = e;\n if (e instanceof CodedError) {\n const origCodedError = e as CodedError;\n if (origCodedError.type === 'MSBuildError') {\n // Try to parse msbuild errors from errorLog\n const errorLogContents = (await fs.readFile(errorLog))\n .toString()\n .split(EOL)\n .filter(s => s)\n .map(s => s.trim());\n if (errorLogContents.length > 0) {\n const firstMessage = errorLogContents[0];\n error = new CodedError(\n 'MSBuildError',\n firstMessage,\n origCodedError.data,\n );\n // Hide error messages in a field that won't automatically get reported\n // with telemetry but is still available to be parsed and sanitized\n (error as any).msBuildErrorMessages = errorLogContents;\n }\n }\n }\n throw error;\n }\n // If we have no errors, delete the error log when we're done\n if ((await fs.stat(errorLog)).size === 0) {\n await fs.unlink(errorLog);\n }\n }\n\n static findAvailableVersion(\n buildArch: BuildArch,\n verbose: boolean,\n prerelease?: boolean,\n ): MSBuildTools {\n // https://aka.ms/vs/workloads\n const requires = [\n 'Microsoft.Component.MSBuild',\n getVCToolsByArch(buildArch),\n ];\n const minVersion = process.env.MinimumVisualStudioVersion || process.env.VisualStudioVersion || '17.0';\n const vsInstallation = findLatestVsInstall({\n requires,\n minVersion,\n verbose,\n prerelease,\n });\n\n if (!vsInstallation) {\n if (process.env.MinimumVisualStudioVersion != null) {\n throw new CodedError(\n 'NoMSBuild',\n `MSBuild tools not found for version ${process.env.MinimumVisualStudioVersion} (from environment). Make sure all required components have been installed`,\n {MinimumVisualStudioVersionFromEnv: process.env.MinimumVisualStudioVersion},\n );\n } else if (process.env.VisualStudioVersion != null) {\n throw new CodedError(\n 'NoMSBuild',\n `MSBuild tools not found for version ${process.env.VisualStudioVersion} (from environment). Make sure all required components have been installed`,\n {VisualStudioVersionFromEnv: process.env.VisualStudioVersion},\n );\n } else {\n throw new CodedError(\n 'NoMSBuild',\n `Could not find MSBuild with VCTools for Visual Studio ${minVersion} or later. Make sure all required components have been installed`,\n {minVersion: minVersion},\n );\n }\n }\n\n const toolsPath = path.join(\n vsInstallation.installationPath,\n 'MSBuild/Current/Bin/amd64',\n );\n\n if (fs.existsSync(toolsPath)) {\n if (verbose) {\n newSuccess(\n `Found compatible MSBuild at ${toolsPath} (${vsInstallation.installationVersion})`,\n );\n }\n return new MSBuildTools(\n minVersion,\n vsInstallation.installationPath,\n vsInstallation.installationVersion,\n );\n } else {\n throw new CodedError(\n 'NoMSBuild',\n `MSBuild path '${toolsPath} does not exist'`,\n );\n }\n }\n\n static getAllAvailableUAPVersions(): Version[] {\n const results: Version[] = [];\n\n const programFilesFolder =\n process.env['ProgramFiles(x86)'] || process.env.ProgramFiles;\n // No Program Files folder found, so we won't be able to find UAP SDK\n if (!programFilesFolder) {\n return results;\n }\n\n let uapFolderPath = path.join(\n programFilesFolder,\n 'Windows Kits',\n '10',\n 'Platforms',\n 'UAP',\n );\n\n if (!shell.test('-e', uapFolderPath)) {\n // Check other installation folder from reg\n const sdkFolder = getSDK10InstallationFolder();\n if (sdkFolder) {\n uapFolderPath = path.join(sdkFolder, 'Platforms', 'UAP');\n }\n }\n\n // No UAP SDK exists on this machine\n if (!shell.test('-e', uapFolderPath)) {\n return results;\n }\n\n shell\n .ls(uapFolderPath)\n .filter(uapDir => shell.test('-d', path.join(uapFolderPath, uapDir)))\n .map(Version.tryParse)\n .forEach(version => version && results.push(version));\n\n return results;\n }\n\n evaluateMSBuildProperties(\n solutionFile: string,\n projectFile: string,\n propertyNames?: string[],\n extraMsBuildProps?: Record<string, string>,\n ): Record<string, string> {\n const spinner = newSpinner('Running Eval-MsBuildProperties.ps1');\n\n try {\n const msbuildEvalScriptPath = path.resolve(\n __dirname,\n '..',\n '..',\n 'src',\n 'powershell',\n 'Eval-MsBuildProperties.ps1',\n );\n\n let command = `${powershell} -ExecutionPolicy Unrestricted -NoProfile \"${msbuildEvalScriptPath}\" -SolutionFile '${solutionFile}' -ProjectFile '${projectFile}' -MSBuildPath '${this.msbuildPath()}'`;\n\n if (propertyNames && propertyNames.length > 0) {\n command += ` -PropertyNames '${propertyNames.join(',')}'`;\n }\n\n if (extraMsBuildProps) {\n command += \" -ExtraMSBuildProps '\";\n for (const extraProp in extraMsBuildProps) {\n if (!(extraProp in Object.prototype)) {\n command += `,${extraProp}=${extraMsBuildProps[extraProp]}`;\n }\n }\n command += \"'\";\n }\n\n const commandOutput = execSync(command).toString();\n spinner.succeed();\n\n const properties = JSON.parse(commandOutput) as Record<string, string>;\n spinner.succeed();\n return properties;\n } catch (e) {\n spinner.fail(\n 'Running Eval-MsBuildProperties.ps1 failed: ' + (e as Error).message,\n );\n throw e;\n }\n }\n}\n\nfunction getVCToolsByArch(buildArch: BuildArch): string {\n switch (buildArch) {\n case 'x86':\n case 'x64':\n return 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64';\n case 'ARM64':\n return 'Microsoft.VisualStudio.Component.VC.Tools.ARM64';\n }\n}\n\nfunction getSDK10InstallationFolder(): string {\n const folder = '';\n\n const execString =\n 'reg query \"HKLM\\\\SOFTWARE\\\\Microsoft\\\\Microsoft SDKs\\\\Windows\\\\v10.0\" /s /v InstallationFolder /reg:32';\n let output;\n try {\n output = execSync(execString).toString();\n } catch (e) {\n return folder;\n }\n\n const re =\n /\\\\Microsoft SDKs\\\\Windows\\\\v10.0\\s*InstallationFolder\\s+REG_SZ\\s+(.*)/gim;\n const match = re.exec(output);\n if (match) {\n return match[1];\n }\n\n return folder;\n}\n"]}
@@ -52,11 +52,11 @@ function enumerateVsInstalls(opts) {
52
52
  let maxVersion;
53
53
  if (minVersionSemVer) {
54
54
  minVersion = minVersionSemVer.toString();
55
- maxVersion = (minVersionSemVer.major + 1).toFixed(1);
55
+ maxVersion = `${(minVersionSemVer.major + 1)}.0`;
56
56
  }
57
57
  else if (!Number.isNaN(minVersionNum)) {
58
- minVersion = minVersionNum.toFixed(1);
59
- maxVersion = (Math.floor(minVersionNum) + 1).toFixed(1);
58
+ minVersion = Number.isInteger(minVersionNum) ? `${minVersionNum}.0` : minVersionNum.toString();
59
+ maxVersion = `${(Math.floor(minVersionNum) + 1)}.0`;
60
60
  }
61
61
  else {
62
62
  // Unable to parse minVersion and determine maxVersion,
@@ -1 +1 @@
1
- {"version":3,"file":"vsInstalls.js","sourceRoot":"","sources":["../../src/utils/vsInstalls.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {CodedError} from '@react-native-windows/telemetry';\nimport {execSync} from 'child_process';\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport semver from 'semver';\n\n/**\n * A subset of the per-instance properties returned by vswhere\n */\ninterface VisualStudioInstallation {\n instanceId: string;\n installationPath: string;\n installationVersion: string;\n prerelease: string;\n}\n\n/**\n * Helper to run vswhere in JSON mode\n *\n * @param args Arguments to pass to vsWhere\n * @param verbose enable verbose logging\n */\nfunction vsWhere(args: string[], verbose?: boolean): any[] {\n // This path is maintained and VS has promised to keep it valid.\n const vsWherePath = path.join(\n process.env['ProgramFiles(x86)'] || process.env.ProgramFiles!,\n '/Microsoft Visual Studio/Installer/vswhere.exe',\n );\n\n if (verbose) {\n console.log('Looking for vswhere at: ' + vsWherePath);\n }\n\n if (!fs.existsSync(vsWherePath)) {\n throw new CodedError(\n 'NoVSWhere',\n `Unable to find vswhere at ${vsWherePath}`,\n );\n }\n\n const system32 = `${process.env.SystemRoot}\\\\System32`;\n const cmdline = `${system32}\\\\cmd.exe /c ${system32}\\\\chcp.com 65001>nul && \"${vsWherePath}\" ${args.join(\n ' ',\n )} -format json -utf8`;\n const json = JSON.parse(execSync(cmdline).toString());\n\n for (const entry of json) {\n entry.prerelease = entry.catalog.productMilestoneIsPreRelease;\n }\n\n return json;\n}\n\n/**\n * Enumerate the installed versions of Visual Studio\n */\nexport function enumerateVsInstalls(opts: {\n requires?: string[];\n minVersion?: string;\n verbose?: boolean;\n latest?: boolean;\n prerelease?: boolean;\n}): VisualStudioInstallation[] {\n const args: string[] = [];\n\n if (opts.minVersion) {\n // VS 2019 ex: minVersion == 16.7 => [16.7,17.0)\n // VS 2022 ex: minVersion == 17.0 => [17.0,18.0)\n\n // Try to parse minVersion as both a Number and SemVer\n const minVersionNum = Number(opts.minVersion);\n const minVersionSemVer = semver.parse(opts.minVersion);\n\n let minVersion: string;\n let maxVersion: string;\n\n if (minVersionSemVer) {\n minVersion = minVersionSemVer.toString();\n maxVersion = (minVersionSemVer.major + 1).toFixed(1);\n } else if (!Number.isNaN(minVersionNum)) {\n minVersion = minVersionNum.toFixed(1);\n maxVersion = (Math.floor(minVersionNum) + 1).toFixed(1);\n } else {\n // Unable to parse minVersion and determine maxVersion,\n // caller will throw error that version couldn't be found.\n return [];\n }\n\n const versionRange =\n `[${minVersion},${maxVersion}` + (opts.prerelease ? ']' : ')');\n\n if (opts.verbose) {\n console.log(\n `Looking for VS installs with version range: ${versionRange}`,\n );\n }\n\n args.push(`-version ${versionRange}`);\n }\n\n if (opts.requires) {\n args.push(`-requires ${opts.requires.join(' ')}`);\n }\n\n if (opts.latest) {\n args.push('-latest');\n }\n\n if (opts.prerelease) {\n args.push('-prerelease');\n }\n\n return vsWhere(args, opts.verbose);\n}\n\n/**\n * Find the latest available VS installation that matches the given constraints\n */\nexport function findLatestVsInstall(opts: {\n requires?: string[];\n minVersion?: string;\n verbose?: boolean;\n prerelease?: boolean;\n}): VisualStudioInstallation | null {\n let installs = enumerateVsInstalls({...opts, latest: true});\n\n if (opts.prerelease && installs.length > 0) {\n installs = installs.filter(x => x.prerelease === 'True');\n }\n\n if (installs.length > 0) {\n return installs[0];\n } else {\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"vsInstalls.js","sourceRoot":"","sources":["../../src/utils/vsInstalls.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {CodedError} from '@react-native-windows/telemetry';\nimport {execSync} from 'child_process';\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport semver from 'semver';\n\n/**\n * A subset of the per-instance properties returned by vswhere\n */\ninterface VisualStudioInstallation {\n instanceId: string;\n installationPath: string;\n installationVersion: string;\n prerelease: string;\n}\n\n/**\n * Helper to run vswhere in JSON mode\n *\n * @param args Arguments to pass to vsWhere\n * @param verbose enable verbose logging\n */\nfunction vsWhere(args: string[], verbose?: boolean): any[] {\n // This path is maintained and VS has promised to keep it valid.\n const vsWherePath = path.join(\n process.env['ProgramFiles(x86)'] || process.env.ProgramFiles!,\n '/Microsoft Visual Studio/Installer/vswhere.exe',\n );\n\n if (verbose) {\n console.log('Looking for vswhere at: ' + vsWherePath);\n }\n\n if (!fs.existsSync(vsWherePath)) {\n throw new CodedError(\n 'NoVSWhere',\n `Unable to find vswhere at ${vsWherePath}`,\n );\n }\n\n const system32 = `${process.env.SystemRoot}\\\\System32`;\n const cmdline = `${system32}\\\\cmd.exe /c ${system32}\\\\chcp.com 65001>nul && \"${vsWherePath}\" ${args.join(\n ' ',\n )} -format json -utf8`;\n const json = JSON.parse(execSync(cmdline).toString());\n\n for (const entry of json) {\n entry.prerelease = entry.catalog.productMilestoneIsPreRelease;\n }\n\n return json;\n}\n\n/**\n * Enumerate the installed versions of Visual Studio\n */\nexport function enumerateVsInstalls(opts: {\n requires?: string[];\n minVersion?: string;\n verbose?: boolean;\n latest?: boolean;\n prerelease?: boolean;\n}): VisualStudioInstallation[] {\n const args: string[] = [];\n\n if (opts.minVersion) {\n // VS 2019 ex: minVersion == 16.7 => [16.7,17.0)\n // VS 2022 ex: minVersion == 17.0 => [17.0,18.0)\n\n // Try to parse minVersion as both a Number and SemVer\n const minVersionNum = Number(opts.minVersion);\n const minVersionSemVer = semver.parse(opts.minVersion);\n\n let minVersion: string;\n let maxVersion: string;\n\n if (minVersionSemVer) {\n minVersion = minVersionSemVer.toString();\n maxVersion = `${(minVersionSemVer.major + 1)}.0`;\n } else if (!Number.isNaN(minVersionNum)) {\n minVersion = Number.isInteger(minVersionNum) ? `${minVersionNum}.0` : minVersionNum.toString();\n maxVersion = `${(Math.floor(minVersionNum) + 1)}.0`;\n } else {\n // Unable to parse minVersion and determine maxVersion,\n // caller will throw error that version couldn't be found.\n return [];\n }\n\n const versionRange =\n `[${minVersion},${maxVersion}` + (opts.prerelease ? ']' : ')');\n\n if (opts.verbose) {\n console.log(\n `Looking for VS installs with version range: ${versionRange}`,\n );\n }\n\n args.push(`-version ${versionRange}`);\n }\n\n if (opts.requires) {\n args.push(`-requires ${opts.requires.join(' ')}`);\n }\n\n if (opts.latest) {\n args.push('-latest');\n }\n\n if (opts.prerelease) {\n args.push('-prerelease');\n }\n\n return vsWhere(args, opts.verbose);\n}\n\n/**\n * Find the latest available VS installation that matches the given constraints\n */\nexport function findLatestVsInstall(opts: {\n requires?: string[];\n minVersion?: string;\n verbose?: boolean;\n prerelease?: boolean;\n}): VisualStudioInstallation | null {\n let installs = enumerateVsInstalls({...opts, latest: true});\n\n if (opts.prerelease && installs.length > 0) {\n installs = installs.filter(x => x.prerelease === 'True');\n }\n\n if (installs.length > 0) {\n return installs[0];\n } else {\n return null;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-windows/cli",
3
- "version": "0.74.0",
3
+ "version": "0.75.0-preview.1",
4
4
  "license": "MIT",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "repository": {
@@ -17,10 +17,10 @@
17
17
  "watch": "rnw-scripts watch"
18
18
  },
19
19
  "dependencies": {
20
- "@react-native-windows/codegen": "0.74.0",
21
- "@react-native-windows/fs": "0.74.0",
22
- "@react-native-windows/package-utils": "0.74.0",
23
- "@react-native-windows/telemetry": "0.74.0",
20
+ "@react-native-windows/codegen": "0.75.0-preview.1",
21
+ "@react-native-windows/fs": "0.75.0-preview.1",
22
+ "@react-native-windows/package-utils": "0.75.0-preview.1",
23
+ "@react-native-windows/telemetry": "0.75.0-preview.1",
24
24
  "@xmldom/xmldom": "^0.7.7",
25
25
  "chalk": "^4.1.0",
26
26
  "cli-spinners": "^2.2.0",
@@ -40,11 +40,11 @@
40
40
  "xpath": "^0.0.27"
41
41
  },
42
42
  "devDependencies": {
43
- "@react-native-community/cli-doctor": "13.6.4",
44
- "@react-native-community/cli-types": "13.6.4",
45
- "@rnw-scripts/eslint-config": "1.2.9",
43
+ "@react-native-community/cli-doctor": "14.0.0-alpha.11",
44
+ "@react-native-community/cli-types": "14.0.0-alpha.11",
45
+ "@rnw-scripts/eslint-config": "1.2.23",
46
46
  "@rnw-scripts/jest-unittest-config": "1.5.8",
47
- "@rnw-scripts/just-task": "2.3.25",
47
+ "@rnw-scripts/just-task": "2.3.40",
48
48
  "@rnw-scripts/ts-config": "2.0.5",
49
49
  "@types/chalk": "^2.2.0",
50
50
  "@types/jest": "^29.2.2",
@@ -74,11 +74,11 @@
74
74
  "src/powershell"
75
75
  ],
76
76
  "beachball": {
77
- "defaultNpmTag": "latest",
77
+ "defaultNpmTag": "preview",
78
78
  "disallowedChangeTypes": [
79
79
  "major",
80
80
  "minor",
81
- "prerelease",
81
+ "patch",
82
82
  "premajor",
83
83
  "preminor",
84
84
  "prepatch"