Intellicode/eslint-plugin-react-native

View on GitHub
docs/rules/sort-styles.md

Summary

Maintainability
Test Coverage
# Require StyleSheet keys to be sorted
It's like [sort-keys](https://eslint.org/docs/rules/sort-keys), but just for React Native styles.

Keeping your style definitions sorted is a common convention that helps with readability. This rule lets you enforce an ascending (default) or descending alphabetical order for both "class names" and style properties.

## Rule Details

The following patterns are considered warnings:

```js
const styles = StyleSheet.create({
  button: {
    width: 100,
    color: 'green',
  },
});
```

```js
const styles = StyleSheet.create({
  button: {},
  anchor: {},
});
```

The following patterns are not considered warnings:

```js
const styles = StyleSheet.create({
  button: {
    color: 'green',
    width: 100,
  },
});
```

```js
const styles = StyleSheet.create({
  anchor: {},
  button: {},
});
```

## Options

```
{
    "react-native/sort-styles": ["error", "asc", { "ignoreClassNames": false, "ignoreStyleProperties": false }]
}
```

The 1st option is "asc" or "desc".

* `"asc"` (default) - enforce properties to be in ascending order.
* `"desc"` - enforce properties to be in descending order.

The 2nd option is an object which has 2 properties.

* `ignoreClassNames` - if `true`, order will not be enforced on the class name level. Default is `false`.
* `ignoreStyleProperties` - if `true`, order will not be enforced on the style property level. Default is `false`.

### desc

`/* eslint react-native/sort-styles: ["error", "desc"] */`

The following patterns are considered warnings:

```js
const styles = StyleSheet.create({
  button: {
    color: 'green',
    width: 100,
  },
});
```

```js
const styles = StyleSheet.create({
  anchor: {},
  button: {},
});
```

The following patterns are not considered warnings:

```js
const styles = StyleSheet.create({
  button: {
    width: 100,
    color: 'green',
  },
});
```

```js
const styles = StyleSheet.create({
  button: {},
  anchor: {},
});
```

### ignoreClassNames

`/* eslint react-native/sort-styles: ["error", "asc", { "ignoreClassNames": true }] */`

The following patterns are not considered warnings:

```js
const styles = StyleSheet.create({
  button: {
    color: 'green',
    width: 100,
  },
  anchor: {},
});
```

# ignoreStyleProperties

`/* eslint react-native/sort-styles: ["error", "asc", { "ignoreStyleProperties": true }] */`

The following patterns are not considered warnings:

```js
const styles = StyleSheet.create({
  anchor: {},
  button: {
    width: 100,
    color: 'green',
  },
});
```