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λ‘ λ±λ‘ν΄ λμκΈ°μ, μλμ κ°μ 컀맨λλ‘ μ€νν μ μμ΅λλ€.
κ°μ₯ λ§μ΄ νμ©λλ 컀맨λμ λλ€.
yarn textlint-lintyarn textlint-testyarn textlint-docstextlintλ 곡μ λ¬Έμμ μ€μ§μ μΌλ‘ λνλλ λΆλΆμΈ /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μ°Έκ³ )
```js
const hello = 'world';
````hello world`This text will not be linted."μ΄ λ¬Έμ₯μ κ²μ¬λμ§ μμ΅λλ€."(μ΄ λ¬Έμ₯μ κ²μ¬λμ§ μμ΅λλ€.)μμ΄ ννμ λΆλμ΄ νκ² μ¬μ©ν΄μΌ ν κ²½μ°, μμμ μΈκΈν μλ°μ΄ν("")λ° μκ΄νΈ(())λ₯Ό νμ©νμ¬ νΉμ λ¬Έμ₯μ κ°μ κ²μ κΆμ₯ν©λλ€.
μ λ°©λ²μ μ¬μ©ν μ μλ κ²½μ°, textlintμμ μ 곡νλ Filter Rule μ€ νλμΈ textlint-filter-rule-commentsλ₯Ό μ¬μ©ν΄μ λΉνμ±νν μ μμ΅λλ€. μ΄λ―Έ μΆκ°λμ΄ μμΌλ μλμ²λΌ μ¬μ©νμλ©΄ λ©λλ€.
<!-- textlint-disable -->
μ£Όμ μ¬μ΄μ μλ κΈμ λͺ¨λ κ·μΉμ΄ λΉνμ±νλ©λλ€.
<!-- textlint-enable -->μλ₯Ό λ€μ΄, νκΈ λ¬Έμ₯ μμ μλμ μΌλ‘ λ²μνμ§ μμ μμ΄ μλ¬Έμ μ¬μ©ν΄μΌ νλ κ²½μ° μ¬μ©μ κ³ λ €ν΄ λ³Ό μ μμ΅λλ€. μ΄λ textlintκ° κ²μ¬νλ μΌλΆ μμμ λν΄ μλμ μΌλ‘ κ·μΉμ ν΄μ (μμΈλ₯Ό μ€μ ) νλ κ²μ
λλ€.
textlintμ 곡μ λ¬Έμ Creating Rulesλ₯Ό μμ§νκ³ λ€μ κ³Όμ μ μ§νν΄μ£ΌμΈμ.
textlintμ κ΄λ ¨λ λͺ¨λ μ½λλ /textlint ν΄λμ μμ±ν©λλ€.
1. /textlint/rules ν΄λμ 1κ° κ·μΉμ 1κ° νμΌ μμ±
νΉμ κ·μΉμ textlint 컀맨λ λΌμΈμ --rulesdir μ΅μ
μ ν΅ν΄ μ€νλλ―λ‘, /textlint/rules ν΄λ νμμλ κ·μΉκ³Ό νμΌμ λμμμΌ μμ±ν΄μ£ΌμΈμ.
2. /textlint/tests/rules ν΄λμ ν
μ€νΈ μ½λ μμ±
textlint-testerλ₯Ό νμ©ν΄μ μμ±ν κ·μΉμ λμλλ ν
μ€νΈλ₯Ό μμ±ν΄μ£ΌμΈμ. μ¬λ°λ₯Έ μ¬λ‘μ μ¬λ°λ₯΄μ§ λͺ»ν μ¬μ© μ¬λ‘λ₯Ό ν¬ν¨νκ³ , μ¬λ°λ₯΄μ§ λͺ»ν μ¬λ‘λ λ²μμκ° λΉ λ₯΄κ² μμ ν μ μλλ‘ indexλ₯Ό ν΅ν΄ μ€λ₯κ° λ°μν μμΉλ₯Ό μλ§κ² μλ΄νκ³ μλμ§ κ²μ¦ν΄μ£ΌμΈμ.
μλμ²λΌ μ€ννλ©΄ λͺ¨λ κ·μΉ ꡬνμ λν ν μ€νΈλ₯Ό μ€νν μ μμ΅λλ€.
yarn textlint-testμλμ κ°μ μμλ₯Ό λ°λΌμ£ΌμΈμ.
yarn add --dev textlint-rule-allowed-uris2. /.textlintrc νμΌμ ν΄λΉ κ·μΉμ λ§κ² μμ
module.exports = {
rules: {
'allowed-uris': {
allowed: {
links: [/google/],
},
},
},
};-
--fixμ΅μ μ ν΅ν΄ μλμΌλ‘ μμ ν μ μλ Fixable Ruleμ μλμ μΌλ‘ μμ±νμ§ μμμ΅λλ€. μ¬λμ΄ μ½λλ‘ μμ±ν κ·μΉμ΄κΈ° λλ¬Έμ μλ²½νμ§ μμΌλ©° λ²μμκ° μΈμ§νμ§ λͺ»ν μ±λ‘ μμ λκΈ°λ³΄λ€ λ¬Έλ§₯μ νμΈνκ³ μμ νλ λ°©ν₯μ΄ λ°λμ§νλ€κ³ μκ°νκΈ° λλ¬Έμ λλ€. -
textlintμ κ²μ¬ κΈ°λ₯μ μλμ μΌλ‘ μ΅λν λμ¨νκ² λ§λ€μμ΅λλ€. μ격νκ² κ²μ¬λ₯Ό μ§νν κ²½μ°, λ²μ κ° λ¬Έμ₯ μ΄ν΄ λ° νλ¦μ λ°©ν΄κ° λ μ μκΈ° λλ¬Έμ λλ€. -
.jsonνμΌ νμμΌλ‘ ꡬνλ μ¬μ΄λλ° λ©λ΄ μμ λ΄μ©λ€μ κ²μ¬νμ§ μμ΅λλ€. λ°λΌμ, μ¬μ΄λλ° λ©λ΄ μμ ννλ λ΄μ©λ€μ μ§μ μμ ν΄μΌ ν©λλ€.src/sidebarBlog.jsonλ±μ΄ μ΄μ ν΄λΉν©λλ€. -
React λ¬Έμμμ λ§ν¬λ₯Ό μ°κ²°νκΈ° μν΄ κ΅¬νν
{/* ... */}λ΄λΆμ λ¬Έμμ΄μ νμ μμ΄λ‘λ§ κ΅¬μ±λλ―λ‘, λ§ν¬λ€μ΄ λ¬Έμ λ΄λΆμμ κ²μ¬νμ§ μλ μμμ μ€μ μ μν΄ κ²μ¬κ° μλμΌλ‘ μ μΈλ©λλ€.