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

fix: Don't require a name for the root package.json. #9378

Merged
merged 4 commits into from
Nov 5, 2024
Merged

Conversation

anthonyshew
Copy link
Contributor

@anthonyshew anthonyshew commented Nov 4, 2024

Description

There doesn't necessarily need to be a name field in the root package.json, since it won't get used for other work throughout the graph.

Testing Instructions

I wrote a test and tested against create-turbo by removing the name field from the root package.json

@anthonyshew anthonyshew requested a review from a team as a code owner November 4, 2024 22:31
@turbo-orchestrator turbo-orchestrator bot added area: docs Improvements or additions to documentation created-by: turborepo owned-by: turborepo labels Nov 4, 2024
Copy link

vercel bot commented Nov 4, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
examples-nonmonorepo ✅ Ready (Inspect) Visit Preview 💬 Add feedback Nov 4, 2024 11:06pm
8 Skipped Deployments
Name Status Preview Comments Updated (UTC)
examples-basic-web ⬜️ Ignored (Inspect) Visit Preview Nov 4, 2024 11:06pm
examples-designsystem-docs ⬜️ Ignored (Inspect) Visit Preview Nov 4, 2024 11:06pm
examples-gatsby-web ⬜️ Ignored (Inspect) Visit Preview Nov 4, 2024 11:06pm
examples-kitchensink-blog ⬜️ Ignored (Inspect) Visit Preview Nov 4, 2024 11:06pm
examples-native-web ⬜️ Ignored (Inspect) Visit Preview Nov 4, 2024 11:06pm
examples-svelte-web ⬜️ Ignored (Inspect) Visit Preview Nov 4, 2024 11:06pm
examples-tailwind-web ⬜️ Ignored (Inspect) Visit Preview Nov 4, 2024 11:06pm
examples-vite-web ⬜️ Ignored (Inspect) Visit Preview Nov 4, 2024 11:06pm

Copy link
Member

@chris-olszewski chris-olszewski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Only a small suggested change to the validation logic

Comment on lines 146 to 162
for info in self.packages.values() {
let name = info.package_json.name.as_deref();
if matches!(name, None | Some("")) {
let package_json_path = self.repo_root.resolve(info.package_json_path());
return Err(Error::PackageJsonMissingName(package_json_path));
let package_json_path = self.repo_root.resolve(info.package_json_path());
match name {
Some("") => {
return Err(Error::PackageJsonMissingName(package_json_path));
}
None => {
// We don't need to require a name for the root package.json.
if package_json_path == self.repo_root.join_component("package.json") {
continue;
}

return Err(Error::PackageJsonMissingName(package_json_path));
}
Some(_) => continue,
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this can be simplified by just checking if the package name is Root at the start

for (package_name, info) in self.packages.iter() {
            if matches!(package_name, PackageName::Root) {
                continue;
            }
            let name = info.package_json.name.as_deref();
            match name {
                Some("") | None => {
                    let package_json_path = self.repo_root.resolve(info.package_json_path());
                    return Err(Error::PackageJsonMissingName(package_json_path));
                }
                Some(_) => continue,
            }
        }

Comment on lines +150 to +153
Some("") => {
return Err(Error::PackageJsonMissingName(package_json_path));
}
None => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we're differentiating between "name": "" vs "name": null?

if matches!(name, None | Some("")) {
let package_json_path = self.repo_root.resolve(info.package_json_path());
return Err(Error::PackageJsonMissingName(package_json_path));
let package_json_path = self.repo_root.resolve(info.package_json_path());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we do want to stick to a path based check, we should just be doing info.package_path() == AnchoredSystemPath::new("").unwrap() to see if the relative path of the package is nothing e.g. it's at the root.

@anthonyshew anthonyshew merged commit 21863ad into main Nov 5, 2024
40 checks passed
@anthonyshew anthonyshew deleted the shew-357e1 branch November 5, 2024 00:06
anthonyshew added a commit that referenced this pull request Nov 5, 2024
### Description

Following up on Chris' comment on #9378. I didn't see it before I hit
merge because I was on mobile.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants