рд╣рдордиреЗ рдЕрдкрдиреЗ рдФрд░ рдЯреАрдо рдХреЗ рд▓рд┐рдП рдпрд╛ рдЖрдзреБрдирд┐рдХ рдлреНрд░рдВрдЯ-рдПрдВрдб рдЯреВрд▓реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ npm рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛


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


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


рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ


рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдХреНрдпрд╛ рд╣реИ:


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

рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ - рдЪреВрдВрдХрд┐ рд╕рдордп рдФрд░ рдЗрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЖрд╕рд╛рди рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдПред рдореБрдЭреЗ рдФрд░ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:


  • рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рди рд╕реНрд╡рд░реВрдкрдг рд╢реИрд▓реА рдЪрд╛рд╣рд┐рдП
  • рдореБрдЭреЗ рдПрдХ рдПрдХреАрдХреГрдд рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реИрд▓реА рдЪрд╛рд╣рд┐рдП
  • рдореБрдЭреЗ рдкреНрд░рд▓реЗрдЦрди рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛
  • рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рд╕рдм рдХреБрдЫ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЙрддреНрдкрд╛рджрди рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ fyr-fyr-fyr рд╣реЛрдЧрд╛

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдиреЗ рдЖрдХрд╛рд░ рд▓рд┐рдпрд╛:


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

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдЖрдкрдХреЛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЗрд╢рд╛рд░реЗ


рд╣рдо рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рдкреИрдХреЗрдЬ) рдХреНрд▓реЛрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдкреИрдХреЗрдЬ рдХреЛ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рдПрдЧрд╛ред рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ред


git init npm init npm i -D typescript ./node_modules/.bin/tsc --init 

рддреБрд░рдВрдд рдореМрдХреЗ рдкрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП tsconfig.json рдХреЛ рдЯреНрд╡реАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд▓рдХреНрд╖реНрдп, рд▓рд┐рдмрд╛рд╕, рд╢рд╛рдорд┐рд▓ / рдмрд╣рд┐рд╖реНрдХреГрдд, рдмрд╛рд╣рд░ рдФрд░ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкред


рд╕реНрд╡рд░реВрдкрдг рд╢реИрд▓реА


рд╕рдорд╛рди рд╕реНрд╡рд░реВрдкрдг рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рджреЛ рдЙрдкрдХрд░рдг рд▓рд┐рдПред рдкрд╣рд▓реА .editorconfig рдлрд╝рд╛рдЗрд▓ рд╣реИред рдпрд╣ рд╕рднреА рдкреНрд░рдореБрдЦ IDE (WebStorm, VSCode, Visual Studio, рдЗрддреНрдпрд╛рджрд┐) рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - js, ts, md, рдФрд░ рдЗрд╕реА рддрд░рд╣ред


 #root = true [*] indent_style = space end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true max_line_length = 100 indent_size = 4 [*.md] trim_trailing_whitespace = false 

рдЕрдм, рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдСрдЯреЛрдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХрдореЛрдмреЗрд╢ рд╡реИрд╕рд╛ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред


рджреВрд╕рд░рд╛ рдЯреВрд▓ рдкреНрд░реЗрдЯреАрдпрд░ рд╣реИ ред рдпрд╣ рдПрдХ npm рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдкрд╛рда рд╕реНрд╡рд░реВрдкрдг рдХреЛ рд╕рд╣реА рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рдХреЛ package.json рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ


 npm i -D prettier 

package.json


 "prettier": "prettier --config .prettierrc.json --write src/**/*.ts" 

рдкреНрд░реАрдЯрд┐рдпрд░ рдореЗрдВ рдПрдХ init рдХрдорд╛рдВрдб рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрдбрд╝ рдореЗрдВ .prettierrc.json рдмрдирд╛рдПрдБ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╕рд╛рдордЧреНрд░реА (рдпрджрд┐ рдХреБрдЫ рднреА рд╣реЛ, рддреЛ рдкреЛрд╕реНрдЯ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрджреНрдзрд░рдг рдмреЗрд╣рддрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)


.prettierrc.json


 { "tabWidth": 4, "useTabs": false, "semi": true, "singleQuote": true, "trailingComma": "es5", "arrowParens": "always" } 

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


рдХреЛрдб рд╢реИрд▓реА


рдХреЛрдб рд╢реИрд▓реА рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП, рд╡рд╣рд╛рдБ eslint рд╣реИ ; рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП, tslint рд╣реИ ред рд╣рдо tslint рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsconfig.js рдмрдирд╛рддреЗ рд╣реИрдВ


 npm i -D tslint ./node_modules/.bin/tslint --init 

package.json


 "lint": "tslint -c tslint.json 'src/**/*.ts' 'tests/**/*.spec.ts'" 

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


Tslint рдбреЗрд╡рд▓рдкрд░реНрд╕ рдордЬрд╛рдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
 module.exports = { extends: "./tslint-base.json", rules: { "no-excessive-commenting": [true, {maxComments: Math.random() * 10}] } }; 

рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ?


рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИ - рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ tslint рдФрд░ Prettier intersect (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ "рд╣реИрдВрдЧрд┐рдВрдЧ рдХреЙрдорд╛" рдХреА рд▓рдВрдмрд╛рдИ рдореЗрдВ)ред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдиреБрдкрд╛рд▓рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдпрд╛ рдХреБрдЫ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред


рдФрд░ рдлрд┐рд░ рднреА, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдордВрдЪрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рд▓рд┐рдВрдЯ-рдордВрдЪрд┐рдд рдкреИрдХреЗрдЬ рд╣реИ


рдкрд░реАрдХреНрд╖рдг


рд╣рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рддрд╛рдХрд┐ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рджреВрд╕рд░рд╛, рдХрд╡рд░реЗрдЬ рдирд┐рдпрдВрддреНрд░рдг, рддреАрд╕рд░рд╛ рдХреБрдЫ рд░рд┐рдкреЛрд░реНрдЯ, рдЕрдзрд┐рдорд╛рдирддрдГ lcov рдкреНрд░рд╛рд░реВрдк рдореЗрдВ (рдпрджрд┐ рдХреБрдЫ рднреА рд╣реЛ, lcov рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕реЛрдирд╛рд░рдХреНрдпреВрдм рд╕реЗ рдХреЛрдбрдХреЛрд╡ рддрдХ)ред рд╣рдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рддреЗ рд╕рдордп, рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдмрд╛рдж рдореЗрдВ рдирд┐рдкрдЯреЗрдВрдЧреЗред


рд╣рдо рдХрд░реНрдо , рдЪрдореЗрд▓реА рдФрд░ рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рд╢рд░реАрд░ рдХрд┐рдЯ рдбрд╛рд▓рддреЗ рд╣реИрдВ


 npm i -D karma karma-jasmine jasmine karma-typescript karma-chrome-launcher @types/jasmine ./node_modules/.bin/karma init 

рд╣рдо рдХрд░реНрдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ редconf.js рдереЛрдбрд╝рд╛ рд╕рд╛ рдФрд░ рддреБрд░рдВрдд рдХрд╡рд░реЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


karma.conf.js
 karmaTypescriptConfig : { include: ["./src/**/*.ts", "./tests/**/*.spec.ts"], tsconfig: "./tsconfig.json", reports: { "html": "coverage", "lcovonly": { directory: './coverage', filename: '../lcov.dat' } }, coverageOptions: { threshold: { global: { statements: 60, branches: 60, functions: 60, lines: 60, excludes: [] }, file: { statements: 60, branches: 60, functions: 60, lines: 60, excludes: [], overrides: {} } } }, } 

рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, package.json рдореЗрдВ рдПрдХ рдирдИ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ


package.json


 "test": "karma start" 

рдпрджрд┐ рдЖрдк рд╕реАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣реЗрдбрд▓реЗрд╕рдХреНрд░реЛрдо рд▓рдЧрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ:


 npm i -D puppeteer 

рдФрд░ рдХрд░реНрдорд╛ (рдХреНрд░реЛрдорд╣реЗрдбрд▓реЗрд╕ рдкрд░ рдХреНрд░реЛрдо рдлрд┐рдХреНрд╕) рдФрд░ рдХреБрдЫ рдФрд░ рдкреВрд░реНрд╡-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рд╕рдВрдкрд╛рджрди рдбреЗрдореЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред


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


рд░рд┐рдкреЛрд░реНрдЯ:



рдкреНрд░рддрд┐рдмрджреНрдз рд╢реИрд▓реА


рдХрдорд┐рдЯ рдХреЛ рднреА рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рд╕рд╛рде рд╣реА рдХрд┐рд╕реА рдХреЛ рд╕рдлреЗрдж-рдЧрд░реНрдо рдореЗрдВ рд▓рд╛рдПрдВ, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрдЯреНрдЯрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ)ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдХрдорд┐рдЯрдореЗрдВрдЯ рд▓рд┐рдпрд╛ред рдпрд╣ рдПрдХ рд╕рдВрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдкрд╛рд░рдВрдкрд░рд┐рдХ-рдЪреЗрдВрдЧрд▓реЙрдЧ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдЖрдк рдЗрд╕рдХреЗ рд╣рд┐рдЯ рд╕реЗ рдЪреИрдВрдЬ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ VsCode рдкреНрд▓рдЧрдЗрди рд╣реИ


 npm i -D commitizen npm i -D cz-conventional-changelog 

cz-рдкрд╛рд░рдВрдкрд░рд┐рдХ-рдЪреИрдВрдЬ рдПрдХ рдПрдбреЙрдкреНрдЯрд░ рд╣реИ рдЬреЛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдкрдХреЗ рдХрдорд┐рдЯ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд▓рд┐рдП


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рдирдИ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗрдВ


 "commit":"git-cz" 

рдФрд░ рдПрдХ рдирдпрд╛ package.json рдЕрдиреБрднрд╛рдЧ - рдХрдорд┐рдЯрдореИрди рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░


 "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } } 

рдирд╛рдЧрд░рд┐рдХ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдкреНрд░рд▓реЗрдЦрди


рдЕрдм рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдПред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдВрдЧреЗ - рдХреЛрдб рд╕реЗ рдФрд░ рдХрдорд┐рдЯ рд╕реЗред рдХреЛрдб рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯрд╛рдЗрдкрдбреЙрдХ ( рдПрд╕рдбреЗрдХ рдХреЗ рдЕрдиреБрд░реВрдк рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП) рд▓рд┐рдпрд╛ред рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ред


 npm i typedoc -D 

рдФрд░ рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ


package.json


 "doc": "typedoc --out docs/src/ --readme ./README.md" 

--Readme рдзреНрд╡рдЬ рд░реАрдбрдореА рдХреЛ рдореБрдЦреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреГрд╖реНрда рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░реЗрдЧрд╛, рдЬреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред


рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЪреИрдВрдЬ рд╣реИ, рдФрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ-рдЪреЗрдВрдЧрд▓реЛрдЧ-рдХреНрд▓рд┐ рдкреИрдХреЗрдЬ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░реЗрдЧрд╛ред


 npm i -D conventional-changelog-cli 

package.json


 "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s" 

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


Bild


рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЫреЛрдЯрд╛ рдмрдВрдбрд▓ рдмрдирд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ uglifyjs рдФрд░ рдереЛрдбрд╝реЗ рдЯреНрд╡рд┐рдХ рдкреИрдХреЗрдЬ.рдЬреЙрди рдХреА рдЬрд░реВрд░рдд рд╣реИ


 npm i -D uglifyjs 

package.json


 "clean":"rmdir dist /S /Q", "build": "tsc --p ./ --sourceMap false", "bundle": "uglifyjs ./dist/*.js --compress --mangle --output ./dist/index.min.js" 

рд╡реИрд╕реЗ, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рджреЛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдкреИрдХреЗрдЬ рд╣реИрдВ



рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз / рдзрдХреНрдХрд╛ / рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рднреА рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╣реБрдд, рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ред


рд╕реНрд╡рдЪрд╛рд▓рди


рдЦреИрд░, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдХрджрдо рдЙрдард╛ рд▓рд┐рдП рд╣реИрдВ, рдЕрдм рд╕рдм рдХреБрдЫ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред


рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдФрд░ рдкреИрдХреЗрдЬ - рд╣рд╕реНрдХреА рдЪрд╛рд╣рд┐рдП ред рдпрд╣ git рд╣реБрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдкреИрдХреЗрдЬ.json рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реАрдХреЛрдорд╛рдЗрдЯ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдзрдХреНрдХрд╛ - рдкреВрд░реНрд╡рд╕рд░реНрдЧ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ, рддреЛ рдХрдорд┐рдЯ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧреАред


 npm i -D husky 

package.json


 "precommit":"npm run prettier", "prepush": "call npm run lint && call npm run test" 

рдпрд╣рд╛рдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рд╣реИ, рдХреЙрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдирд╣реАрдВ рд╣реИ рдФрд░ рдпреВрдирд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ npm-run-all рдкреИрдХреЗрдЬ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рд╡рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИред


рдкреНрд░рдХрд╛рд╢рди


рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рд╣рдо рдЕрдкрдиреЗ (рдЦрд╛рд▓реА рд╣рд╛рде) рдкреИрдХреЗрдЬ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдкрд░ рдЖрддреЗ рд╣реИрдВред рдЖрдЗрдП рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдкреНрд░рдХрд╛рд╢рди рд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?


  • рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдЯреЗрд╕реНрдЯ рдХрд░реЗрдВ
  • рдирд┐рд░реНрдорд╛рдг рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рд▓реАрдЬрд┐рдП
  • рджрд╕реНрддрд╛рд╡реЗрдЬ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдВ
  • рд╕рдВрд╕реНрдХрд░рдг рдЙрдард╛рдПрдБ
  • рдЯреНрд░рд┐рдЧрд░ рдЯреИрдЧ
  • Npm рдХреЛ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ

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


 "preversion": "npm run test", "version": "call npm run clean && call npm run build && npm run bundle && call npm run doc && call npm run changelog && git add . && git commit -m 'changelogupdate' --no-verify", "postversion": "git add . && git push && git push --tags", 

рдпрд╣ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдкреИрдХреЗрдЬ рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ, рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдФрд░ рд╣рдорд╛рд░реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде (d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsconfig.json рдореЗрдВ -declaration рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ)


package.json


 "main": "./dist/index.min.js", "types": "./dist/index.d.ts", "files": [ "dist/", "src/", "tests/" ] 

рдЦреИрд░, рдпрд╣ рд╕рдм рд▓рдЧрддрд╛ рд╣реИред рдЕрдм рдмрд╕ рдХрд░реЛ


 npm version ... npm publish 

рдФрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рдЖрдк рд╣реЛ рдЬрд╛рдПрдЧрд╛ред


рдмреЛрдирд╕


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


рдзрдиреНрдпрд╡рд╛рдж


рдЬреЗрд╕реЗрдлреЗрд╕реНрдЯ рдкрд░ рдЕрдкрдиреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдПрд▓реЗрдХреНрд╕реА рд╡реЛрд▓рдХреЛрд╡ рдХреЛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЖрдзрд╛рд░ рдмрдирд╛ред


рдЕрдзрд┐рдХрддрдо 7z , рдЕрд╡рд┐рдирд╛рд╢реА , рдзрдиреНрдпрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд┐ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдФрд░ рдХреБрдЫ рдЖрдБрдХрдбрд╝реЗ


  • Node_modules рдХрд╛ рдЖрдХрд╛рд░: 444 MB (NTFS)
  • рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛: 17
  • рдХреБрд▓ рдкреИрдХреЗрдЬ рдкреНрд░рдпреБрдХреНрдд: 643

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ


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


All Articles