рд╣рдо рдПрдХ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░реА рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рддред рднрд╛рдЧ 1

рдЫрд╡рд┐
рд▓реЗрдЦреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ, рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдмрдирд╛рдиреЗ рдХреЗ рдкреВрд░реНрдг рдЪрдХреНрд░ рд╕реЗ рдЧреБрдЬрд░реЗрдВрдЧреЗ рдФрд░ рдЖрдзреБрдирд┐рдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦреЗрдВрдЧреЗред
рдореИрдВ рдпрд╣ рд▓реЗрдЦ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлреНрд░рдВрдЯреЗрдВрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЕрдкрдиреА рдкрд╣рд▓реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рджреБрдирд┐рдпрд╛ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдЦреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрди рдореВрд▓ рд╕реНрдЯреИрдХ рдХреЛ рдЪреБрдирд╛ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдКрдм рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╣рдореЗрд╢рд╛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХреБрдЫ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦреЗрдВ рдФрд░ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рддреЗ рд╣реБрдП рдЧреАрдердм рдкрд░ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рджрд░реНрдЬрди рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдЪреМрдЦрдЯреЗ, рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд╛рд▓рддреВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХреБрдЫ рдирдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд


рдЬрд┐рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╣рдо рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ, рдЙрд╕рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрдирд╛ рд╣реИ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЗ рд╕рд╛рде рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛, рдФрд░ рдЗрд╕реЗ npm рдореЗрдВ рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред рд╣рдо рд▓рд┐рдВрдЯрд░ рдХреЛ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗ, рдЬреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдФрд░ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВрдЧреЗред рд╢рд╛рдпрдж рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рдФрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВред

рд▓реЗрдЦ рдХреЛ рдХрдИ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддрд╛рдХрд┐ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХреЗрдВред

рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП GitHub рдкрд░ рдПрдХ рднрдВрдбрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореЗрд░реА рдирдИ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд┐рдбрд╝рдХреА рд╣реИред рдЖрдкрдХреЛ рдПрдХ рдирд╛рдо рдФрд░ рдЕрдкрдиреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реА рд╕рднреА рдкрд╛рд▓рддреВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╣рдореЗрд╢рд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рднрдВрдбрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдм GitHub рдореБрдлреНрдд рдореЗрдВ рдПрдХ рдирд┐рдЬреА рднрдВрдбрд╛рд░ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреА рдЯреАрдо рддреАрди рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдирд╣реАрдВ рд╣реИрдВред рдореИрдВрдиреЗ рддреБрд░рдВрдд рдПрдХ рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рднреА рдЬреЛрдбрд╝рд╛ - рдпрд╣ рдУрдкрди рд╕реЛрд░реНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдпрджрд┐ рдЖрдк рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рд╕рд╛рдЗрдЯ рдХреЛ GitHub рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рдирдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВред GitHub SSH рдпрд╛ HTTPS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓реЛрдирд┐рдВрдЧ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

git clone https://github.com/Alexandrshy/react-ant.git 

рдпрджрд┐ рдЖрдк рд╕рдлрд▓ рдЕрдирдкреИрдХрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдХреНрд▓реЛрдирд┐рдВрдЧ рд╕рдлрд▓ рд░рд╣реАред

рд╣рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рддреБрд░рдВрдд рдХреИрд╢ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЕрдЧрд▓реА рдмрд╛рд░ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк git push, git fetch, git clone рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдПрдХ рдпреВрдЬрд░рдиреЗрдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ( рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ )ред

 git config --global credential.helper osxkeychain 

рдЪрд▓рд┐рдП package.json рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

 npm init -y 

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдкреИрдХреЗрдЬ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рднрд░реЗ рд╣реБрдП рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦреЗрдВ, рдореЗрд░рд╛ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 { "name": "react-ant", "version": "1.0.0", "description": "A set of light React components ", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git+https://github.com/Alexandrshy/react-ant.git" }, "keywords": [], "author": "", "license": "ISC", "bugs": { "url": "https://github.com/Alexandrshy/react-ant/issues" }, "homepage": "https://github.com/Alexandrshy/react-ant#readme" } 

рд╣рдо рддреБрд░рдВрдд рдЫреЛрдЯреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВрдЧреЗ:

  "keywords": [ "react", "css", "UI" ], "author": { "name": "Alex", "email": "alexandrshy@gmail.com", "url": "https://github.com/Alexandrshy" }, "license": "MIT", 


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо package.json рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рд▓реМрдЯ рдЖрдПрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЕрдм рдкрд╣рд▓рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред

 git status git add package.json git commit -m "Init npm package" git push 

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛: рд╣рдордиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреА рдЬрд╛рдВрдЪ рдХреА, рд╕рдВрд╢реЛрдзрд┐рдд рдкреИрдХреЗрдЬ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ред рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдмрджреНрдз, рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдПрдХ рджреВрд░рд╕реНрде рднрдВрдбрд╛рд░ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред рдЕрдм package.json рдФрд░ рдирдИ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣рдорд╛рд░реЗ рднрдВрдбрд╛рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА рд╣реИред Git рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк IDE рдпрд╛ GUI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рд╣реВрдВред

рд▓рд┐рдВрдЯрд░


рдЕрдкрдиреЗ рдХреЛрдб рдХреНрд▓реАрдирд░ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЕрдЧрд░ рдХрдИ рд▓реЛрдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ), рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ESLint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрдЪреНрдЪ рдЕрдиреБрдХреВрд▓рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

ESLint рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

 npm i -D eslint 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯ рдХрд░реЗрдВ:

 ./node_modules/.bin/eslint --init 

рдЖрдк ESLint рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд┐рдпрдо рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ Airbnb рдХрд╛ рдЧрд╛рдЗрдб рдкрд╕рдВрдж рд╣реИред рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:

 ? How would you like to use ESLint? To check syntax, find problems, and enforce code style ? What type of modules does your project use? JavaScript modules (import/export) ? Which framework does your project use? React ? Does your project use TypeScript? Yes ? Where does your code run? Browser ? How would you like to define a style for your project? Use a popular style guide ? Which style guide do you want to follow? Airbnb (https://github.com/airbnb/javascript) ? What format do you want your config file to be in? JavaScript 

рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рддреБрд░рдВрдд рдЗрд╕ рдЖрдЗрдЯрдо рдХреЛ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ рдЪреБрдирд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рдореЙрдбреНрдпреВрд▓ 'рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ' рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реА, рдЬреЛ рдХрд┐ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрднреА рддрдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЪрд▓реЛ рдЗрд╕реЗ рдЕрднреА рдареАрдХ рдХрд░реЗрдВ:

 npm i typescript npm i -D @typescript-eslint/parser 

рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрд╕реНрд▓рд┐рдВрдЯ рдЖрд░реНрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЖрдк рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдПрдЧрд╛ред

ESLint рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ index.ts рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ рдФрд░ рд╡рд╣рд╛рдБ рдирд┐рдореНрди рдХреЛрдб рд╕рд╣реЗрдЬреЗрдВ:

 var a console .log('a = ' + a) a = 100 

рдФрд░ рдЪреЗрдХ рдЪрд▓рд╛рдПрдВ:

 ./node_modules/.bin/eslint index.ts 

рдорд╣рд╛рди, рдПрдХ 5-рд▓рд╛рдЗрди рдХреЛрдб рдореЗрдВ 7 рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ 1 рдЪреЗрддрд╛рд╡рдиреА рд╣реИред рдФрд░ рддреБрд░рдВрдд ESLint рдореБрдЭреЗ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ, рдЖрдЗрдП рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 ./node_modules/.bin/eslint index.ts --fix 

рдФрд░ рд╣рдореЗрдВ рдпрд╣ рдХреЛрдб, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдФрд░ рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдорд┐рд▓рддрд╛ рд╣реИ:

 var a; console .log(`a = ${a}`); a = 100; 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлрд┐рдХреНрд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдЕрднреА рднреА рдмрд╣реБрдд рдмрджрд╕реВрд░рдд рджрд┐рдЦрддрд╛ рд╣реИред рдХреЛрдб рд╕реНрд╡рд░реВрдкрдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрдХрд░рдг Prettier рд╣реИ ред рдЖрдЗрдП рдЗрд╕реЗ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

 npm i -D prettier-eslint npm i -D prettier-eslint-cli 

 "scripts": { "format": "prettier-eslint '**/*.{js,ts,tsx}' --write" }, 

рдореИрдВрдиреЗ --рд▓реЗрдЦрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рд╛ рддрд╛рдХрд┐ рд╕рднреА рд╕реНрд╡рд░реВрдкрд┐рдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рд╣реЛ рдЬрд╛рдПрдВред рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

 npm run format 

index.ts

 let a; console.log(`a = ${a}`); a = 100; 

рд╕рдм рдХреБрдЫ рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдХреАрдмреЛрд░реНрдб рдХреЗ рд╢реЙрд░реНрдЯрдХрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рдЕрдкрдиреА IDE рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ рдЗрди рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ package.json рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

 "scripts": { "eslint": "./node_modules/.bin/eslint '**/*.{js,ts,tsx}'", "eslint:fix": "npm run eslint -- --fix", "format": "prettier-eslint '**/*.{js,ts,tsx}' --write" }, 

рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдЖрджрд░реНрд╢ рд╡рд┐рдХрд▓реНрдк рд╕рднреА рд▓рд┐рдВрдЯрд░реНрд╕ рдХреЛ рддреБрд░рдВрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛ рдпрджрд┐ рдЖрдкрдиреЗ рд╢реБрд░реВ рдореЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрд╛ рдерд╛ред

рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╣реЗрдЬреЗрдВ:

 git add . git commit -m "Added ESLint and Prettier" git push 

рдкреВрд░реНрд╡-рдкреНрд░рддрд┐рдмрджреНрдз рд╣реБрдХ


рд╣рдордиреЗ ESLint рдФрд░ Prettier рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо Git рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╕реНрдХреА рдкреИрдХреЗрдЬ рдЖрдкрдХреЛ `рдЧрд┐рдЯ рдХрдо` рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд▓рд┐рдВрдЯ-рд╕реНрдЯреЗрдЬ рдкреИрдХреЗрдЬ рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреЗрд╡рд▓ рдЕрдиреБрдХреНрд░рдорд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

 npm i -D husky lint-staged 

рдЪрд▓рд┐рдП package.json рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

  "husky": { "hooks": { "pre-commit": "lint-staged" } }, "lint-staged": { "*.(js|jsx|ts|tsx)": [ "npm run eslint:fix", "npm run format", "git add" ] }, 

рдЕрдм, рдкреНрд░рддреНрдпреЗрдХ рдХрдорд┐рдЯ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рднреА рд╕рдВрд╢реЛрдзрд┐рдд js рдФрд░ ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ ESLint рдФрд░ Prettier рдЪреЗрдХ рдЪрд▓рд╛рдПрдВрдЧреЗ рдФрд░ рдлреЙрд░реНрдореЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдорд╛рд░реА рдХрдореЗрдЯреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗред

рдлрд┐рд░ рд╕реЗ index.ts рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ:

 var a; console .log(`a = ${a}`); a = 100; 

рдХреЗрд╡рд▓ рдЗрд╕ рдПрдХ рдкрд░ рд╣рдо рддреБрд░рдВрдд рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ:

 git add index.ts git commit -m "Testing pre-commit hook" 

рдпрджрд┐ рдЖрдк index.ts рдлрд╛рдЗрд▓ рдХреЛ рдЕрднреА рдЪреЗрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреЛрдб рдлреЙрд░реНрдореЗрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдПрдЧреА рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЛ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред

## рдирд┐рд╖реНрдХрд░реНрд╖

рд╣рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, .gitignore рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ рдЬрд╣рд╛рдБ рд╣рдо node_modules рд▓рд┐рдЦрддреЗ рд╣реИрдВ , рд╣рдореЗрдВ рдЕрдкрдиреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо index.ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛ рднреА рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

 git add . git commit -m "Added husky and lint-staged" git push 

рдЖрдк рдХрд╛рд░реНрдп рдХрд╛ рдкреВрд░рд╛ рдкрд░рд┐рдгрд╛рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдореИрдВ рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдмрдирд╛рдКрдВрдЧрд╛ред

рд╣рдо рдпрд╣рд╛рдВ рд░реБрдХреЗрдВрдЧреЗ, рдЖрдк рд╕рднреА рдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧреЛрдВ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред

рд╕рдВрджрд░реНрдн


npm рдкреНрд░рд▓реЗрдЦрди
ESLint рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ
рдЦреВрдмрд╕реВрд░рдд-eslint
рдЦреВрдмрд╕реВрд░рдд-eslint-CLI
VSCode рдХреЗ рд▓рд┐рдП Prettier рдПрдХреНрд╕рдЯреЗрдВрд╢рди
рдХрд░реНрдХрд╢
рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡реГрдХреНрд╖ рдордВрдЪрди

Source: https://habr.com/ru/post/hi476162/


All Articles