4.0.7 • Published 9 months ago

stylelint-taro v4.0.7

Weekly downloads
-
License
MIT
Repository
-
Last release
9 months ago

stylelint-taro

Taro 多端融合校验工具

我们可以根据我们需要适配多少个端,根据不同端所支持的最小样式子集进行样式校验:

安装

yarn add -D stylelint-taro

使用

项目根目录添加文件 .stylelintrc.js

// .stylelintrc.js
const mergeConfig = require('stylelint-taro/lib/config')

// 合并配置,填写需要适配的端:"h5", "miniprogram", "harmony", "rn"
module.exports = mergeConfig(['h5', 'miniprogram', 'harmony'], {
  // 自定义样式规范: 支持sass的语言规范
  // customSyntax: "postcss-scss"
  // 自定义Stylelint配置
  rules: {},
})

内置 rule

taro/no-nested-selectors

仅能使用 class 选择器

// .stylelintrc.js
module.exports = mergeConfig(['harmony'], {})
/* 通过检查 */
✅ .hello {
  /* ... */
}
/* 警告提示:harmony平台仅能使用单类选择器 */
❌ #a {
}
❌ .a .b {
}
❌ #a .b {
}
❌ .a > .b {
}
❌ .a + .b {
}
❌ .a ~ .b {
}

taro/property-allowed-list

允许的属性列表

taro/declaration-property-value-allowed-list

允许的属性及其对应的值

{
  plugins: ['stylelint-taro']
  rules: {
    'taro/declaration-property-value-allowed-list': {
      harmony: {
        'color': true,  // 支持color属性及所有合法值
        'text-align': ['left', 'right'], // 仅支持left、right 2个值
        'height': [/^-?\d+(\.\d+)?(px|vw|vh|%)?$/i] // 支持匹配height为length
      },
      rn: {
        'text-align': ['left', 'center'], // 仅支持left、center 2个值
      }
    }
  }
}

如果在支持rnharmony的情况下:

// .stylelintrc.js
module.exports = mergeConfig(['harmony', 'rn'], {})
/* 通过检查 */
✅ .hello {
  text-align: left;
}
/* 警告提示 */
❌ .hello2 {
  /* rn平台的text-align属性暂不支持right */
  text-align: right;
}

开启 VSCODE 校验

项目空间内,建议通过修改 settings.json 配置

// .vscode/settings.json
{
  "stylelint.enable": true,
  "stylelint.validate": ["css", "sass", "scss", "less", "postcss"]
}

样式支持情况

类型举例合法值备注
Length10px、10vw、10vh、100%、10rem、calc(100% - 20px)1rem = 16px
Color#f00、rgb(0,0,0)、rgba(0,0,0,0.2)、green暂不支持 hsl 等方法
Border'1px solid #f00'符合 w3c 规范

通用属性

所有元素都支持的样式:

属性可选值 / 单位支持情况
flexflexGrow flexShrink flexBasis✔️
flex-growNumber✔️
flex-shrinkNumber✔️
flex-basisLength✔️
flex-direction'row','row-reverse','column','column-reverse'✔️
justify-content'flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'space-evenly'✔️
align-content'flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'space-evenly'✔️
alignitems'flex-start', 'flex-end', 'center', 'baseline', 'stretch' , 'auto'✔️
align-self'flex-start', 'flex-end', 'center', 'baseline', 'stretch' , 'auto'✔️
flex-wrap'nowrap', 'wrap', 'wrap-reverse'
position'relative', 'absolute'✔️
leftLength✔️
topLength
rightLength
z-zndexNumber✔️
bottomLength✔️
marginLength \ Length Length \ Length Length Length \ Length Length Length Length✔️
margin-topLength✔️
margin-rightLength✔️
margin-bottomLength✔️
margin-leftLength✔️
paddingLength \ Length Length \ Length Length Length \ Length Length Length Length✔️
padding-topLength✔️
padding-rightLength✔️
padding-bottomLength✔️
padding-leftLength✔️
widthLength✔️
heightLength✔️
min-heightLength✔️
min-widthLength✔️
max-heightLength✔️
max-eidthLength✔️
background✔️
background-colorColor✔️
background-image"src('xxx')", "linear-gradient(xxx)" 支持图片资源和线性渐变 "✔️
background-size'cover', 'contain', Length(x y), Length(x) Length(y)✔️
background-positioncenter', 'top', 'bottom', 'left', 'right', , Length(x y), Length(x) Length(y)✔️
background-repeat'repeat', 'no-repeat', 'repeat-x', 'repeat-y'✔️
borderBorder(可设置 4 个值,控制 4 个方向)✔️
border-topBorder✔️
border-leftBorder✔️
border-rightBorder✔️
border-bottomBorder✔️
border-colorColor(可设置 4 个值,控制 4 个方向)✔️
border-top-colorColor✔️
border-right-colorColor✔️
border-bottom-colorColor✔️
border-left-colorColor✔️
border-radiusLength(可设置 4 个值,控制 4 个方向)✔️
border-top-left-radiusLength✔️
border-top-right-radiusLength✔️
border-bottom-left-radiusLength✔️
border-bottom-right-radiusLength✔️
border-style'dotted', 'dashed', 'solid' (4 个值,控制 4 个方向)✔️
border-top-style'dotted', 'dashed', 'solid'✔️
border-right-style'dotted', 'dashed', 'solid'✔️
border-bottom-style'dotted', 'dashed', 'solid'✔️
border-left-style'dotted', 'dashed', 'solid'✔️
opacityNumber✔️
display'flex', 'none', 'block'✔️
display'inline-block', 'inline-flex', 'inline'
overflow'hidden', 'visible'✔️
transformtranslate、translateX、translateY、translateZ、translate2d、translate3d、scale、scaleX、scaleY、scale3d、rotate、rotateX、rotateY、rotate3d✔️
transform-originLength Length✔️
content✔️

⚠️ 注意:

  • transform 不允许连续出现 2 个同类型如:transform: translate(20px 20px) translate3d(10px, 30px, 30px)
  • display 不支持行内
  • 定位不支持 bottomright

文本样式

属性可选值 / 单位支持情况
font-sizeLength✔️
font-family✔️
font-style'normal', 'italic'✔️
font-weight100~900, 'bold','bolder','light','lighter','normal'✔️
line-height'XXpx' (需要指定具体指,不支持 Number)✔️
text-align'center', 'left', 'right'✔️
text-decoration('none', 'underline', 'line-through', 'overline') Color✔️
text-overflow'ellipsis', 'clip'✔️
colorColor✔️
-webkit-line-clampNumber✔️

⚠️ 注意:

  • 文本样式 仅对<Text></Text>节点生效
  • 文本样式 不支持继承
  • line-height不支持数值

以下两种情况是正确的对文本进行样式添加的案例:

1.直接将样式添加在<Text/>

// ✅ 允许
<Text className="txt">hello</Text>

2.样式添加到<View/>下是一个文本内容

// ✅ 允许
<View className="txt">hello</View>

错误案例:

// ❌ hello 父级没有添加文本样式,txt的文本属性无法继承下去
<View className="txt">
  <Text>hello</Text>
</View>

CSS 选择器

通用选择器

注意点:

  • 支持类选择器
  • 不支持ID 选择器、标签选择器、属性选择器
选择器示例示例说明支持情况
.class.intro选择所有 class="intro" 的元素✔️
.class.class.red.big选择所有 class="red big" 元素✔️
.class, .class.item, .text选择所有 class="item" 元素和 class="text" 元素✔️
.class .class.grandfather .child选择所有 class="grandfather" 内所有的 class="child" 的元素✔️
.class > .class.parent > .child选择所有 父级是 class="parent"的 class="child" 元素✔️
.class+.class.red+.big选择所有紧跟在 class="red" 元素之后的第一个 class="big" 元素
.class~.class.red~.big选择所有紧跟在 class="red" 之后的每一个 class="big" 元素
#id#firstname选择所有 id="firstname"的元素
**选择所有元素
elementp选择所有\元素
[attribute][target]选择所有带有 target 属性元素
[attribute=value][target=blank]选择所有使用 target="blank"的元素
...其他

伪类

  • 支持before、after
选择器示例示例说明支持情况
:before.intro:before在每个 class="intro" 元素之前插入内容✔️
:after.intro:after在每个 class="intro" 元素之后插入内容✔️
:nth-child().intro:nth-child(2)选择 class="intro" 元素是其父级的第二个子元素
:nth-last-child().intro:nth-last-child(2)选择 class="intro" 元素是其父级的第二个子元素, 从最后一个子项计数
:first-child.intro:first-child选择 class="intro" 元素是其父级的第一个子级
:last-child.intro:last-child选择 class="intro" 元素是其父级的最后一个子级
:root:root选择文档的根元素
:checkedinput:checked选择每个选中的输入元素
...其他
4.0.7

9 months ago

4.0.0-beta.139

9 months ago

4.0.7-alpha.4

9 months ago

4.0.6

10 months ago

4.0.6-alpha.0

10 months ago

4.0.0-beta.138

11 months ago

4.0.7-alpha.3

9 months ago

4.0.7-alpha.2

9 months ago

4.0.7-alpha.1

10 months ago

4.0.7-alpha.0

10 months ago

4.0.0-alpha.9

1 year ago

4.0.0-alpha.7

1 year ago

4.0.0-alpha.8

1 year ago

4.0.0-alpha.5

1 year ago

4.0.0-alpha.6

1 year ago

4.0.5

11 months ago

4.0.4

12 months ago

4.0.1

12 months ago

4.0.0

1 year ago

4.0.3

12 months ago

4.0.2

12 months ago

4.0.3-alpha.1

12 months ago

4.0.3-alpha.0

12 months ago

4.0.3-alpha.3

12 months ago

4.0.3-alpha.5

12 months ago

4.0.3-alpha.4

12 months ago

4.0.5-alpha.10

11 months ago

4.0.0-beta.137

11 months ago

4.0.0-beta.133

11 months ago

4.0.0-beta.134

11 months ago

4.0.0-beta.135

11 months ago

4.0.0-beta.136

11 months ago

4.0.0-beta.130

12 months ago

4.0.0-beta.131

12 months ago

4.0.0-beta.132

12 months ago

4.0.0-beta.99

1 year ago

4.0.0-beta.98

1 year ago

4.0.0-beta.95

1 year ago

4.0.0-beta.94

1 year ago

4.0.0-beta.97

1 year ago

4.0.0-beta.96

1 year ago

4.0.0-beta.91

1 year ago

4.0.0-beta.90

1 year ago

4.0.0-beta.93

1 year ago

4.0.0-beta.92

1 year ago

4.0.0-alpha.42

1 year ago

4.0.0-alpha.41

1 year ago

4.0.0-alpha.45

12 months ago

4.0.0-alpha.44

1 year ago

4.0.0-alpha.43

1 year ago

4.0.0-beta.115

1 year ago

4.0.0-beta.116

1 year ago

4.0.0-beta.117

1 year ago

4.0.0-beta.118

1 year ago

4.0.0-beta.111

1 year ago

4.0.0-beta.88

1 year ago

4.0.0-beta.112

1 year ago

4.0.0-beta.87

1 year ago

4.0.0-beta.113

1 year ago

4.0.0-beta.114

1 year ago

4.0.0-beta.89

1 year ago

4.0.0-beta.84

1 year ago

4.0.0-beta.83

1 year ago

4.0.0-beta.86

1 year ago

4.0.0-beta.110

1 year ago

4.0.0-beta.85

1 year ago

4.0.0-beta.80

1 year ago

4.0.0-beta.82

1 year ago

4.0.0-beta.81

1 year ago

4.0.0-beta.119

12 months ago

4.0.1-alpha.0

12 months ago

4.0.1-alpha.1

12 months ago

4.0.0-beta.126

12 months ago

4.0.0-beta.127

12 months ago

4.0.0-beta.128

12 months ago

4.0.0-beta.129

12 months ago

4.0.0-beta.122

12 months ago

4.0.0-beta.77

1 year ago

4.0.0-beta.123

12 months ago

4.0.0-beta.76

1 year ago

4.0.0-beta.124

12 months ago

4.0.0-beta.79

1 year ago

4.0.0-beta.125

12 months ago

4.0.0-beta.78

1 year ago

4.0.0-beta.120

12 months ago

4.0.0-beta.121

12 months ago

4.0.4-alpha.0

12 months ago

4.0.0-alpha.17

1 year ago

4.0.0-alpha.16

1 year ago

4.0.0-alpha.15

1 year ago

4.0.0-alpha.14

1 year ago

4.0.4-alpha.1

12 months ago

4.0.4-alpha.2

12 months ago

4.0.0-alpha.19

1 year ago

4.0.0-alpha.18

1 year ago

4.0.0-alpha.13

1 year ago

4.0.0-alpha.12

1 year ago

4.0.0-alpha.11

1 year ago

4.0.0-alpha.10

1 year ago

4.0.0-beta.104

1 year ago

4.0.0-beta.105

1 year ago

4.0.0-beta.106

1 year ago

4.0.0-beta.107

1 year ago

4.0.0-beta.100

1 year ago

4.0.0-beta.101

1 year ago

4.0.0-beta.102

1 year ago

4.0.0-beta.103

1 year ago

4.0.0-beta.108

1 year ago

4.0.0-beta.109

1 year ago

4.0.0-alpha.39

1 year ago

4.0.0-alpha.38

1 year ago

4.0.0-alpha.37

1 year ago

4.0.0-alpha.36

1 year ago

4.0.0-alpha.31

1 year ago

4.0.0-alpha.30

1 year ago

4.0.0-alpha.35

1 year ago

4.0.0-alpha.34

1 year ago

4.0.0-alpha.33

1 year ago

4.0.0-alpha.32

1 year ago

4.0.0-alpha.28

1 year ago

4.0.0-canary.12

1 year ago

4.0.0-alpha.27

1 year ago

4.0.0-canary.13

1 year ago

4.0.0-alpha.26

1 year ago

4.0.0-alpha.25

1 year ago

4.0.0-alpha.29

1 year ago

4.0.0-alpha.20

1 year ago

4.0.0-alpha.24

1 year ago

4.0.0-alpha.23

1 year ago

4.0.0-alpha.22

1 year ago

4.0.0-alpha.21

1 year ago

4.0.5-alpha.1

11 months ago

4.0.5-alpha.2

11 months ago

4.0.5-alpha.3

11 months ago

4.0.5-alpha.6

11 months ago

4.0.5-alpha.7

11 months ago

4.0.5-alpha.9

11 months ago

4.0.3-alpah.2

12 months ago

4.0.0-beta.75

1 year ago

4.0.0-beta.74

1 year ago

4.0.0-beta.73

1 year ago

4.0.0-beta.72

1 year ago

4.0.0-beta.71

1 year ago

4.0.0-beta.70

1 year ago

4.0.0-beta.69

1 year ago

4.0.0-beta.68

1 year ago

4.0.0-beta.66

1 year ago

4.0.0-beta.67

1 year ago

4.0.0-beta.65

1 year ago

4.0.0-beta.62

1 year ago

4.0.0-beta.64

1 year ago

4.0.0-beta.63

1 year ago

4.0.0-beta.61

1 year ago

4.0.0-beta.60

1 year ago

4.0.0-beta.59

1 year ago

4.0.0-beta.58

1 year ago

4.0.0-beta.57

1 year ago

4.0.0-beta.55

1 year ago

4.0.0-beta.56

1 year ago

4.0.0-beta.54

1 year ago

4.0.0-beta.51

1 year ago

4.0.0-beta.53

1 year ago

4.0.0-beta.52

1 year ago

4.0.0-beta.50

1 year ago

4.0.0-beta.49

1 year ago

4.0.0-beta.48

1 year ago

4.0.0-beta.47

1 year ago

4.0.0-beta.46

1 year ago

4.0.0-beta.44

1 year ago

4.0.0-beta.45

1 year ago

4.0.0-beta.43

1 year ago

4.0.0-beta.42

1 year ago

4.0.0-beta.41

1 year ago

4.0.0-beta.40

1 year ago

4.0.0-beta.39

1 year ago

4.0.0-beta.37

1 year ago

4.0.0-beta.38

1 year ago

4.0.0-beta.36

1 year ago

4.0.0-canary.10

1 year ago

4.0.0-canary.11

1 year ago

4.0.0-beta.35

1 year ago

4.0.0-beta.34

1 year ago

4.0.0-beta.33

1 year ago

4.0.0-beta.32

1 year ago

4.0.0-beta.31

1 year ago

4.0.0-beta.30

1 year ago

4.0.0-beta.29

1 year ago

4.0.0-beta.28

1 year ago

4.0.0-beta.27

1 year ago

4.0.0-beta.26

1 year ago

4.0.0-beta.25

1 year ago

4.0.0-beta.24

1 year ago

4.0.0-beta.23

1 year ago

4.0.0-beta.22

1 year ago

4.0.0-beta.21

1 year ago

4.0.0-beta.20

1 year ago

4.0.0-beta.19

1 year ago

4.0.0-beta.18

1 year ago

4.0.0-beta.15

1 year ago

4.0.0-beta.14

1 year ago

4.0.0-beta.17

1 year ago

4.0.0-beta.16

1 year ago

4.0.0-beta.13

1 year ago

4.0.0-beta.12

1 year ago

4.0.0-beta.11

1 year ago

4.0.0-alpha.3

1 year ago

4.0.0-beta.10

1 year ago

4.0.0-alpha.2

1 year ago

4.0.0-beta.9

1 year ago

4.0.0-beta.8

1 year ago

4.0.0-beta.7

1 year ago

4.0.0-beta.6

1 year ago

4.0.0-beta.5

1 year ago

4.0.0-canary.9

1 year ago

4.0.0-beta.4

1 year ago

4.0.0-beta.3

1 year ago

4.0.0-beta.2

1 year ago

4.0.0-canary.8

1 year ago

4.0.0-canary.7

2 years ago

4.0.0-canary.6

2 years ago

4.0.0-beta.1

2 years ago

4.0.0-canary.5

2 years ago

4.0.0-canary.2

2 years ago

4.0.0-canary.1

2 years ago

4.0.0-canary.4

2 years ago

4.0.0-canary.3

2 years ago

4.0.0-canary.0

2 years ago

4.0.0-beta.0

2 years ago

4.0.0-alpha.0

2 years ago