-
Notifications
You must be signed in to change notification settings - Fork 435
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
feat: textlint (#971 #926) #985
Conversation
textlint 관련 기본 환경 설정 진행. textlintrc.js -> textlintrc: .eslintrc 및 .prettierrc와의 통일성을 위해, .js 확장자를 사용하지 않는 json 형식의 파일로 변경. package.json에 textlint 및 textlint-filter-rule-comments 추가. yarn.lock 파일은 package.json 파일에 따라 자동으로 변경됨.
translateGlossary.js 기본 틀/구조 구현. (아직 디테일한 버그들은 잡지 못한 상태.) 이외, legacy 파일들 삭제. (legacy 파일에서 필요한 부분은 따로 정리하여 보관 중.)
textlint testing 관련 환경 설정 진행. package에 mocha 및 textlint-tester 추가.
./textlint/utils/strip.js에 포함된 모든 함수에 대한 테스트 작성.
./textlint/utils/is.js에 포함된 모든 함수에 대한 테스트 작성.
./textlint/utils/errMsg.js에 포함된 모든 함수에 대한 테스트 작성.
translateGlossary 규칙 구현 완료.
잘못된 정규표현식 표현 수정.
./textlint/rules/translateGlossary.js에 대한 테스트 작성.
모듈 불러오기 경로가 잘못되어, 수정 진행.
…ry.js 확장성을 위해 데이터 구조 변경.
…ry.js 확장성을 위해 데이터 구조 변경.
translate-glossary.md 문서를 자동 생성해주는 generator 도입. 생성된 문서는 repository에 올라갈 필요가 없으므로, .gitignore에 해당 부분 추가. textlint/README.md는 우선 삭제. 추후에 wiki 디렉토리에 추가 예정.
파일 이름 및 디렉토리 변경 진행.
textlint와 관련된 test, docs, lint scripts 추가.
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 1 Skipped Deployment
|
Size changes📦 Next.js Bundle Analysis for react-devThis analysis was generated by the Next.js Bundle Analysis action. 🤖
|
Page | Size (compressed) |
---|---|
global |
104.15 KB (🟡 +3 B) |
Details
The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.
Any third party scripts you have added directly to your app using the <script>
tag are not accounted for in this analysis
If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!
오 PR분량이 커서 천천히 꼼꼼하게 리뷰해보겠습니다. 🙇♂️ |
넵👍 혹시 애매하거나 이상한 부분 있으면 언제든지 물어봐 주세요! |
요거 내일까지 리뷰 완료해보겠습니다. 🙇♂️ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
한번 쭉 읽어봤는데 큰 문제는 없어보입니다!, 다만 오늘 시간이 없어서 내일 찬찬히 다시한번 검토해 보겠습니다. 조금만 더 기다려주세요 🙇♂️
feat: textlint (#971 #926)
안녕하세요, 기본적인 textlint 기능 구현을 모두 완료하였습니다😊👍. 아직 모든 기능을 완성한 것은 아니고, translate glossary 상에 존재하는 React 파트에 대해서만 일부 구현 완료하였습니다. (기본 로직은 모두 구현한 상태이고, 나머지 translate glossary 파트에 대해서는 데이터만 추가하면 됩니다...!)
또, CI 기능은 textlint 기능 뿐만 아니라, 다른 코드 부분도 조금 더 손을 봐야만 제대로 구현이 가능해서, 이번 PR에서는 제외하였습니다. (너무 많은 PR을 한번에 보내면 서로 혼란스러울 것만 같아 중간 단계에서 한번 끊고 보냈습니다...!)
좀 더 완벽한 기능을 위해서는 아직 갈 길이 멀기 때문에, 이번 PR은 textlint에 대한 전체적인 흐름과 구조 위주로 확인해주시면 감사하겠습니다.😊
1. 추가된 주요 기능.
CLI 명령어 3개가 추가되었습니다.
1-1.
textlint-test
textlint 코드 구현 부분에 대한 test를 진행하는
script
입니다.textlint/rules
디렉토리에 포함된 모든 규칙 및textlint/utils
디렉토리에 포함된 모든 util 들에 대한 test를 진행합니다.test 진행 내역은 아래와 같습니다.
더보기
1-2.
textlint-docs
문서를 자동 생성하는 명령어 입니다. translate glossary 문서와 textlint 코드 부분은 서로 sync가 맞아야 합니다. 따라서, textlint 코드 구현 부분에 존재하는 data를 기반으로 translate glossary 문서가 자동 생성될 수 있도록 구현하였습니다.
이 부분은 훗날 CI 환경과 통합하여, 자동 문서 생성에 이용할 예정입니다.
이에 따라 translate glossary 문서를 일부 수정하였습니다. 코드 구현간에 필수로 바꿔야만 정상적인 로직을 기대할 수 있을 부분만 변경하였습니다. 변경 내역은 아래와 같습니다.
용어에 대한 원자성 유지. 'stateless component'와 같이 2가지 이상의 단어의 조합으로 이루어진 단어는 각각 'stateless'와 'component'와 같이 분리되어야 합니다. 'stateless component'와 같은 용어는 숙어처럼 2개의 단어의 조합으로 새로운 의미가 생기는 경우가 아니기에, 분리되어야 맞다고 생각합니다. (2개의 단어의 조합으로 새로운 의미가 생기는 경우 ex. 'Escape Hatches 탈출구' 와 같은 경우는 변경하지 않고 그대로 두었습니다.)
정규표현식 부분 추가. wiki 상의 용어 그대로 사용하기에는 lint의 정확성 및 성능 문제가 발생하여, 실질적인 lint 검사는 정규표현식과의 비교를 통해 진행하게 됩니다. 단, 이 부분을 wiki 상에 명시해 두어야 훗날, lint 사용 및 기여자 분들의 해당 파트에 대한 유지보수가 원활할 것 같아 추가하였습니다.
이외의 것. 이외에는, 'React' 파트와 '일반' 파트를 '번역해야 하는 용어' 파트로 묶었습니다. 이 부분은 문서의 구조를 좀 더 명확히 할 수 있을 것 같아 추가하였습니다. 또한, 헤더 부분 옆에 인라인 코드 블럭을 추가하여, 코드 상의 어떤 데이터와 연관되어 있는지 확인하기 용이하게 하였습니다.
변경된 마크다운 문서는 아래와 같습니다. (우선, React 파트에 대해서만 추가되어 있습니다. 나머지 파트는 추후 구현 후 추가예정입니다.)
더보기
Translate Glossary
번역해야 하는 용어
React
term
sources
target
discussions
/Tutorial/
,/[듀튜]토리얼/
/Declarative/
/Component/
,/컴퍼넌트/
,/컴포넌츠/
/Stateful/
/Stateless/
/Render(?!er)(?:ing)?/
,/랜더링/
,/[렌랜]더(?!링)\s?[하한할함합]/
/Data/
,/대이터/
/Application/
,/어플리케이[선션]/
,/응용\s?프로그램/
/External/
/Plugin/
/Third/
,/써드/
/Syntax/
,/[신씬]택스/
/Embedding\s?Expression/
/Attribute/
,/애트리뷰트/
/Element/
,/[엘앨]리먼츠/
,/앨리먼트/
/Function/
,/Functional/
/Class/
/Composition/
,/[컴콤][퍼포]지[선션]/
/Inheritance/
/Life\s?Cycle/
,/라이프\s?사이클/
,/생명 주기/
/Handling/
,/핸들링/
/Conditional/
,/컨디[서셔][날널]/
/Operator/
,/오퍼[레래]이터/
/Reuse/
/Mock/
/Callback/
/Synthetic/
/Event/
/Higher\s?Order/
/(?<!Un)Mount/
/Unmount/
,/언마운트/
/Form/
/Wrapper/
/Child(?:ren)?/
/Code[-\s]?Splitting/
/Reconciliation/
/Propert(?:y|ies)/
/Reference/
,/래퍼런스/
/User/
,/유저/
/Interface/
/Markup/
,/마크 업/
/Interacti(?:vity|on)/
,/인터[랙렉][선션]/
/Architecture/
,/아키택처/
,/아키[택텍]쳐/
/Full[-\s]?Stack/
/Browser/
/Extension/
,/확장프로그램/
/Escape[-\s]?Hatches/
1-3.
textlint-lint
이번 PR에서 가장 핵심적인 부분입니다. lint를 진행합니다. React 파트만 구현했는데도 상당히 많은 부분에 오류가 발생합니다...😅
Textlint는 오직
.txt
및.md
확장자를 가진 파일만 검사합니다. 또한, 실질적으로 공식문서에 나타나는 부분인src/content
내부의 파일만 검사합니다. Textlint는 텍스트 혹은 마크다운 문서를 AST Tree로 Parsing 합니다. Textlint에서 검사하는 것은 오직@textlint/text-to-ast
Package에 의해 AST Tree로 파싱 된 node들 중 Str node 뿐입니다. 즉, AST Tree의type
중 code block이나 inline code block, link, HTML tag 등은 검사하지 않습니다.또한, 한국어가 포함된 Str node만 검사를 진행하도록 구현하였습니다. 그리고
""
및()
로 감싸져 있는 부분은 검사하지 않도록 구현하였습니다.""
에는 주로 에러 메시지 등 영어 원문 그 자체의 내용이 들어가는 경우가 많으며,()
역시 마찬가지로, 독자의 이해를 위해 영어 원문이 그대로 들어가는 경우가 많기 때문입니다.아무것도 수정하지 않은 상황에서, 현재 228개의 오류가 검출됩니다. 해당 228개 오류 모두 직접 확인하였는데, 검출된 오류 부분은 모두 수정되어야만 하는 부분입니다. (이는 백틱 기호를 이용한 인라인 코드 블럭을 사용해야 할 곳에 사용하지 않은 경우, 용어가 잘못 번역된 경우 등이 포함됩니다.)
오류 발생 내역은 아래와 같습니다.
더보기
2. 주요 파일 변동 사항.
2-1.
.gitignore
yarn textlint-docs
를 통해 자동 생성되는 문서는 자동 commit되지 않게 수정하였습니다.2-2.
.textlintrc
.eslintrc
및.prettierrc
파일 모두 json 파일 형식이기에,.textlintrc.js
파일을 삭제하고.textlintrc
형식으로 통일성 있게 수정하였습니다.2-3.
.package.json
scripts
명령어를 추가하였습니다.2-4.
textlint/data
2-5.
textlint/fixtures
2-6.
textlint/generators
2-7.
textlint/rules
2-8.
textlint/tests
2-9.
textlint/utils
2-10.
wiki
textlint
deprecated? #971 (comment) 에서 논의한 wiki 통합을 위한 디렉토리 입니다. 현재는 우선적으로, textlint 관련 파일만 위치시켰습니다.2-11.
yarn.lock
Progress