Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[0.74] Improve new project name(space) validation and cleaning #13616

Merged
merged 3 commits into from
Aug 27, 2024

Conversation

jonthysell
Copy link
Contributor

@jonthysell jonthysell commented Aug 26, 2024

Backport PR #13566 to 0.74.

Description

This PR moves all of the logic concerning validating and cleaning project names when creating new projects (via the init-windows CLI command or the soon to be deprecated react-native-windows-init command) into one shared location with unit tests. It also updates the cleaning logic to handle package scopes (i.e. @org/package) and better apply cleaning to packages with hyphens (i.e. my-package).

Going forward, when creating (new or old arch) projects with init-windows, the flow will still to adhere the following rules:

  1. Verify that a string specified with --name or --namespace is valid, or else error out.
  2. If an item isn't specified, do our best to determine the value from package.json, etc., and clean that value if necessary.

When using react-native-windows-init, (which still only lets you specify the --namespace, and always figures out name from package.json, etc.), the flow will be mostly the same as before, where both name and namespace will be cleaned automatically if invalid, rather than erroring out. (However the consolidated cleaning logic should mean an improvement when using tools other than the RN CLI for creating your initial RN project).

Type of Change

  • Bug fix (non-breaking change which fixes an issue)

Why

The rules for what constitutes a "valid" name for a RN project has changed over the years with each of the different tools that are used to create RN projects. This PR is an attempt to both broaden the number of supported new project tools while also ensuring RNW still produces usable native code.

Closes #13558
Closes #13426

What

Moved all name(space) logic into a new nameHelpers module, exposed them to existing callers, and created unit tests.

Screenshots

N/A

Testing

Add new tests for nameHelpers.

Changelog

Should this change be included in the release notes: yes

[0.74] Improve new project name(space) validation and cleaning

Microsoft Reviewers: Open in CodeFlow

Backport PR microsoft#13566 to 0.74.

## Description

This PR moves all of the logic concerning validating and cleaning project names when creating new projects (via the `init-windows` CLI command or the soon to be deprecated `react-native-windows-init` command) into one shared location with unit tests. It also updates the cleaning logic to handle package scopes (i.e. `@org/package`) and better apply cleaning to packages with hyphens (i.e. `my-package`).

Going forward, when creating (new or old arch) projects with `init-windows`, the flow will still to adhere the following rules:
1. Verify that a string specified with `--name` or `--namespace` is valid, or else error out.
2. If an item isn't specified, do our best to determine the value from `package.json`, etc., and clean that value if necessary.

When using `react-native-windows-init`, (which still only lets you specify the `--namespace`, and always figures out name from `package.json`, etc.), the flow will be mostly the same as before, where both name and namespace will be cleaned automatically if invalid, rather than erroring out. (However the consolidated cleaning logic should mean an improvement when using tools other than the RN CLI for creating your initial RN project).

### Type of Change
- Bug fix (non-breaking change which fixes an issue)

### Why
The rules for what constitutes a "valid" name for  a RN project has changed over the years with each of the different tools that are used to create RN projects. This PR is an attempt to both broaden the number of supported new project tools while also ensuring RNW still produces usable native code.

Closes microsoft#13558
Closes microsoft#13426

### What
Moved all name(space) logic into a new `nameHelpers` module, exposed them to existing callers, and created unit tests.

## Screenshots
N/A

## Testing
Add new tests for nameHelpers.

## Changelog
Should this change be included in the release notes: _yes_

[0.74] Improve new project name(space) validation and cleaning
@jonthysell jonthysell requested review from a team as code owners August 26, 2024 21:24
@jonthysell jonthysell enabled auto-merge (squash) August 26, 2024 23:03
@jonthysell jonthysell merged commit 39e5e79 into microsoft:0.74-stable Aug 27, 2024
95 checks passed
@jonthysell jonthysell deleted the cleanname74 branch August 27, 2024 21:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants