-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
8 Skipped Deployments
|
There was a problem hiding this 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
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, | ||
} |
There was a problem hiding this comment.
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,
}
}
Some("") => { | ||
return Err(Error::PackageJsonMissingName(package_json_path)); | ||
} | ||
None => { |
There was a problem hiding this comment.
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()); |
There was a problem hiding this comment.
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.
### Description Following up on Chris' comment on #9378. I didn't see it before I hit merge because I was on mobile.
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 thename
field from the root package.json