postcss-jsx로 React x CSSinJS 편안함

자기소개



  • @otofu-square
  • 외부등단 2회째의 초보자입니다🙇
  • JUBILEE WORKS, inc의 프런트 엔드 산업
  • TimeTree라는 캘린더 앱
  • React/Redux/TypeScript/hypernova...etc

  • 최근 wasm(Rust), Web Components에 관심이 있습니다


  • 오늘 말하기



    오늘 말하기


  • postcss-jsx 란 무엇입니까?
  • postcss-jsx로 할 수있게 된 것 ①
  • postcss-jsx로 할 수있게 된 것 ②
  • 소감


  • postcss-jsx란?


  • htps : // 기주 b. 코 m / 구콘 g3000 / 포 stc - sjsx
  • PostCSS의 syntax 플러그인
  • 다양한 CSS in JS 라이브러리의 기법을 퍼스
  • CSS in JS 내의 스타일에 PostCSS를 적용 가능
  • 다양한 CSS in JS 라이브러리 지원


  • 할 수 있게 된 것 ①



    PostCSS 플러그인을 CSS in JS의 스타일에 적용 가능



    예를 들어 autoprefixer


  • styled-components 나 emotion 등의 CSS in JS 는 내부적으로 vendor prefix 를 부여하는 구조를 가지고 있다 ( stylis 라고 하는 CSS 프로세서)
  • 그러나 stylis에는 CSS Grid의 IE11에 대한 지원이 없습니다
  • autoprefixer가 가진 Grid Autoplacement


    PostCSS 플러그인을 어떻게 적용하는지



    Webpack에서 사용


  • emotion을 사용한 CSS Grid 샘플 코드
  • jsx, tsx의 loader의 전단에 postcss-loader를 사이에 두면 OK

  • webpack.config.js
    ...
    rules: [{
      test: /\.jsx?$/,
      exclude: /node_modules/,
      use: ["babel-loader", "postcss-loader"]
    }],
    ...
    


    emotion의 동적 스타일에 IE11 용 Grid 스타일이 적용됨
    ...
    const StyledWrapper = styled.div`
      /* NOTE: & { ... } でスタイルを囲まないと autoprefixer がエラーを吐く */
      & {
        display: grid;
        grid-template-columns: repeat(3, 100px);
        grid-template-rows: repeat(2, 100px);
        grid-gap: 10px;
        ...
      }
    `;
    ...
    



    할 수 있게 된 것②



    stylelint의 --fix를 사용할 수 있습니다.



  • emotion x stylelint 샘플 앱
  • stylelint는 내부적으로 PostCSS에 의존합니다

  • 작년 말에 --syntax css-in-js가 추가되고 CSS in JS가 표준 지원되도록
  • 내부적으로 postcss-jsx가 사용됩니다.

  • CSS in JS에서 autofix 가능
  • stylelint-processor-styled-components는 더 이상 필요하지 않습니다


  • 좋은 곳


  • stylis 의 서포트외의 vendor prefix 도 대응 가능
  • postcss-preset-env를 사용하여 Now CSS를 작성할 수 있도록
  • stylelint 의 --fix 를 사용할 수 있어 겨우 안심하고 CSS 를 쓸 수 있다
  • 개인적으로는 stylelint-order 의 autofix 가 기쁘다



  • 미묘한 곳


  • autoprefixer 와 stylis 의 vendor prefix 가 중복
  • Grid Autoplacement 사용해도 IE11의 Grid 서포트는 힘들다 ...
  • stylelint 에디터 지원이 미묘
  • Atom은 linter-stylelint에 한 번 더 추가해야합니다
  • VSCode 는 format on save 를 할 수 없다 ... ?



  • 요약


  • CSS in JS에서도 빌드 타임으로 스타일을 다양하게 즐길 수 있도록
  • stylelint에서 편안하게 CSS in JS를 작성할 수 있도록
  • 하지만 아직 전반적으로 정교하지 않은 인상
  • 각 방면에 PR 내어 갑시다 💪


  • 여담


  • 제로 런타임 CSS in JS의 동향이 신경이 쓰인다

  • linaria , astroturf ... etc
  • 빌드 타임에 CSS가 생성되므로 PostCSS 무제한

  • 발 빠른 발표였기 때문에, 뭔가 질문이나 의문이 있으면 부담없이 들어 주세요!


  • 오시마

    좋은 웹페이지 즐겨찾기