1

我在 CSS-IN-JS 项目中使用 stylelint(这里使用 astroturf,但我也面临使用任何 CSS-IN-JS 库(如 styled-components)的相同模式)。

我在同一个文件中定义了不同样式的元素,因此有时最终会出现重复的选择器和/或导入规则。

/* style.js */
import styled from 'astroturf';

export const StyledComponentA = styled('div')`
  transform: scale(0);

  &.visible {
    transform: scale(1);
  }
`;

export const StyledComponentB = styled('div')`
  opacity: 0;

  /* -> stylelint error: Unexpected duplicate selector "&.visible" */
  &.visible {
    opacity: 1;
  }
`;

我这样写的:

import React from 'react';
import { StyledComponentA, StyledComponentB } from './style';

export const Component = ({ isVisible }) => (
  <StyledComponentA visible={isVisible}>
    <StyledComponentB visible={isVisible}>Whatever</StyledComponentB>
  </StyledComponentA>
);

有没有办法在块而不是整个文件上设置这些 stylelint 规则?

4

1 回答 1

2

有没有办法在块而不是整个文件上设置这些 stylelint 规则?

那没有。

像这样的规则no-duplicate-selectors的范围是一个源,stylelint 将以下内容视为源:

  • 整个文件
  • 传递给节点 APIcode选项的代码
  • stdin传递给CLI

在编写 CSS-in-JS 时,建议关闭范围为源的规则。您可以关闭它们:

于 2018-12-12T22:57:51.310 回答