рдкреЗрд╢ рд╣реИ рд╕реАрдПрд▓рдЖрдИ рдмрд┐рд▓реНрдбрд░

рдкреЗрд╢ рд╣реИ рд╕реАрдПрд▓рдЖрдИ рдмрд┐рд▓реНрдбрд░

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

рдХрд╣рд╛рдиреА


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

  1. рдпреЛрдЬрдирд╛рдмрджреНрдз рдЖрджреЗрд╢ - "рдпреЛрдЬрдирд╛рдмрджреНрдз рдЖрджреЗрд╢ ред " рдЕрдм рддрдХ, рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдХреИрдореИрдЯрд┐рдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд▓рдЖрдИ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реАред рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 5 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдирдпрд╛ , рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ , рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ ред
  2. рд╡рд┐рд╡рд┐рдз рдХрдорд╛рдВрдб - "рдЕрдиреНрдп рдЯреАрдо" ред рдпреЗ рдРрд╕реЗ рдХрдорд╛рдВрдб рд╣реИрдВ рдЬреЛ рд╕реАрдзреЗ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ: рд╕рд╣рд╛рдпрддрд╛ , рд╕рдВрд╕реНрдХрд░рдг , рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди , рдбреЙрдХреНрдЯрд░ ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рднреА рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╣рдорд╛рд░реЗ рдИрд╕реНрдЯрд░ рдЕрдВрдбреЗ (Shhh! рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рд╢рдмреНрдж рдирд╣реАрдВ!)ред
  3. рдЯрд╛рд╕реНрдХ рдХрдорд╛рдВрдб - "рдЯрд╛рд╕реНрдХ рдХрдорд╛рдВрдб ред " рдпрд╣ рд╢реНрд░реЗрдгреА, рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ, "рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЛрдб рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреА рд╣реИред" - рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдмрд┐рд▓реНрдб рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рд╣реИ, рд▓рд┐рдВрдЯ рдбреАрдмрдЧрд┐рдВрдЧ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдкрд░реАрдХреНрд╖рдг рд╣реИред

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

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

рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд, рд╕реНрдерд┐рд░ рдФрд░ рдмреЗрд╣рддрд░ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдгреАрдп рд╕реАрдПрд▓рдЖрдИ рд╕рдВрд╕реНрдХрд░рдг 8 рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрдХрд▓реНрдкрдирд╛


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

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

рдХрд▓реЗрдХреНрдЯрд░реЛрдВ


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

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

рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдХрд╛рд░реНрдп


рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдПрдкреАрдЖрдИ рдХреЛрдгреАрдп.рдЬреЗрд╕рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдп рдФрд░ рдЙрдирдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдлрд╝рд╛рдЗрд▓ рд╣реИред

angular.json рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡реЗ, рдмрджрд▓реЗ рдореЗрдВ, рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдирдЬреА рдирдП рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рдПрдХ рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдмрд┐рд▓реНрдб рдХрд╛рд░реНрдп рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рдПрдирдЬреА рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ рддреАрди рдХреБрдВрдЬреА рд╣реИрдВ:

  1. рдмрд┐рд▓реНрдбрд░ - рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдирд╛рдо, PACKAGE_NAME рдкреНрд░рд╛рд░реВрдк рдореЗрдВ : ASSEMBLY_NAME ред
  2. рд╡рд┐рдХрд▓реНрдк - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред
  3. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди - рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдПрдВрдЧреАред

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

рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ ред

рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХрд▓реЗрдХреНрдЯрд░ рдмрдирд╛рдПрдВ


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЗрдП рдПрдХ рдХрд▓реЗрдХреНрдЯрд░ рдмрдирд╛рдПрдВ рдЬреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдЧрд╛ред рдПрдХ рдХрд▓реЗрдХреНрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, CreateBuilder рдлреИрдХреНрдЯреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ BuilderOutput рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ:

import { BuilderOutput, createBuilder } from '@angular-devkit/architect'; export default createBuilder((options, context) => { return new Promise<BuilderOutput>(resolve => { resolve({ success: true }); }); }); 

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

 import { BuilderOutput, createBuilder } from '@angular-devkit/architect'; import * as childProcess from 'child_process'; export default createBuilder((options, context) => { const child = childProcess.spawn(options.command, options.args); return new Promise<BuilderOutput>(resolve => { child.on('close', code => { resolve({ success: code === 0 }); }); }); }); 

рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг


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

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓реЙрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:

 import { BuilderOutput, createBuilder } from '@angular-devkit/architect'; import * as childProcess from 'child_process'; export default createBuilder((options, context) => { const child = childProcess.spawn(options.command, options.args, { stdio: 'pipe' }); child.stdout.on('data', (data) => { context.logger.info(data.toString()); }); child.stderr.on('data', (data) => { context.logger.error(data.toString()); }); return new Promise<BuilderOutput>(resolve => { child.on('close', code => { resolve({ success: code === 0 }); }); }); }); 

рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдерд┐рддрд┐ рд░рд┐рдкреЛрд░реНрдЯ


рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдкреАрдЖрдИ рдХрд╛ рдЕрдВрддрд┐рдо рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рдЧрддрд┐ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИред

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

 import { BuilderOutput, createBuilder } from '@angular-devkit/architect'; import * as childProcess from 'child_process'; export default createBuilder((options, context) => { context.reportStatus(`Executing "${options.command}"...`); const child = childProcess.spawn(options.command, options.args, { stdio: 'pipe' }); child.stdout.on('data', (data) => { context.logger.info(data.toString()); }); child.stderr.on('data', (data) => { context.logger.error(data.toString()); }); return new Promise<BuilderOutput>(resolve => { context.reportStatus(`Done.`); child.on('close', code => { resolve({ success: code === 0 }); }); }); }); 

рдкреНрд░рдЧрддрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджрд▓реАрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдВрдЯ рдФрд░ (рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ) рд╕рд╛рд░рд╛рдВрд╢ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде ReportProgress рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХреБрд▓ рдХреЛрдИ рднреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рддрдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХреБрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ tslint рдХрд▓реЗрдХреНрдЯрд░ рдЗрд╕рдХреА рдкреНрд░рдЧрддрд┐ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред

рдЗрдирдкреБрдЯ рд╕рддреНрдпрд╛рдкрди


рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рджрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ JSON рд╕реНрдХреАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдХреИрдореЗрдЯрд┐рдХреНрд╕ рдХреЗ рд╕рдорд╛рди рд╣реИ рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред

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

 { "$schema": "http://json-schema.org/schema", "type": "object", "properties": { "command": { "type": "string" }, "args": { "type": "array", "items": { "type": "string" } } } 

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

рдПрдХ рдмрд┐рд▓реНрдб рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдБ


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

 { "builders": { "command": { "implementation": "./command", "schema": "./command/schema.json", "description": "Runs any command line in the operating system." } } } 

рдлрд┐рд░, package.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, builders.json рдлрд╝рд╛рдЗрд▓ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП:

 { "name": "@example/command-runner", "version": "1.0.0", "description": "Builder for Architect", "builders": "builders.json", "devDependencies": { "@angular-devkit/architect": "^1.0.0" } } 

рдпрд╣ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдХрд▓реЗрдХреНрдЯрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд╣рд╛рдВ рджреЗрдЦрдирд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдирд╛рдо "@ рдЙрджрд╛рд╣рд░рдг / рдХрдорд╛рдВрдб-рд░рдирд░: рдХрдорд╛рдВрдб" рд╣реИ ред рдмреГрд╣рджрд╛рдиреНрддреНрд░ рд╕реЗ рдкрд╣рд▓реЗ рдирд╛рдо рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ (:) рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рд╣реИ, рдЬрд┐рд╕реЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреВрд╕рд░рд╛ рднрд╛рдЧ, рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдирд╛рдо рд╣реИ, рдЬрд┐рд╕реЗ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЗ рдирд╛рдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреЗрд╕рди рдлрд╝рд╛рдЗрд▓ред

рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг


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

рдкреИрдЯрд░реНрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╕реЛрдЪрд╛: рдкрд╣рд▓реЗ рдЖрдк рдПрдХ JsonSchemaRegistry (рд╕реНрдХреАрдорд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдмрдирд╛рдПрдВ , рдлрд┐рд░ рдЯреЗрд╕реНрдЯрд┐рдВрдЧрдЕрд░реНрдХрд┐рдЯреЗрдХреНрдЯрд╣реЛрд╕реНрдЯ рдФрд░ рдЕрдВрдд рдореЗрдВ, рдПрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдЙрджрд╛рд╣рд░рдгред рдЕрдм рдЖрдк builders.json рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

 import { Architect, ArchitectHost } from '@angular-devkit/architect'; import { TestingArchitectHost } from '@angular-devkit/architect/testing'; import { logging, schema } from '@angular-devkit/core'; describe('Command Runner Builder', () => { let architect: Architect; let architectHost: ArchitectHost; beforeEach(async () => { const registry = new schema.CoreSchemaRegistry(); registry.addPostTransform(schema.transforms.addUndefinedDefaults); //  TestingArchitectHost тАУ    . //     ,   . architectHost = new TestingArchitectHost(__dirname, __dirname); architect = new Architect(architectHost, registry); //      NPM-, //    package.json  . await architectHost.addBuilderFromPackage('..'); }); //      Windows it('can run ls', async () => { //  ,     . const logger = new logging.Logger(''); const logs = []; logger.subscribe(ev => logs.push(ev.message)); // "run"    ,       . const run = await architect.scheduleBuilder('@example/command-runner:command', { command: 'ls', args: [__dirname], }, { logger }); // "result" тАУ    . //    "BuilderOutput". const output = await run.result; //  . Architect     //   ,    ,    . await run.stop(); //   . expect(output.success).toBe(true); // ,     . // `ls $__dirname`. expect(logs).toContain('index_spec.ts'); }); }); 

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ ts-node рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ index_spec.ts рдХреЛ index_spec.js рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред

рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдХреЛрдгреАрдп рдмрдирд╛рддреЗ рд╣реИрдВред Json рдЬреЛ рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рд╣рдордиреЗ рдХреЛрдбрд╛рдВрддрд░рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛ рд╣реИред рдпрд╣ рдорд╛рдирдХрд░ рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреЗ рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рдЙрджрд╛рд╣рд░рдг / рдХрдорд╛рдВрдб-рд░рдирд░ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдирдП рдмрд┐рд▓реНрдбрд░-рдЯреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рд╣реИ, рдХреЛрдгреАрдп . json рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ (рдХреБрдЫ рд╕рд╛рдордЧреНрд░реА рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИ):

 { // ...   . "projects": { // ... "builder-test": { // ... "architect": { // ... "build": { "builder": "@angular-devkit/build-angular:browser", "options": { // ...   "outputPath": "dist/builder-test", "index": "src/index.html", "main": "src/main.ts", "polyfills": "src/polyfills.ts", "tsConfig": "src/tsconfig.app.json" }, "configurations": { "production": { // ...   "optimization": true, "aot": true, "buildOptimizer": true } } } } 

рдЕрдЧрд░ рд╣рдордиреЗ рдЕрдкрдиреЗ рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЯрдЪ рдХрдорд╛рдВрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╢реЛрдзрди рддрд┐рдерд┐) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо npm рд╕реНрдерд╛рдкрд┐рдд рдЙрджрд╛рд╣рд░рдг / рдХрдорд╛рдВрдб-рд░рдирд░ рдЪрд▓рд╛рдПрдВрдЧреЗ , рдФрд░ рдлрд┐рд░ angular.json рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВрдЧреЗ :

 { "projects": { "builder-test": { "architect": { "touch": { "builder": "@example/command-runner:command", "options": { "command": "touch", "args": [ "src/main.ts" ] } }, "build": { "builder": "@angular-devkit/build-angular:browser", "options": { "outputPath": "dist/builder-test", "index": "src/index.html", "main": "src/main.ts", "polyfills": "src/polyfills.ts", "tsConfig": "src/tsconfig.app.json" }, "configurations": { "production": { "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" } ], "optimization": true, "aot": true, "buildOptimizer": true } } } } } } } 

рдХреЛрдгреАрдп рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рдПрдХ рд░рди рдХрдорд╛рдВрдб рд╣реИ, рдЬреЛ рдХрд▓реЗрдХреНрдЯрд░реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдХрдорд╛рдВрдб рд╣реИред рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ PROJECT: TASK [: CONFIGURATION] рдкреНрд░рд╛рд░реВрдк рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдирдЬреА рд░рди рдмрд┐рд▓реНрдбрд░-рдЯреЗрд╕реНрдЯ: рдЯрдЪ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рд╣рдо рдХреБрдЫ рддрд░реНрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдЕрдм рддрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдХрдорд╛рдВрдб рдХреЛ рд╕реНрд╡рдпрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдирдЬреА рд░рди рдмрд┐рд▓реНрдбрд░-рдЯреЗрд╕реНрдЯ: рд╕реНрдкрд░реНрд╢ - рдпреБрдЖрди = рдПрд▓рдПрд╕ ред - рдпрд╣ src / main.ts рдлрд╛рдЗрд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред

рджреЗрдЦреЛ рдореЛрдб


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

  1. рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдПрдХ рдмрд┐рд▓реНрдбрд░рдСрдЙрдЯрдкреБрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдПрдХ рдмрд╛рд╣рд░реА рдШрдЯрдирд╛ рдХреЗ рдХрд╛рд░рдг рдЕрд╡рд▓реЛрдХрди рдореЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░, рдЕрдЧрд░ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП reference.reportRunning () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд▓реЗрдХреНрдЯрд░ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рдирдП рдХреЙрд▓ рдкрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рд░реЛрдХрдиреЗ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ред
  2. рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдЦреБрдж рдХреЛ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рд╕реЗ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХрд▓реЗрдХреНрдЯрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рд░рди.рд╕реНрдЯреЙрдк (), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП), рдЯрд┐рдпрд░рдбрд╛рдЙрди рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ - рд╡рд┐рдирд╛рд╢ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдоред рдпрд╣ рдЖрдкрдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдпрджрд┐ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣реА рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рд╕рд╛рд░рд╛рдВрд╢, рдпрджрд┐ рдЖрдкрдХрд╛ рдХрд▓реЗрдХреНрдЯрд░ рдмрд╛рд╣рд░реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  1. рдирд┐рд╖реНрдкрд╛рджрдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрдмрдкреИрдХ рдХрд╛ рд╕рдВрдХрд▓рдиред рдпрд╣ рдХрджрдо рддрдм рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡реЗрдмрдкреИрдХ рднрд╡рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рдХрд▓реЗрдХреНрдЯрд░ рдмрд┐рд▓реНрдбрд░рд╡рд░реНрдЯрдкреБрдЯ рдХреЛ рдЕрд╡рд▓реЛрдХрди рдХреЗ рд▓рд┐рдП рднреЗрдЬрддрд╛ рд╣реИред
  2. рдЕрд╡рд▓реЛрдХрдиред - рджреЛ рд▓реЙрдиреНрдЪ рдХреЗ рдмреАрдЪ, рдмрд╛рд╣рд░реА рдШрдЯрдирд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрдмрдкреИрдХ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрджрдо рддрдм рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡реЗрдмрдкреИрдХ рдмрд┐рд▓реНрдб рдФрд░ рд╕рдВрджрд░реНрдн рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ редreportRunning () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЪрд░рдг рдХреЗ рдмрд╛рдж, рдЪрд░рдг 1 рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
  3. рд╕рдорд╛рдкрдиред - рдХрд╛рд░реНрдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЧрдИ рдереА рдХрд┐ рд╡реЗрдмрдкреИрдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрдЧрд╛) рдпрд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреА рд╢реБрд░реБрдЖрдд рдмрдВрдж рд╣реЛ рдЧрдИ рдереА ( рд░рди.рд╕реНрдЯреЙрдк () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рд╡рд┐рдирд╛рд╢ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рд╛рдл рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

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


рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рд╣рдордиреЗ рдЬреЛ рдХреБрдЫ рд╕реАрдЦрд╛, рдЙрд╕рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

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

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

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

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


All Articles