-
Notifications
You must be signed in to change notification settings - Fork 128
Improve formatting of .json
and .yml
files
#1605
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
base: trunk
Are you sure you want to change the base?
Improve formatting of .json
and .yml
files
#1605
Conversation
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.
To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
Let's also do linting of JSON and YML files in the lint-staged config so this doesn't happen again. Also, why isn't the formatting not causing a failure on the GHA checks? |
Will Dependabot updates undo the changes to |
|
I think we squash and merge this one and include an ignore commit for the merge commit to hide it in git blame. Ref: https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file#ignore-commits-in-the-blame-view. |
We should exclude generated lock files from Prettier, just to avoid conflicts |
Yes, we should ignore any auto-generated files. @devansh016 can you please add a https://prettier.io/docs/en/ignore.html with such files? |
See also WordPress/gutenberg#30714 in which Gutenberg started applying formatting to JSON files. |
Co-authored-by: Mukesh Panchal <[email protected]>
I think we still need to confirm Dependabot's behavior. We wouldn't want it constantly reverting tabs back to spaces. |
Dependabot generally respects the indentation style in |
…mat-files-using-npm-run-format-js
…ansh016/wp-performance into Format-files-using-npm-run-format-js
…mat-files-using-npm-run-format-js
This comment was marked as spam.
This comment was marked as spam.
indent_size = 4 | ||
tab_width = 4 | ||
indent_style = tab | ||
insert_final_newline = true | ||
trim_trailing_whitespace = true | ||
indent_style = tab |
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.
Why this change? The tab width for actual code (PHP and JS) should be 4, so I don't see why this needs to be removed here.
It doesn't apply to .json
and .yml
, but then we should have specific rules for these file types.
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.
@felixarntz
When both .editorconfig and .prettierrc are present, Prettier gives precedence to .prettierrc, which ensures PHP and JS files retain their intended 4-space/tab indentation.
I removed the global indent_size = 4 from .editorconfig since it was unintentionally being inherited by .json and .yml files. These files conventionally follow 2-space indentation, so I added specific overrides for them instead.
These updates follow the coding standards defined in the WordPress Core and Gutenberg repositories to stay aligned with WordPress development practices.
Please let me know if you'd like me to make any adjustments or if there's anything I might have missed. Thanks!
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.
Following up on this, I am still not sure about it.
You mention it was removed because it made .json
and .yml
files use the indent of 4, but that's exactly what is currently happening: All .json
and .yml
files use the indent of 4. So from that perspective, I don't see why having this here would be problematic.
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.
Looking back at this more carefully, I realize I may have overcomplicated the situation. The global indent_size = 4 shouldn't actually cause issues with .json and .yml files if we have proper Prettier configuration in place, since Prettier takes precedence for formatting.
But still we should keep the .editorconfig aligned with WordPress Core and Gutenberg repositories for consistency.
.json
and .yml
files
Note that there are now some merge conflicts too |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## trunk #1605 +/- ##
=======================================
Coverage 68.02% 68.02%
=======================================
Files 92 92
Lines 7627 7627
=======================================
Hits 5188 5188
Misses 2439 2439
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
.prettierrc.js
Outdated
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 this any different than the .prettierrc
?
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.
No, functionally they're identical in this case. Both .prettierrc.js and .prettierrc contain the same configuration options and produce the same formatting results.
We can remove .prettierrc.js
here
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.
Alternatively, it could be added to package.json
:
"prettier": "@wordpress/prettier-config",
The following files are now being formatted when running
|
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.
This LGTM. @swissspidy could you second?
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.
@devansh016 Thank you for the iterations.
I'm still slightly confused by some of the changes in this PR, which seem misaligned / inconsistent in itself.
indent_size = 4 | ||
tab_width = 4 | ||
indent_style = tab | ||
insert_final_newline = true | ||
trim_trailing_whitespace = true | ||
indent_style = tab |
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.
Following up on this, I am still not sure about it.
You mention it was removed because it made .json
and .yml
files use the indent of 4, but that's exactly what is currently happening: All .json
and .yml
files use the indent of 4. So from that perspective, I don't see why having this here would be problematic.
.editorconfig
Outdated
[*.{yml,yaml}] | ||
indent_style = space | ||
indent_size = 2 |
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.
This is confusing to me. As far as I can tell, all the .yml
files were now updated to use indent size 4, which looks right. But then why does this say indent size 2 here? 🤔
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.
You're absolutely right about the inconsistency. Looking at the actual formatting changes in this PR, all .yml
files are indeed using an indent size of 4, which aligns with the existing codebase standards.
The indent_size = 2
in the .editorconfig
is misleading since Prettier takes precedence and formats these files with 4-space indentation. I initially copied this configuration from the Gutenberg and Core repositories, but it seems now .editorconfig
file may not be updated correctly in them.
For consistency and clarity, we should update this to indent_size = 4 to accurately reflect how the files are actually being formatted. This way, the .editorconfig and the actual file formatting are aligned, even though Prettier is the one enforcing the formatting rules.
Would you prefer I update it to indent_size = 4, or we could remove the YAML-specific configuration entirely since Prettier is handling the formatting?
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.
Probably add indent_size = 4
since then the editor will automatically format it properly without requiring Prettier to run, potentially.
Summary
Fixes #1603
Relevant technical choices
The following files have been formatted by using
npm run format-js
Note: .yml and .json files were not ignored to ensure they are properly formatted as well.