This project is based on prettier-plugin-organize-attributes, but adds additional features
npm i -D @xeonlink/prettier-plugin-organize-attributes
API Option | CLI Option | Default | Type |
---|---|---|---|
attributeGroups |
--attribute-groups |
[] |
string[] |
attributeSort |
--attribute-sort |
"NONE" |
"NONE" , "ASC" , "DESC" |
attributeIgnoreCase |
--attribute-ignore-case |
false |
boolean |
{
"plugins": ["@xeonlink/prettier-plugin-organize-attributes"],
"attributeGroups": ["^class$", "^(id|name)$", "$DEFAULT", "^aria-"]
}
<!-- input -->
<div aria-disabled="true" name="myname" id="myid" class="myclass" src="other"></div>
<!-- output -->
<div class="myclass" name="myname" id="myid" src="other" aria-disabled="true"></div>
PRESET
configurations.$DEFAULT
group.{
"plugins": ["@xeonlink/prettier-plugin-organize-attributes"],
"attributeGroups": ["$DEFAULT", "^data-"],
"attributeSort": "ASC"
}
<!-- input -->
<div a="a" c="c" b="b" data-c="c" data-a="a" data-b="b"></div>
<!-- output -->
<div a="a" b="b" c="c" data-a="a" data-b="b" data-c="c"></div>
Value | Description |
---|---|
NONE (default) |
No sorting (maintains original order) |
ASC |
Ascending sort (alphabetical order) |
DESC |
Descending sort (reverse alphabetical order) |
{
"plugins": ["@xeonlink/prettier-plugin-organize-attributes"],
"attributeGroups": ["^group-a$", "^group-b$", "^group-A$", "^group-B$"],
"attributeIgnoreCase": false
}
<!-- input -->
<div group-b group-B group-A group-a></div>
<!-- output -->
<div group-a group-b group-A group-B></div>
true
, so if the option is not specified, the regular expression is case-insensitive./** @type {import('prettier').Config & import('@xeonlink/prettier-plugin-organize-attributes').Config} */
const config = {
plugins: ["@xeonlink/prettier-plugin-organize-attributes"],
attributeSort: "ASC",
};
export default config;
When using a JavaScript config, you can import the types for IntelliSense
This plugin works by dynamically importing and calling parsers from plugins with lower priority to avoid conflicts with other plugins, and then modifying the AST. Therefore, if prettier doesn't have built-in support for a parser, you need to use it together with a plugin that has that parser. (e.g., prettier-plugin-svelte)
{
"plugins": [
"prettier-plugin-tailwindcss",
"@xeonlink/prettier-plugin-organize-attributes"
]
}
{
"plugins": [
"prettier-plugin-svelte",
"@xeonlink/prettier-plugin-organize-attributes"
]
}
{
"plugins": [
"prettier-plugin-astro",
"@xeonlink/prettier-plugin-organize-attributes"
]
}