Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement stylelint-bezier package for easy use of bezier design token #2412

Merged
merged 20 commits into from
Aug 21, 2024

Conversation

yangwooseong
Copy link
Collaborator

@yangwooseong yangwooseong commented Aug 8, 2024

Self Checklist

  • I wrote a PR title in English and added an appropriate label to the PR.
  • I wrote the commit message in English and to follow the Conventional Commits specification.
  • I added the changeset about the changes that needed to be released. (or didn't have to)
  • I wrote or updated documentation related to the changes. (or didn't have to) (TODO)
  • I wrote or updated tests related to the changes. (or didn't have to)
  • I tested the changes in various browsers. (or didn't have to)
    • Windows: Chrome, Edge, (Optional) Firefox
    • macOS: Chrome, Edge, Safari, (Optional) Firefox

Related Issue

Summary

  • bezier-tokens에 있는 토큰이외의 css variable을 사용했을 때 에러나 워닝을 보여주는 stylelint config 패키지를 추가합니다.

Details

  • 공식 문서에는 plugin을 만들 때 export default createPlugin(...) 이런 식으로 소개하고 있는데 막상 해보면 vscode stylelint extension 에서 에러가 나는 등 문제가 있어서 polaris 코드를 참고해서 만들었습니다. 추측컨대 vscode-stylelint 쪽에서 v16 지원을 하고 있지 않아서 stylelint 최신 문법과 호환이 안되고 있어서 발생하는 문제로 보입니다.
  • V2 token (e.g. --alpha-color-fg-black-darkest) 까지 사용가능하게 했습니다.
  • styled-components와 scss 모두 대응이 가능합니다. styled-components는 customSyntax를 postcss-styled-syntax로 지정해서 .ts, .tsx 파일을 오버라이드했습니다.
  • 테스트 코드를 작성하고 싶었으나 외부 모듈을 읽고 있어서 작성하기가 까다로워서 생략했습니다.
  • 버저닝 관리를 어떻게 해야할지는 고민입니다. bezier-token 버전이 올라갈 때마다 bezier-react 버전과 stylelint-bezier 버전이 올라가야 하고(이건 changeset이 해줌), 만약 bezier-token 에서 토큰 이름이 바뀌거나 없어진다면 bezier-react 의 peerDeps 에 있는 stylelint-bezier 버전까지 올려야합니다. 제 생각에는 peerDeps에 있는 버전을 관리하는 것은 어쩔 수 없이 수동으로 해야할 것 같은데, 혹시 다른 아이디어 있다면 부탁드립니다..! @sungik-choi
2024-08-08.10.31.22.mov

Breaking change? (Yes/No)

  • No

References

@yangwooseong yangwooseong added the feat Issue or PR related to a new feature label Aug 8, 2024
@yangwooseong yangwooseong self-assigned this Aug 8, 2024
Copy link

changeset-bot bot commented Aug 8, 2024

🦋 Changeset detected

Latest commit: 57e83c2

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@channel.io/stylelint-bezier Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link

channeltalk bot commented Aug 8, 2024

Copy link
Contributor

github-actions bot commented Aug 8, 2024

Chromatic Report

🚀 Congratulations! Your build was successful!

@@ -76,7 +101,7 @@ const pluginRule: Rule<boolean> = (primary, secondaryOptions = {}) => {
return
}

if (!allTokens[tokenName as keyof typeof allTokens]) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

z-index-base 의 경우 값이 0이라서 undefined 체크로 변경합니다.

@yangwooseong yangwooseong force-pushed the WEB-3629/stylelint-bezier branch 2 times, most recently from 0832853 to da4b8eb Compare August 8, 2024 06:35
Copy link

codecov bot commented Aug 8, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 83.85%. Comparing base (e2498dd) to head (57e83c2).
Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2412   +/-   ##
=======================================
  Coverage   83.85%   83.85%           
=======================================
  Files         140      140           
  Lines        2924     2924           
  Branches      882      895   +13     
=======================================
  Hits         2452     2452           
  Misses        467      467           
  Partials        5        5           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@sungik-choi
Copy link
Contributor

버저닝 관리를 어떻게 해야할지는 고민입니다. bezier-token 버전이 올라갈 때마다 bezier-react 버전과 stylelint-bezier 버전이 올라가야 하고(이건 changeset이 해줌), 만약 bezier-token 에서 토큰 이름이 바뀌거나 없어진다면 bezier-react 의 peerDeps 에 있는 stylelint-bezier 버전까지 올려야합니다. 제 생각에는 peerDeps에 있는 버전을 관리하는 것은 어쩔 수 없이 수동으로 해야할 것 같은데, 혹시 다른 아이디어 있다면 부탁드립니다..! @sungik-choi

stylelint-bezier는 bezier-react의 dependency에 위치하지 않아도 될 거 같아요. peerDeps optional 여부를 떠나서 bezier-react의 동작에는 아무런 영향을 주지 않기 때문에 독립적으로 버전 관리하는게 맞다고 생각합니다. 같은 방식이라면 codemod도 peerDeps로 넣어도 이상할 게 없다고 생각해요.

말씀주신 것처럼 매칭되는 버전은 예시처럼 수동으로 README에 추가해서 관리하면 될 거 같습니다.

@yangwooseong
Copy link
Collaborator Author

버저닝 관리를 어떻게 해야할지는 고민입니다. bezier-token 버전이 올라갈 때마다 bezier-react 버전과 stylelint-bezier 버전이 올라가야 하고(이건 changeset이 해줌), 만약 bezier-token 에서 토큰 이름이 바뀌거나 없어진다면 bezier-react 의 peerDeps 에 있는 stylelint-bezier 버전까지 올려야합니다. 제 생각에는 peerDeps에 있는 버전을 관리하는 것은 어쩔 수 없이 수동으로 해야할 것 같은데, 혹시 다른 아이디어 있다면 부탁드립니다..! @sungik-choi

stylelint-bezier는 bezier-react의 dependency에 위치하지 않아도 될 거 같아요. peerDeps optional 여부를 떠나서 bezier-react의 동작에는 아무런 영향을 주지 않기 때문에 독립적으로 버전 관리하는게 맞다고 생각합니다. 같은 방식이라면 codemod도 peerDeps로 넣어도 이상할 게 없다고 생각해요.

말씀주신 것처럼 매칭되는 버전은 예시처럼 수동으로 README에 추가해서 관리하면 될 거 같습니다.

아하 그렇네요. 그러면 deps에서 제거하고 README에서 관리하는 것으로 하겠습니다!

@yangwooseong yangwooseong marked this pull request as ready for review August 8, 2024 09:09
Copy link
Contributor

@sungik-choi sungik-choi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 생각보다 코드가 간결하네요

마이너) 패키지간 일관성을 위해 eslint 설정도 추가해주시면 감사하겠습니다

'bezier/validate-token': [
true,
{
ignorePrefix: ['b-'],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Comment on lines +49 to +53
## Version Matchups

| @channel.io/stylelint-bezier | @channel.io/bezier-react |
| ---------------------------- | ------------------------ |
| 0.1.0 | 2.2.4 |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Comment on lines 12 to 13
"dev": "tsc --watch",
"build": "tsc --build --verbose"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clean, typecheck 같은 레포지토리 공용 스크립트도 추가해주세요!

@yangwooseong
Copy link
Collaborator Author

👍 생각보다 코드가 간결하네요

마이너) 패키지간 일관성을 위해 eslint 설정도 추가해주시면 감사하겠습니다

추가하면서 패키지의 .eslintignore 설정을 eslint-config-bezier 설정의 ignorePatterns로 옮겼습니다!

@yangwooseong yangwooseong merged commit 5c5a10c into channel-io:main Aug 21, 2024
9 checks passed
@yangwooseong yangwooseong deleted the WEB-3629/stylelint-bezier branch August 21, 2024 07:52
yangwooseong pushed a commit that referenced this pull request Aug 23, 2024
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @channel.io/[email protected]

### Minor Changes

- Release of `stylelint-bezier` package. It includes stylelint
configuration for token validation rules to make `bezier-tokens` easy to
use. ([#2412](#2412)) by
@yangwooseong

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat Issue or PR related to a new feature
Projects
No open projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Implement a custom stylelint plugin for bezier-react
2 participants