Skip to content

Latest commit

Β 

History

History
168 lines (112 loc) Β· 7.61 KB

File metadata and controls

168 lines (112 loc) Β· 7.61 KB

textlint κ°€μ΄λ“œ

React 곡식 λ¬Έμ„œ ν•œκ΅­μ–΄ λ²ˆμ—­ μ‹œ ν™œμš©ν•˜λŠ” textlint에 λŒ€ν•΄ μ„€λͺ…ν•©λ‹ˆλ‹€.

λ¬΄μ—‡μΈκ°€μš”?

translateGlossary: 'μΈν„°λž™μ…˜'은/λŠ” 'μƒν˜Έμž‘μš©'(으)둜 λ²ˆμ—­λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
ko.react.dev/src/content/blog/2022/06/15/react-labs-what-we-have-been-working-on-june-2022.md:74:22
                                           v
    73.
    74. μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” μƒˆλ‘œμš΄ λ²„μ „μ˜ μΈν„°λž™μ…˜ 좔적 API(`startTransition`을 톡해 μ‹œμž‘λ˜λ―€λ‘œ κ°€μΉ­ νŠΈλžœμ§€μ…˜ 좔적이라고 함)λ₯Ό 개발 μ€‘μž…λ‹ˆλ‹€.
    75.
                                           ^

translateGlossary: 'νŠœν† λ¦¬μ–Ό'은/λŠ” 'μžμŠ΅μ„œ'(으)둜 λ²ˆμ—­λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
ko.react.dev/src/content/blog/2023/03/16/introducing-react-dev.md:60:35
                                                       v
    59.
    60. 직접 해보며 배우고 μ‹Άλ‹€λ©΄, λ‹€μŒμœΌλ‘œ [Tic-Tac-Toe νŠœν† λ¦¬μ–Ό](/learn/tutorial-tic-tac-toe)을 ν™•μΈν•˜λŠ” 것을 μΆ”μ²œν•©λ‹ˆλ‹€. React둜 μž‘μ€ κ²Œμž„μ„ κ΅¬ν˜„ν•˜λŠ” 것을 자
μ„Ένžˆ μ„€λͺ…ν•˜λ©΄μ„œ, λ™μ‹œμ— μΌμƒμ μœΌλ‘œ μ‚¬μš©ν•  κΈ°μˆ μ„ κ°€λ₯΄μΉ©λ‹ˆλ‹€. 여기에 κ΅¬ν˜„ν•˜κ²Œ 될 λ‚΄μš©μ΄ μžˆμŠ΅λ‹ˆλ‹€.
    61.
                                                       ^

textlintλŠ” ν…μŠ€νŠΈ(.txt)와 λ§ˆν¬λ‹€μš΄(.md, .mdx)을 μœ„ν•œ λ¦°ν„°Linter이며 μžλ°”μŠ€ν¬λ¦½νŠΈJavaScript둜 κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. ESLintκ°€ μžλ°”μŠ€ν¬λ¦½νŠΈμ— κ°€μ§€λŠ” μ—­ν• κ³Ό κ°™μŠ΅λ‹ˆλ‹€.

μ–΄λ–»κ²Œ μ‹€ν–‰ν•  수 μžˆλ‚˜μš”?

package.json 상에 scripts둜 등둝해 λ‘μ—ˆκΈ°μ—, μ•„λž˜μ™€ 같은 μ»€λ§¨λ“œλ‘œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1. κ·œμΉ™ 검사

κ°€μž₯ 많이 ν™œμš©λ˜λŠ” μ»€λ§¨λ“œμž…λ‹ˆλ‹€.

yarn textlint-lint

2. ν…ŒμŠ€νŠΈ μ‹€ν–‰

yarn textlint-test

3. κ·œμΉ™μ— λ”°λ₯Έ λ¬Έμ„œ 생성

yarn textlint-docs

μ–΄λ–€ μ˜μ—­μ„ κ²€μ‚¬ν•˜λ‚˜μš”?

textlintλŠ” 곡식 λ¬Έμ„œμ— μ‹€μ§ˆμ μœΌλ‘œ λ‚˜νƒ€λ‚˜λŠ” 뢀뢄인 /src/content 폴더 λ‚΄λΆ€μ˜ λ§ˆν¬λ‹€μš΄(.md) νŒŒμΌλ§Œμ„ κ²€μ‚¬ν•©λ‹ˆλ‹€.

λ§ˆν¬λ‹€μš΄ λ¬Έμ„œ λ‚΄λΆ€μ—μ„œ κ²€μ‚¬ν•˜μ§€ μ•ŠλŠ” μ˜μ—­

Note

  • textlintλŠ” λ§ˆν¬λ‹€μš΄ λ¬Έμ„œλ₯Ό AST Tree둜 νŒŒμ‹±Parsing ν•©λ‹ˆλ‹€. ko.react.devμ—μ„œ κ΅¬ν˜„ν•œ κ·œμΉ™μ€ @textlint/text-to-ast-14.0.5 νŒ¨ν‚€μ§€μ— μ˜ν•΄ AST Tree둜 νŒŒμ‹± 된 λ…Έλ“œNodeλ“€ 쀑 Str λ…Έλ“œλ§Œμ„ κ²€μ‚¬ν•©λ‹ˆλ‹€. (/textlint/rules/translateGlossary.js μ°Έκ³ )

  • λ˜ν•œ, λͺ¨λ“  Str λ…Έλ“œλ₯Ό κ²€μ‚¬ν•˜λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€. μ˜μ–΄ 원문 λ²ˆμ—­λ³Έμ΄ κ³„μ†ν•΄μ„œ μΆ”κ°€λ˜κΈ°μ—, 였직 μ˜μ–΄λ§ŒμœΌλ‘œ κ΅¬μ„±λœ Str λ…Έλ“œλŠ” κ²€μ‚¬μ—μ„œ μ œμ™Έν•©λ‹ˆλ‹€. 즉, νŒŒμ‹±λœ Str λ…Έλ“œ 쀑 ν•œκΈ€μ΄ ν•˜λ‚˜λΌλ„ ν¬ν•¨λœ λ¬Έμž₯λ§Œμ„ κ²€μ‚¬ν•©λ‹ˆλ‹€. (/textlint/utils/is.js μ°Έκ³ )

  • 이외에도, ko.react.devμ—μ„œλŠ” "" 및 ()둜 감싸져 μžˆλŠ” λ¬Έμž₯은 κ²€μ‚¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ""μ—λŠ” 주둜 μ—λŸ¬ λ©”μ‹œμ§€ λ“± μ˜μ–΄ 원문 κ·Έ 자체의 λ‚΄μš©μ΄ λ“€μ–΄κ°€λŠ” κ²½μš°κ°€ 많으며, () μ—­μ‹œ λ…μžμ˜ 이해λ₯Ό μœ„ν•΄ μ˜μ–΄ 원문이 κ·ΈλŒ€λ‘œ λ“€μ–΄κ°€λŠ” κ²½μš°κ°€ 많기 λ•Œλ¬Έμž…λ‹ˆλ‹€. (/textlint/utils/strip.js μ°Έκ³ )

1. μ½”λ“œ λΈ”λŸ­

```js
const hello = 'world';
```

2. 인라인 μ½”λ“œ λΈ”λŸ­

`hello world`

3. ν•œκΈ€μ΄ ν¬ν•¨λ˜μ§€ μ•Šμ€ λ¬Έμž₯

This text will not be linted.

4. μŒλ”°μ˜΄ν‘œ("")둜 감싸져 μžˆλŠ” λ¬Έμž₯

"이 λ¬Έμž₯은 κ²€μ‚¬λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€."

5. μ†Œκ΄„ν˜Έ(())둜 감싸져 μžˆλŠ” λ¬Έμž₯

(이 λ¬Έμž₯은 κ²€μ‚¬λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.)

νŠΉμ • λ¬Έλ§₯μ—μ„œ λΉ„ν™œμ„±ν™”ν•  수 μžˆλ‚˜μš”?

μ˜μ–΄ ν‘œν˜„μ„ 뢀득이 ν•˜κ²Œ μ‚¬μš©ν•΄μ•Ό ν•  경우, μœ„μ—μ„œ μ–ΈκΈ‰ν•œ μŒλ”°μ˜΄ν‘œ("")및 μ†Œκ΄„ν˜Έ(())λ₯Ό ν™œμš©ν•˜μ—¬ νŠΉμ • λ¬Έμž₯을 κ°μŒ€ 것을 ꢌμž₯ν•©λ‹ˆλ‹€.

μœ„ 방법을 μ‚¬μš©ν•  수 μ—†λŠ” 경우, textlintμ—μ„œ μ œκ³΅ν•˜λŠ” Filter Rule 쀑 ν•˜λ‚˜μΈ textlint-filter-rule-commentsλ₯Ό μ‚¬μš©ν•΄μ„œ λΉ„ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이미 μΆ”κ°€λ˜μ–΄ μžˆμœΌλ‹ˆ μ•„λž˜μ²˜λŸΌ μ‚¬μš©ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

<!-- textlint-disable -->

주석 사이에 μžˆλŠ” 글은 λͺ¨λ“  κ·œμΉ™μ΄ λΉ„ν™œμ„±ν™”λ©λ‹ˆλ‹€.

<!-- textlint-enable -->

예λ₯Ό λ“€μ–΄, ν•œκΈ€ λ¬Έμž₯ μ•ˆμ— μ˜λ„μ μœΌλ‘œ λ²ˆμ—­ν•˜μ§€ μ•Šμ€ μ˜μ–΄ 원문을 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 경우 μ‚¬μš©μ„ κ³ λ €ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” textlintκ°€ κ²€μ‚¬ν•˜λŠ” 일뢀 μ˜μ—­μ— λŒ€ν•΄ μ˜λ„μ μœΌλ‘œ κ·œμΉ™μ„ ν•΄μ œ(μ˜ˆμ™Έλ₯Ό μ„€μ •) ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μƒˆλ‘œμš΄ κ·œμΉ™(rule)을 μ–΄λ–»κ²Œ λ§Œλ“œλ‚˜μš”?

textlint의 곡식 λ¬Έμ„œ Creating Rulesλ₯Ό μˆ™μ§€ν•˜κ³  λ‹€μŒ 과정을 μ§„ν–‰ν•΄μ£Όμ„Έμš”.

ko.react.devμ—μ„œλ§Œ μ‚¬μš©ν•˜λŠ” κ·œμΉ™μΈ 경우

textlint와 κ΄€λ ¨λœ λͺ¨λ“  μ½”λ“œλŠ” /textlint 폴더에 μž‘μ„±ν•©λ‹ˆλ‹€.

1. /textlint/rules 폴더에 1개 κ·œμΉ™μ— 1개 파일 생성

νŠΉμ • κ·œμΉ™μ€ textlint μ»€λ§¨λ“œ 라인의 --rulesdir μ˜΅μ…˜μ„ 톡해 μ‹€ν–‰λ˜λ―€λ‘œ, /textlint/rules 폴더 ν•˜μœ„μ—λŠ” κ·œμΉ™κ³Ό νŒŒμΌμ„ λŒ€μ‘μ‹œμΌœ μž‘μ„±ν•΄μ£Όμ„Έμš”.

2. /textlint/tests/rules 폴더에 ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±

textlint-testerλ₯Ό ν™œμš©ν•΄μ„œ μž‘μ„±ν•œ κ·œμΉ™μ— λŒ€μ‘λ˜λŠ” ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•΄μ£Όμ„Έμš”. μ˜¬λ°”λ₯Έ 사둀와 μ˜¬λ°”λ₯΄μ§€ λͺ»ν•œ μ‚¬μš© 사둀λ₯Ό ν¬ν•¨ν•˜κ³ , μ˜¬λ°”λ₯΄μ§€ λͺ»ν•œ μ‚¬λ‘€λŠ” λ²ˆμ—­μžκ°€ λΉ λ₯΄κ²Œ μˆ˜μ •ν•  수 μžˆλ„λ‘ indexλ₯Ό 톡해 였λ₯˜κ°€ λ°œμƒν•œ μœ„μΉ˜λ₯Ό μ•Œλ§žκ²Œ μ•ˆλ‚΄ν•˜κ³  μžˆλŠ”μ§€ κ²€μ¦ν•΄μ£Όμ„Έμš”.

μ•„λž˜μ²˜λŸΌ μ‹€ν–‰ν•˜λ©΄ λͺ¨λ“  κ·œμΉ™ κ΅¬ν˜„μ— λŒ€ν•œ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

yarn textlint-test

μ™ΈλΆ€ κ·œμΉ™μ„ μ‚¬μš©ν•˜λŠ” 경우

μ•„λž˜μ™€ 같은 μ˜ˆμ‹œλ₯Ό λ”°λΌμ£Όμ„Έμš”.

1. yarn을 톡해 νŠΉμ • νŒ¨ν‚€μ§€λ₯Ό 개발 μ˜μ‘΄μ„±μœΌλ‘œ μ„€μΉ˜

yarn add --dev textlint-rule-allowed-uris

2. /.textlintrc νŒŒμΌμ„ ν•΄λ‹Ή κ·œμΉ™μ— 맞게 μˆ˜μ •

module.exports = {
  rules: {
    'allowed-uris': {
      allowed: {
        links: [/google/],
      },
    },
  },
};

μ£Όμ˜ν•΄μ•Ό ν•  사항이 μžˆλ‚˜μš”?

  • --fix μ˜΅μ…˜μ„ 톡해 μžλ™μœΌλ‘œ μˆ˜μ •ν•  수 μžˆλŠ” Fixable Rule은 μ˜λ„μ μœΌλ‘œ μž‘μ„±ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. μ‚¬λžŒμ΄ μ½”λ“œλ‘œ μž‘μ„±ν•œ κ·œμΉ™μ΄κΈ° λ•Œλ¬Έμ— μ™„λ²½ν•˜μ§€ μ•ŠμœΌλ©° λ²ˆμ—­μžκ°€ μΈμ§€ν•˜μ§€ λͺ»ν•œ μ±„λ‘œ μˆ˜μ •λ˜κΈ°λ³΄λ‹€ λ¬Έλ§₯을 ν™•μΈν•˜κ³  μˆ˜μ •ν•˜λŠ” λ°©ν–₯이 λ°”λžŒμ§ν•˜λ‹€κ³  μƒκ°ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

  • textlint의 검사 κΈ°λŠ₯은 μ˜λ„μ μœΌλ‘œ μ΅œλŒ€ν•œ λŠμŠ¨ν•˜κ²Œ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. μ—„κ²©ν•˜κ²Œ 검사λ₯Ό μ§„ν–‰ν•  경우, λ²ˆμ—­ κ°„ λ¬Έμž₯ 이해 및 흐름에 λ°©ν•΄κ°€ 될 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

  • .json 파일 ν˜•μ‹μœΌλ‘œ κ΅¬ν˜„λœ μ‚¬μ΄λ“œλ°” 메뉴 μƒμ˜ λ‚΄μš©λ“€μ€ κ²€μ‚¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ, μ‚¬μ΄λ“œλ°” 메뉴 상에 ν‘œν˜„λœ λ‚΄μš©λ“€μ€ 직접 μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. src/sidebarBlog.json 등이 이에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.

  • React λ¬Έμ„œμƒμ˜ 링크λ₯Ό μ—°κ²°ν•˜κΈ° μœ„ν•΄ κ΅¬ν˜„ν•œ {/* ... */} λ‚΄λΆ€μ˜ λ¬Έμžμ—΄μ€ 항상 μ˜μ–΄λ‘œλ§Œ κ΅¬μ„±λ˜λ―€λ‘œ, λ§ˆν¬λ‹€μš΄ λ¬Έμ„œ λ‚΄λΆ€μ—μ„œ κ²€μ‚¬ν•˜μ§€ μ•ŠλŠ” μ˜μ—­μ˜ 섀정에 μ˜ν•΄ 검사가 μžλ™μœΌλ‘œ μ œμ™Έλ©λ‹ˆλ‹€.