рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рд╡рд┐рд╢реЗрд╖рддрд╛
рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдореЛрдиреЛрд░реЗрдкреЛ рдХреА рдЬрдбрд╝ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ yarn.lock
рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ yarn.lock
рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИред
рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдореИрдВ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рджреЛрдиреЛрдВ рдРрдкреНрд╕ (рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдиреЛрдб рдореЙрдбреНрдпреВрд▓) рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореЛрдиреЛрд░реЗрдкреЛ рдХреА рдЬрдбрд╝ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ yarn.lock
рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреЗ рд╕реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рдРрдк рдХреЛ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдореЗрдВ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рдЪреБрдиреЗ рд╣реБрдП рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП yarn.lock
рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкрд╕рдВрдж рдЖрдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЛ рдмрд╛рдж рдореЗрдВ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ 2 рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╣реИ: workspace-a
рдФрд░ workspace-b
ред workspace-a
рдХреБрдЫ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ workspace-b
ред рдЕрдЧрд░ рдореИрдВ workspace-a
рдХреЛ рдбреЙрдХрдЯрд░ рдЗрдореЗрдЬ рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдпрд╛ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╣реИ, рдкреВрд░реЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рдмрд┐рдирд╛), рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП yarn.lock
рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ workspace-a
рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реВрдВрдЧрд╛, рддреЛ рдореБрдЭреЗ рдПрдХ yarn.lock
рдлрд╝рд╛рдЗрд▓ рдпрд╛рдж рдЖ рд░рд╣реА рд╣реЛрдЧреА рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд╕рднреА рдЦреЛ рджреВрдВрдЧрд╛ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдлрд╛рдпрджреЗ (рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдорд╛рди рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ)ред
рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реАред рдХреНрдпрд╛ рдореИрдВ рдЕрдХреЗрд▓рд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ? рд╢рд╛рдпрдж рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ? рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди lerna
рдмрд┐рдирд╛ рдлрд╣рд░рд╛рдП рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рдкреИрдХреЗрдЬ рдПрдХ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧреАред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬрд╛рд░реА nohoist
рдлреАрдЪрд░ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА), рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдПрдХ рдЕрд▓рдЧ yarn.lock
рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред
рдпрд╣ рдореБрджреНрджрд╛ рдХреБрдЫ рд╣рдж рддрдХ рдХрд┐рд╕реА рдЕрдиреНрдп рдореБрджреНрджреЗ рдкрд░ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдХ рдореБрджреНрджреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдиреЛрдб.рдЬреЗрдПрд╕, рдпрд╛рд░реНрди рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВред
рдиреЛрдб 8.9.3, рдпрд╛рд░реНрди 1.5.1, OSX 10.13.3
рдпрд╛рд░реНрди рдмреНрд▓реЙрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд:
рдЬрдм рдЖрдк рдХреЛрдИ рдРрд╕рд╛ рдкреИрдХреЗрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдпрд╛рд░реНрди.рд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ рдЖрдкрдХреА рдЦреБрдж рдХреА рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рднреАрддрд░ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреИрдХреЗрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╛рд░реНрди.рд▓реЙрдХ рдХреЛ рдмрдВрдбрд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд▓рдЧрддрд╛... рдпрд╣ рдкреВрд░реЗ рд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд╛рд╕ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
@connectdotz рдХрд┐рд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХрд╣реАрдВ рдФрд░ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрдЧрд╛ред
рдпрдХреАрди рд╣реИ ... рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡рд┐рдХрд╛рд╕ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рд┐рд░реНрдл рдкреВрд░рд╛ рд░реЗрдкреЛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╛рд░реНрдиред рд╡реИрд╕реЗ рднреА? рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдУрдПрд╕ рдпрд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдореЛрдиреЛрд░реЗрдкреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдкреВрд░реЗ рд░реЗрдкреЛ рдФрд░ рдЙрд╕рдХреЗ рдпрд╛рд░реНрди рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЙрдХред рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдореЛрдиреЛрд░реЗрдкреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдЪрдХреНрд░ рдХреЗ рджреМрд░рд╛рди рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдФрд░ рдЕрдзрд┐рдХ рдареЛрд╕ рд╕рдордЭ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ ...
рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рд╣рдо рдкреВрд░реЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдкрд░рд┐рдгрд╛рдореА рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЙрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╣рд▓реНрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░рд╛ рдореЛрдиреЛ рд░реЗрдкреЛ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рдмреАрдЪ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рдХреБрдЫ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреБрдЫ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ)ред рдЗрд╕рд▓рд┐рдП рдЬрдм рд╣рдо рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЫрд╡рд┐ рдореЗрдВ рдЙрд╕ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреА рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЙрдЪрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП - рд╣рдорд╛рд░реА рдирд┐рдЬреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ, рдФрд░ рдбреЙрдХ рдЗрдореЗрдЬ рдХреЗ рдЖрд░реНрдХ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИред
рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд╣рдорд╛рд░реА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╣рд▓реНрдХрд╛ рд░рдЦрдирд╛ рд╣реИ, рдФрд░ рдкреВрд░реЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрд░рдирд╛ рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рд╣рдо рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреА рдЫрд╡рд┐ рдХреЗ рдЕрдВрджрд░ "рдпрд╛рд░реНрди" рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╡рд╣рд╛рдВ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдпрд╛рд░реНрди рдХрдорд╛рдВрдб рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреА рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдорд╛рдВрдЧ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред ..
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА ..
@netanelgilad рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИред рдХреГрдкрдпрд╛ #4521 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рддрд╛рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдореЗрдХрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВред
рдЬрдмрдХрд┐ рдореИрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП -f
рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рд░реЗрдкреЛ рдХреА рдЬрдбрд╝ рд╕реЗ docker рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рд░реЗрдкреЛ рд╣реЛрдЧрд╛ рдФрд░ рд░реВрдЯ рд╕реЗ package.json рдФрд░ рдпрд╛рд░реНрди.рд▓реЙрдХ рдореЗрдВ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЫрд╡рд┐ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ package.json рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдпрд╛рд░реНрди рдХреЗрд╡рд▓ рдЙрди package.json рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдк рдпрд╛рд░реНрди.рд▓реЙрдХ рдореЗрдВ рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА рдХрд╣рд╛ред рдпрд╣ рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдореЗрдВ рдкреИрдХреЗрдЬ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдбреЙрдХрдЯрд░ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдмрд┐рд▓реНрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рди рд╣реЛ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рд╣реИрдВред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рд╕рднреА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд░рд╣реЗрдВ рддрд╛рдХрд┐ рд▓реЛрдЧ рдЪрд╛рд╣реЗрдВ рддреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрди рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХреЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдЧрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИ, рдФрд░ рдПрдХ package.json рд╣реИ рдЬреЛ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдХ web-app
рдЬреЛ рдХрдИ рд╕реНрдерд╛рдиреАрдп рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:
web-app/
|--node_modules/
|--packages/
| |--controls/
| | |--src/
| | |--package.json
| |--utils/
| |--src/
| |--package.json
|--src/
|--package.json
|--yarn.lock
рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рдкреИрдХреЗрдЬ controls
рдФрд░ utils
рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдкрде рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ controls
рдкреИрдХреЗрдЬ ( yarn pack
) рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдмрдирд╛рдирд╛/рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ yarn install
рдЕрдВрджрд░ web-app/packages/constols/
рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп web-app/yarn.lock
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реАрд░реНрд╖-рд╕реНрддрд░ web-app/node-modules/
ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ web-app/packages/controls/package.json
рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдмрд╕реЗрдЯ рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣реИрдВ рдЬреЛ рд╕реНрд╡рдпрдВ рдХреЗ package.json
рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рд▓рд╛рдкрддрд╛ рдбрд┐рдкреНрд╕ рдХреЛ рднрд░рдиреЗ рдХреЗ рднрд╛рдЧреНрдп рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
2 рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:
yarn.lock
, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп package.json
рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред.yarnrc/.npmrc
редрдЗрд╕рд╕реЗ рдЬреВрдЭ рднреА рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рдХреЛрдгреАрдп рд╕реАрдПрд▓рдЖрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдПрдХ рд╣реА рднрдВрдбрд╛рд░ рдореЗрдВ рд╣реИрдВ рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЛ рд╣реЗрд░реЛрдХреВ рдореЗрдВ рдзрдХреНрдХрд╛ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╣рдо рдПрдХ рдмрд┐рд▓реНрдбрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╣рд░реЛрдХреВ рдХреЛ рдкрд╣рд▓реЗ рдлреНрд░рдВрдЯрдПрдВрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ: https://github.com/lstoll/heroku-buildpack-monorepo
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрд╕ nohoist
рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ yarn.lock
рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд░реЛрдХреВ рд╕рд┐рд░реНрдл npm рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣рдо рдмрдВрдж рд╡рд╛рд▓реЗ рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рдирдП рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ
рдЖрдк рдХреЗрд╡рд▓ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рд╡реИрд╢реНрд╡рд┐рдХ рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рд╣реИ:
WORKDIR /app
ENV NODE_ENV=production
ADD yarn.lock /app/
ADD package.json /app/
# Only copy the packages that I need
ADD packages/my-first-package /app/packages/my-first-package
ADD packages/my-second-package /app/packages/my-second-package
RUN cd /app && yarn install --frozen-lockfile
рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рджреЛ рдкреИрдХреЗрдЬреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рдФрд░ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рдореИрдВ рдПрдХ рдкреИрдХреЗрдЬ рд╕реЗ рд░рд┐рд▓реАрдЬ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЗрд╕рдХреА рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИред рдбреЙрдХрд░ рдХреЗ рдорд▓реНрдЯреАрд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде рдпрд╣ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ
yarn install --frozen-lockfile
рдЪрд▓рд╛рдПрдВCOPY --from=<stage>
yarn install --frozen-lockfile
рдЪрд▓рд╛рдПрдБ рдФрд░ RUN
рдХрдорд╛рдВрдб рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВредрдФрд░ рдЖрдк рдПрдХ рдЫреЛрдЯреЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЖрдкрдХреА рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреА рд╣реИрдВред
@ рдЬреЛрд╣рд╛рдиреНрд╕-рд╢рд╛рд░рд▓рд╛рдЪ
рдЖрдк рдЬреЛ рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВрдиреЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдорд▓реНрдЯреАрд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдб рдПрдХ рдЕрдЪреНрдЫреА рдЯрд┐рдк рд╣реИ :)ред
@connectdotz рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдУрд░ рд╕реЗ, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдо #4521 рдореБрджреНрджреЗ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдореБрдЦреНрдп рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рд╕рдВрдХреБрд▓ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдПрдХ рдпрд╛рд░реНрди.рд▓реЙрдХ рдХреА рддрд░рд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ (рднрд▓реЗ рд╣реА рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░ рджреЗрд╡ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ЁЯШЙ)ред рд▓реЗрдХрд┐рди #4521 рдореЗрдВ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╣рдо рдпрд╣рд╛рдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╛рд░реНрди рдХреЛ рдЕрдиреНрдпреЛрдиреНрдпрд╛рд╢реНрд░рд┐рддрддрд╛рдУрдВ рдФрд░ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЛ "рд╡рд┐рдХреНрд░реЗрддрд╛" рдХреИрд╕реЗ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдкрд╣рд▓реЗ рд▓рд░реНрди рдФрд░ рдлрд┐рд░ рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрд╛рд░реНрди рдиреЗ рдЖрдо рддреМрд░ рдкрд░ рдЕрдзрд┐рдХ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реА рдЬрд╝рд░реВрд░рдд рдХреЗ рдХрд░реАрдм рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ yarn workspaces run <script>
рд╢реБрд░реВрдЖрдд рдФрд░ wsrun рдЬреИрд╕реА рдЕрдиреНрдп рдЕрдЪреНрдЫреА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рдеред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХрд▓ yarn.lock
рдПрдХ рджрд░реНрдж рдмрд┐рдВрджреБ рд╣реИ:
рдЖрдк рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪреЗрдВрдЧреЗ,
yarn workspaces run <script>
редpackage.json
:json
"workspaces": {
"packages": ["packages/*"],
"hoistDependencies": true
}
yarn workspaces hoist-dependencies
рдЪрд▓рд╛рдПрдВрдЧреЗредрдЖрджрд┐ред рдпреЗ рд╕рд┐рд░реНрдл рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдСрдкреНрдЯ-рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдСрдкреНрдЯ-рдЖрдЙрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЛрдЧ рдПрдХ yarn.lock
рдФрд░ рдЕрдм рддрдХ рдЙрддреНрдерд╛рдкрди рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ) рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд░реЗрдкреЛ-рд╡рд╛рдЗрдб рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рд▓реНрдХрд╛ рдЖрдзрд╛рд░ рдмрдиреЗрдВред
рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ рд╡рд╣ #4521 рдЬреИрд╕реА рд╣реА рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ @ johannes-scharlach рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджреЗрд╢ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд▓реЙрдХрдлрд╛рдЗрд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реЛрдЧрд╛ред
рдиреЗрд╕реНрдЯреЗрдб рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднреА рдПрдХ
рдЖрдк рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪреЗрдВрдЧреЗ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯрд╛ рдХреЛрд░ рд╣реИ - рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдкреИрдХреЗрдЬ рдХреА рдШреЛрд╖рдгрд╛
рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрдирдХреЗ рд╡рд░реНрддрдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
yarn workspaces run <script>
рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИ (v1.10, #6244)ред
рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд▓реЙрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЛ рдПрдХ рдлрд╣рд░рд╛рдП рдЧрдП рдврд╛рдВрдЪреЗ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
yarn workspaces hoist-dependencies
рдЪрд▓рд╛рдПрдВрдЧреЗред
рдЪреВрдВрдХрд┐ рд╣рдо рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рдмрджрд▓реЗрдВрдЧреЗ, рдпрд╣ рд╡рд┐рдкрд░реАрдд рд╣реЛрдЧрд╛ ( dehoistDependencies
)ред
рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддрдХрдиреАрдХреА рд╡реНрдпрд╡рд╣рд╛рд░ (рдЙрддреНрдерд╛рдкрди) рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЕрд░реНрдердкреВрд░реНрдг рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХрд╣рд╛рдиреА рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреЗ рдмрдЬрд╛рдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ ("рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛") yarn --focus
рдХреЛ рдмрдврд╝рд╛рдХрд░ рдмреЗрд╣рддрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдЙрддреНрдерд╛рдкрди рдФрд░ рдПрдХ рдПрдХрд▓ yarn.lock
рдлрд╝рд╛рдЗрд▓ рд╕рдЦреНрддреА рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдпрд╣ "рд╕рд┐рд░реНрдл" рдкрд╣рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдорд┐рд▓реА рд╣реИ?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдЧрд╛:
node_modules
рд▓рд╣рд░рд╛рдПрдВредyarn.lock
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд░рдЦреЗрдВ (рд╣рдо рдбреЙрдХрд░ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рдмрдирд╛рддреЗ рд╣реИрдВ, рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ) рдФрд░ рдпрд╣ рднреА рдХрд┐ рдкреИрдХреЗрдЬ рдЙрдирдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд▓реЙрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред #6563 рднреА рджреЗрдЦреЗрдВредyarn workspaces run <script>
рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЛ рдЙрддреНрдерд╛рдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ (рдпрд╛ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП)редрд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЛ nohoist
рд╕рд╛рде рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, run
рдХреЛ рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдХреЗ "рдЕрдХреНрд╖рдо" рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХрд▓ yarn.lock
рдлрд╝рд╛рдЗрд▓ рдХреЛ "рдЕрдХреНрд╖рдо" рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореИрдВ ' рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдиреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЕрдЧрд░ рдЗрд╕реЗ рдЕрднреА рддрдХ рдкрд░реНрдпрд╛рдкреНрдд рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ :)
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ yarn install --app-mode package@version
рдЗрд╕ рддрд░рд╣, рдЖрдк рдЕрдкрдиреЗ рдРрдк рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп рдмрд╕ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд▓реЙрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ app-mode
рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдмрдВрдбрд▓ рд▓реЙрдХрдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдВрдЧреЗред
рдпрд╛рд░реНрди рдХреЛ рд╕рдВрдкреВрд░реНрдг рд▓реЙрдХрдлрд╛рдЗрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрд╕ рдкреИрдХреЗрдЬ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдХреЗ рдХреЗрд╡рд▓ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЕрдм рднреА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
npm pack package@version
)рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рд╕рдм рдЧрд▓рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд▓реЙрдХрдлрд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рднреАрддрд░ рдкреИрдХреЗрдЬ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рдЬреЛ рдРрдк рдкреИрдХреЗрдЬ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд▓реЙрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рд╕реЗ рдРрдк рд▓реЙрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдмрдирд╛рддреЗ рд╕рдордп рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдФрд░ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрд▓рдЧ рд▓реЙрдХрдлрд╛рдЗрд▓ рдЬрд╡рд╛рдм рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реАрдПрд▓рдЖрдИ рдФрд░ рдмреИрдХрдПрдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рд╕реАрдПрд▓рдЖрдИ рдХреЛ рдХреБрдЫ рдРрд╕реЗ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯрдЕрдк рд╡рд╛рд▓реА рдбреЗрд╕реНрдХрдЯреЙрдк рдорд╢реАрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реЛрдВред рджреВрд╕рд░реА рдУрд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рдПрдХ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдореЗрдВ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИред
рдпрд╣рд╛рдБ @samuela рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ! рдпрд╣ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛!
рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рджреВрд╕рд░реЗ, "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣рдБрд╕рдиреЗ рдпреЛрдЧреНрдп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдмрд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╣реИ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реБрдХ - рдЕрдВрджрд░ packages/*
ред
рдореЗрд░реЗ рдкрд╛рд╕ packages/*
рдмрдЧрд▓ рдореЗрдВ рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╣реИ, рдФрд░ рд╡рд╣ рд╣реИ local/*
ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ gitignore рдкрд░ рд╣реИ, рдФрд░ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдХрдВрдкрдиреА рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд╣рд╛рдВ рдЬреЛ рдЪрд╛рд╣реЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ create-react-app
рдРрдкреНрд╕ рдбрд╛рд▓реЗрдВ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рд╣реБрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред
рдЕрдм, рд╣рд╛рд▓рд╛рдВрдХрд┐ local/*
рдкреИрдХреЗрдЬ gitignore рдкрд░ рд╣реИрдВ, рд░реВрдЯ yarn.lock
рдмрд╕ рдлреВрд▓рд╛ рд╣реБрдЖ рдФрд░ рдкреНрд░рджреВрд╖рд┐рдд рд╣реИ - рдФрд░ рд╕реНрдерд╛рдиреАрдп рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдХрд╛рд░рдг git рдореЗрдВ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рдЬреЛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдореИрдкрд┐рдВрдЧ:
"workspaces": {
"packages": [
"packages/*",
"local/*"
],
"lockfiles": {
"local/*": "./local.yarn.lock"
}
}
рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ "_this_ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд╕реЗ рд▓реЙрдХрдлрд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рднреА рди рдбрд╛рд▓реЗрдВ" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рднреАред
рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЧрдВрднреАрд░ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ :)
рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрд▓рдЧ рд▓реЙрдХрдлрд╛рдЗрд▓ рдЬрд╡рд╛рдм рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реАрдПрд▓рдЖрдИ рдФрд░ рдмреИрдХрдПрдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рд╕реАрдПрд▓рдЖрдИ рдХреЛ рдХреБрдЫ рдРрд╕реЗ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯрдЕрдк рд╡рд╛рд▓реА рдбреЗрд╕реНрдХрдЯреЙрдк рдорд╢реАрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реЛрдВред рджреВрд╕рд░реА рдУрд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рдПрдХ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдореЗрдВ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИред
рдЖрдкрдиреЗ рдЗрд╕реЗ рднреБрдирд╛рдпрд╛ - рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╣реБрдд рд╣реА рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдлреНрд░реЛрдЬрди-рдбрд┐рдк рдкреНрд░реЛрдбрдХреНрд╢рди рдмрд┐рд▓реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ! рдХреНрдпрд╛ рдпрд╛рд░реНрди рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдпрд╣ рднреВрд▓ рдЧрдП?
рдПрдХрд▓ рд▓реЙрдХрдлрд╝рд╛рдЗрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рддрд░реНрдХ рдХреЛрдб рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╣реИ рдЬреЛ GitHub CODEOWNERS рд╕реБрд╡рд┐рдзрд╛ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдкреИрдХреЗрдЬ рдкрд░ рдкреВрд░реНрдг рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рджреЗрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рд╡реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд░реВрдЯ рд╕реНрддрд░ рдХреЗ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рджреЗрдВрдЧреЗред рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рдХреЛрдб рдорд╛рд▓рд┐рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдореЛрджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреЛ рдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдкреИрдорд╛рдиреЗ рдХрд╛ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред
рдлрд┐рд░ рднреА рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд▓реЙрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд░рдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдиреНрдп рдХрд╛рд░рдг: Google рдРрдк рдЗрдВрдЬрди рдмрд┐рдирд╛ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ (рдПрдирдкреАрдПрдо/рдпрд╛рд░реНрди) рдХреЗ рдПрдХ рдиреЛрдб рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрдирдХреА рдУрд░ рд╕реЗ рдЙрддреНрдХреГрд╖реНрдЯ рджреЗрд╡реЛрдкреНрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рджрд░реНрдж рд╣реИред рдЕрдм рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
yarn start
(рдПрдХрдорд╛рддреНрд░ рд╕рдорд░реНрдерд┐рдд рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ) рдХреЛ env vars рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВрдЕрдВрддрддрдГ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ yarn install --workspace-lockfile
рдХрдорд╛рдВрдб рдЬреЛ рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд▓реЙрдХрдлрд╛рдЗрд▓реНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред
рдкреИрдХреЗрдЬ рд╕реНрддрд░реАрдп рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдиреЗ рд╕реЗ рд╣рдореЗрдВ рднреА рдорджрдж рдорд┐рд▓реЗрдЧреАред рд╣рдорд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ, рд╣рдо рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рддрд░реАрдХреЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдореЛрдиреЛ рд░реЗрдкреЛ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд░реЗрдкреЛ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреИрдХреЗрдЬ рд╣реИред рдпреЗ рд╕рднреА рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдИ рдмрд╛рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдФрд░ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдХреБрдЫ рджреЗрд╡реЛрдВ рдХреЗ рдкрд╛рд╕ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдЖрджрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рди рд╕рдордп рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдорд╛рдирдХ рдЦрд╛рд▓реА рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЛрдиреЛ рд░реЗрдкреЛ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рд╕рднреА рдЕрдкрдиреА рдорд╢реАрдиреЛрдВ рдкрд░ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рдкреИрдХреЗрдЬ рд░реЗрдкреЛ рдХреЛ рдЙрд╕ рд╕реНрдерд╛рдиреАрдп рдореЛрдиреЛ рд░реЗрдкреЛ рдореЗрдВ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВред рд╣рдордореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рдкрд╛рд╕ рд╕рд┐рд░реНрдл рдПрдХ рдкреИрдХреЗрдЬ рдХреНрд▓реЛрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдХреЗ рдкрд╛рд╕ 5 рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрдкрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдФрд░ рд╕реНрдерд╛рдиреАрдп, рдХреНрд░реЙрд╕ рд░реЗрдкреЛ, рдХреНрд░реЙрд╕ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЛ рдПрдХ рдкреВрд░реНрдг рд╣рд╡рд╛ рдмрдирд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕реНрдерд╛рдиреАрдп рдпрд╛рд░реНрди рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдЦрд╛рд▓реА рдореЛрдиреЛ рд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ рд╣рдо рдЕрдкрдбреЗрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рд╣реИ /packages
gitignored.
рдореЛрдиреЛ рд░реЗрдкреЛ рд░реВрдЯ рдкрд░ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рди рдлрд╣рд░рд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреИрдХреЗрдЬ рд╕реНрддрд░ рдкрд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдПрдХ рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рднреА рддреИрдирд╛рддреА рдореЗрдВ рдЖрдпрд╛ рд╣реВрдВ рдФрд░ рдбреЙрдХрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рджреВрд╕рд░реЛрдВ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рднреА рд╣рд▓ рдХрд░реЗрдЧрд╛!
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛрдЧреАред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рддреИрдирд╛рдд рдХреБрдЫ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╣реИред рдПрдХ Now.sh рдХреЗ рд╕рд╛рде рддреИрдирд╛рдд рдПрдХ Next.js рдРрдк рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ Firebase рдкрд░ рддреИрдирд╛рдд рдХреНрд▓рд╛рдЙрдб-рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред
рдЗрди рджреЛрдиреЛрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП yarn.lock
рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ.json рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЧрдИ рд╣реИрдВ рдФрд░ рдХреЛрдИ рднреА рд╕рдВрд╕реНрдХрд░рдг рд▓реЙрдХ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рднреА рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред
рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдЬреНрдпрд╛рджрд╛рддрд░ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ @LeeCeneler рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИред
рдореВрд▓ рд░реВрдк рд╕реЗ, рд╣рдордиреЗ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ (рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдХрд╛ рдЕрдкрдирд╛ рд░реЗрдкреЛ рд╣реЛрддрд╛ рд╣реИ)ред рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЬрд▓реНрджреА рд╕реЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рд╣рдо рдЙрддреНрдкрд╛рджрди рдкрд░ рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ package.json рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ library: "*"
рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рд╣рдорд╛рд░рд╛ рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐, рдпрд╛рд░реНрди рд▓реЙрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд┐рдирд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рднрд┐рдиреНрди рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреА рд╣реЛрдЧреА рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдЖрдо рд╣реЛрдЧреА рдЬреЛ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдбреЙрдХрд░ рдХреА рдкрд░рдд рдХреИрд╢рд┐рдВрдЧ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдкрд╣рд▓реЗ рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди рдФрд░ рдпрд╛рд░реНрди.рд▓реЙрдХ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдХрд░ рдбреЙрдХрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдпрджрд┐ рдбреЙрдХрд░ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдкрд┐рдЫрд▓реА рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рд╡рд╣ рд▓реЙрдХрдлрд╝рд╛рдЗрд▓ рд╕рдВрдкреВрд░реНрдг рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреИрд╢ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░ рджреЗрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд░реВрдк рд╕реЗ рдзреАрдореА рд╕реАрдЖрдИ/рд╕реАрдбреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдкрд░рд┐рдгрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рд░ рдкреИрдХреЗрдЬ рдХреИрд╢ рдХреЗ рдмрд┐рдирд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рд░реНрди рдЬреИрд╕реЗ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рднреА рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реЙрдХрдлрд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕реЗ (рдереЛрдбрд╝рд╛ рдкреБрд░рд╛рдирд╛) рдореБрджреНрджрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рднреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рд╣рд╛рдпрдХ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ 10 рдпрд╛ рддреЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╣реЛрд╕реНрдЯ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдХреЗрдВрджреНрд░реАрдп рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд░реЗрдкреЛ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдЖрдк рд╕рднреА рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП yarn install
рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ yarn start
рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рднреА рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдЧреАред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд▓рд┐рдкрд┐ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рднреА рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд▓рдЧ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╛рд░реНрди рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддреЗ рд╣реБрдП рдЗрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдореЗрдВ рд▓реЙрдХ
@nahtnam рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╛рд░реНрди 1.x рдореЛрдиреЛрд░реЗрдкреЛ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рдпрд╣ рдПрдХ рдЫрдд рдХреЗ рдиреАрдЪреЗ рд╕реНрд╡рддрдВрддреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд┐рд▓рдХреНрд╖рдг рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рдХреБрдЫ рдШрдЯрдХ рд╕рд╛рдордиреЗ рдЖрдП рд╣реИрдВ (рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдпреЗ рдШрдЯрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдмреИрдмреЗрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдмрдбрд╝реА рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ preset-env
рдЙрдк-рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВред рд╕рд╛рде рд╣реА, рд╡реЗ рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рд╕рдЬрд╛рддреАрдп рд╣реИрдВ рдХрд┐ рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдПрдХреАрдХреГрдд рд╣реИрдВ: рдпрджрд┐ рдХреБрдЫ рдкреИрдХреЗрдЬ core-js
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рд╣рд░ рдПрдХ рдореЗрдВ рд╕рдорд╛рди core-js
рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдПрдХ рд╣реА рд░реВрдЯ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд▓реЙрдХ рдХрд░реЗрдВ, рди рд╣реА рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕рднреА рдШрдЯрдХ рд╕реНрд╡рддрдГ рдЬрдбрд╝ node_modules
рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХрд╛ рдПрдХ рдкреИрдХреЗрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЫреБрдЖ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдмрдирд╛рдП/рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рд╢рд╛рдпрдж рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ), рддреЛ рдЙрдирдХреЗ рдкрд╛рд╕ рд░реВрдЯ рдХреЗ рдмрд┐рдирд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓реЙрдХ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЙрдХ (рдбреЙрдХрд░ рдореБрджреНрджрд╛ рдпрд╣рд╛рдВ рднреА рдЬрд╛рддрд╛ рд╣реИ)ред рдПрдХрдорд╛рддреНрд░ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдХреМрди рд╕рд╛ рдЯреВрд▓ рдорджрдж рдХрд░реЗрдЧрд╛ред Lerna рдПрдХ рдЙрддреНрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдпрд╛рд░реНрди рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИред
рдПрдХрдорд╛рддреНрд░ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдХреМрди рд╕рд╛ рдЯреВрд▓ рдорджрдж рдХрд░реЗрдЧрд╛ред Lerna рдПрдХ рдЙрддреНрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдпрд╛рд░реНрди рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИред
@ the-spyke рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВред yarn workspaces
рднреА рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрд╕реА рддрд░рд╣ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреИрд╕реЗ npm link
рдХрд░рддрд╛ рд╣реИ, рдпрд╣реА рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ npm link
рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
@ the-spyke рдзрдиреНрдпрд╡рд╛рдж! рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЗрд╕реЗ рдлрд╝реНрд▓рд┐рдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд▓рд░реНрди рдмрдирд╛рдо рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕)ред рдореИрдВрдиреЗ рд▓рд░реНрди рдореЗрдВ рджреЗрдЦрд╛ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ
рдореИрдВ рдЬрд┐рд╕ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЕрд▓рдЧ utilities
рдкреИрдХреЗрдЬ рд╣реЛрдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рднрд▓реЗ рд╣реА рдпрд╣ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛ), рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ рдкреИрдХреЗрдЬ (рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рд╢рд╛рдЦрд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдирд╕реБрдирд╛ рдерд╛), рдФрд░ рдЬрдм рднреА рдореИрдВ рдЕрдкрдиреЗ utilities
рд╕реЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред package.json
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЖрдИрдбреАрдИ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП); рд╕рдм рдХреБрдЫ рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред @ the-spyke рдПрдХ рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ рдмрдирд╛рддрд╛ рд╣реИ, рд╢рд╛рдпрдж independent projects under one roof
рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рд╣реИ, рдФрд░ рдлрд┐рд░ рднреА рдореИрдВ рдпрд╣рд╛рдВ рдЬреЛ рдХреБрдЫ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдХрд╛рдлреА рд╣реИ: рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ monorepo-base
рднрдВрдбрд╛рд░ рд╣реИ, рдЬреЛ packages
рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ , рдЬрдмрдХрд┐ packages
рддрд╣рдд рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реЛрд▓реНрдбрд░ рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рддрдВрддреНрд░ рдЧрд┐рдЯ рд░реЗрдкреЛ рд╣реИред
рдмреЗрд╢рдХ рдпрд╣ рдореБрдЭреЗ рдЗрд╕ рд╕реВрддреНрд░ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд▓рд╛рддрд╛ рд╣реИ; рдЪреВрдВрдХрд┐ рдореИрдВ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдПрдХ рд░реЗрдкреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рдХрд░рддрд╛, рд░реВрдЯ-рд▓реЗрд╡рд▓ yarn.lock
рдЕрд░реНрдерд╣реАрди рд╣реИред рдореИрдВ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --no-lockfile
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ class-validator
рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЖрдИ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рднреА рд╡рд┐рднрд╛рдЧреЛрдВ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд▓реЙрдХ рдХрд░ рджреВрдВрдЧрд╛ (рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╡рд╣ рд╕реНрддрд░ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ) рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдкреВрд░реА рдЪрд╛рд▓ рдлрд┐рд░ рд╕реЗ рдкрдврд╝реВрдВрдЧрд╛, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ рдЬреЛ рдореИрдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдКрдВрдЧрд╛ред
рдкреБрдирд╢реНрдЪ.
yarn why
рдПрдХ рдХреЗ рд▓рд┐рдП рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧ рдРрдк рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдПрдХ рдЕрд▓рдЧ рд░реЗрдкреЛ рд╣реЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЙрдХрдлрд╛рдЗрд▓ рд╣рд░ рдмрд╛рд░ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрдиреЗ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕реЗ рд╡реАрд╕реАрдПрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛)? рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ @ johannes-scharlach рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреА рдирд┐рд░реНрдорд┐рдд рдЫрд╡рд┐ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХреБрдЫ рдмрд┐рд▓реНрдб рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреМрди рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╢реНрд░рдорд╕рд╛рдзреНрдп рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдорд╛рдг рдЪрд░рдгред
(рдереЛрдбрд╝рд╛ рд╣рдЯрдХрд░ рд╡рд┐рд╖рдп) @ рдЧреНрд░реЗрд╕реНрдЯреНрд░рд╛рдЗрдбрд░ рдЖрдк package.json рдореЗрдВ "рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди" рдлрд╝реАрд▓реНрдб рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдирд┐рд░реНрднрд░рддрд╛ рдкрд░ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рд▓реЙрд╢ рд╕рдЯреАрдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдВ, рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдХрд┐рддрдирд╛ рдЧрд╣рд░рд╛ рдШреЛрдВрд╕рд▓рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдмрд╣реБрдд рд╕реВрдХреНрд╖реНрдо рдмрдЧ рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред
рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдкрд╣реБрдВрдЪреЗ - рдореМрдЬреВрджрд╛ рдбреЙрдХрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдкрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕рд╛рдеред
ln project/yarn.lock packages/package1/yarn.lock
- рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рд░реВрдЯ yarn.lock
рд╕реЗ рдПрдХ рд╣рд╛рд░реНрдб рд╕рд┐рдорд▓рд┐рдВрдХ рдмрдирд╛рдПрдВредCOPY yarn.lock .
рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП packages/package1/Dockerfile
yarn install
рдбреЙрдХрд░ рдХреЗ рдЕрдВрджрд░рд▓рд╛рдн :
рдиреБрдХрд╕рд╛рди :
--frozen-lockfile
рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ред рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдкреИрдХреЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреЗ рд░реВрдк рдореЗрдВ yarn.lock
, рдЗрд╕рд▓рд┐рдП рдзрд╛рдЧрд╛ рдПрдХ рдкреИрдХреЗрдЬ рдЖрдк рдХреЗ рд▓рд┐рдП "рдЬреЛрдбрд╝рд╛" рд╣реИ рджреЗрдЦрддрд╛ рд╣реИ package.json
рдХрд┐ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ yarn.lock
рдпрд╣ рдПрдХ рдорд╛рдореВрд▓реА рдиреБрдХрд╕рд╛рди рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк yarn --frozen-lockfile
рдХреЛ рдЕрдкрдиреЗ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рдпрд╛рд░реНрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рддреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЧрд┐рдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рд░реНрдб-рд▓рд┐рдВрдХ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рд╕реЙрдлреНрдЯ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд░рдгрдиреАрддрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ yarn.lock
рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдкреНрд░реАрдХрдорд┐рдЯ рдЧрд┐рдЯреВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ... рдпрд╣ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА рдЖрдкрдХреА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рд╕реЗ рддреИрдирд╛рддреА рдХрд░рддреЗ рд╕рдордп рдореБрджреНрджреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
@ рдбреИрди-рдХреБрдХ рдЖрдкрдХреА рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА!
@ рдбреИрди-рдХреБрдХ, рдпрд╣ рдбреЙрдХрд░ рдХреА рдкрд░рдд рдХреИрд╢рд┐рдВрдЧ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдирдИ рдирд┐рд░реНрднрд░рддрд╛ рд╕рднреА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓ рдкрд░рдд рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░ рджреЗрдЧреАред
@migueller рдпрджрд┐ рдЗрдВрд╕реНрдЯреЙрд▓ рдкрд░рдд рдирд╣реАрдВ рдмрджрд▓рдиреА рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдкрдХреЛ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХрд▓ рд╡рд┐рд╢рд╛рд▓ рд╕реВрдЪреА рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдорддрд▓ рдХрд░рдирд╛ рдФрд░ рдлрд╣рд░рд╛рдирд╛ рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рд╕рдВрдкреВрд░реНрдг рдЙрджреНрджреЗрд╢реНрдп рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдбреЙрдХрд░ рдХреИрд╢ рдХреЛ "рдмреНрд░реЗрдХ" рдХрд░рддрд╛ рд╣реИ, рдХреИрд╢ рдЕрдорд╛рдиреНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ package.json
рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЕрдВрддрд┐рдо рдХреЛрдб yarn.lock
рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЖрдкрдХреЛ yarn.lock
рдореЗрдВ рд╣рд░ рдмрджрд▓рд╛рд╡ рдкрд░ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдбреЙрдХрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ where every package is built without the cache
рдЬреИрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдмрд┐рд▓реНрдб yarn install
рд╕рд╛рде рдкрд░рдд рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред
@ рдорд┐рдЧреБрдПрд▓реЛрд▓рд░
рд╕рд╣реАред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рд╣рдо рдЕрдХреНрд╕рд░ рдирдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕реНрдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдПрдХ рдореБрджреНрджрд╛ рд╣реЛрдЧрд╛ред
рдФрд░ рдлрд┐рд░ рднреА, рдбреЙрдХрд░ рдореЗрдВ рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рдХреАрдордд (рд╣рдорд╛рд░реЗ рд▓рд┐рдП) рд╣реИ
@ рдж-рд╕реНрдкрд╛рдЗрдХ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддрд┐ рдкреИрдХреЗрдЬ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓реЙрдХрдлрд╛рдЗрд▓ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЗрд╕ рддрд░рд╣, рдХреИрд╢реНрдб рдкрд░рдд рдХреЗрд╡рд▓ рддрднреА рдЕрдорд╛рдиреНрдп рд╣реЛрддреА рд╣реИ рдЬрдм рдкреИрдХреЗрдЬ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддреА рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ npm рдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рднреА рдЙрдЪрд┐рдд рд╣реЛ, рдЬреЛ v7.0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рд╢реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЙрдкрд░реЛрдХреНрдд рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдЬреНрдпрд╛рджрд╛рддрд░ рдХрдо рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рди рдореБрджреНрджреЛрдВ рдХрд╛ рдореИрдВ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ рд╡реЗ рдХреБрдЫ рд╣рдж рддрдХ lockfile
рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдореЗрд░реА рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рдереЗред
"рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓реЙрдХ рдХрд░рдирд╛" рдХреЛ рдкрд┐рдирд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ; рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЯреВрдЯрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХреЗрдЧрд╛ рдпрджрд┐ рдЙрдк- рдирд┐рд░реНрднрд░рддрд╛ рдЕрджреНрдпрддрди (рд▓реЗрдЦ рдХреЗ рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдпрд╣рд╛рдВ ), рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдирд╣реАрдВ рдорд╛рдирд╛ рд╣реИред рдРрд╕рд╛ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдХрдлрд╛рдЗрд▓ рдХрд╛ рдареАрдХ рдпрд╣реА рдорддрд▓рдм рд╣реИред
рдореИрдВрдиреЗ рдЕрддреАрдд рдореЗрдВ рдХрдИ рдореМрдХреЛрдВ рдкрд░ рдЕрдкрдбреЗрдЯ рдХреЛ рддреЛрдбрд╝рдиреЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд┐рдпрд╛ рд╣реИ; рдореИрдВ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ lockfile
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдорд╛рдореВрд▓реА рдЕрдкрдбреЗрдЯ рдХреЗ рдХрд╛рд░рдг рдЕрджреГрд╢реНрдп рдмрдЧ рдХреЗ рдмрдЬрд╛рдп рдорд░реНрдЬ рд╕рдВрдШрд░реНрд╖ рдФрд░ рд╕рдВрдЧрдардирд╛рддреНрдордХ рд╕рд┐рд░рджрд░реНрдж рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдЧрддрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
@migueller рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓реЙрдХ-рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЕрд░реНрде рд╣реИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдпрд╛рд░реНрди рдореЛрдиреЛрд░рдкреЛрд╕ред рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд▓рд┐рдП рд▓реЙрдХ-рдлрд╛рдЗрд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рдбреАрдкреАрдПрд╕ рдПрдХрд░реВрдкрддрд╛ рдХреЛ рддреЛрдбрд╝рддреА рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╛рд░реНрди рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рджреВрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ: рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкреВрд░реЗ рдЙрдкрдЯреНрд░реА) рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд░реВрдЯ рдореЗрдВ рдПрдХ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рдбрд┐рдкреЛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ, рдЙрдард╛рдиреЗ рдФрд░ рдХрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред .
@ the-spyke рд▓реЗрдХрд┐рди рдореВрд▓ рдореБрджреНрджрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИред рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдПрдХ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ред
рдореИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдЕрд╕рдлрд▓ рд░рд╣рд╛ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреИрд╕реЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рдбреАрдк рдПрдХрд░реВрдкрддрд╛ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ? рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рддред рд▓реЗрдХрд┐рди рд╕рд╛рдЭрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреВрд░рд╛ рдЙрджреНрджреЗрд╢реНрдп рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╕реЗ рд╣рд▓реНрдХреА рд╕реВрдХреНрд╖реНрдо рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рд╕рд╛рдЭрд╛, рдлрд╣рд░рд╛рдП рдЧрдП рдбрд┐рдкреНрд╕ рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдбреЙрдХрд░ рдореЗрдВ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
@ рдбреИрди-рдХреБрдХ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ , 2018 рдореЗрдВ рднреА рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдореБрджреНрджрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдореЗрд░реА рд░рд╛рдп рдЕрд▓рдЧ рд╣реИред
рдЖрдк рдбреЙрдХрд░ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдПрдХ рдирд┐рдпрдорд┐рдд npm
рдкреИрдХреЗрдЬ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реВрдВ? рдореЗрд░реЗ рдкрд╛рд╕ рдкрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ production
рдирд┐рд░реНрднрд░рддрд╛ рд╕рдмрдЯреНрд░реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореЗрд░реЗ dependencies
рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдВрдб-рдпреВрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдпрд╣ рдХрд┐ рдореЛрдиреЛрд░рдкреЛрд╕ рдФрд░ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред
рдЙрд╕реА рд╕рдордп, рдпрджрд┐ рдЖрдк рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ (рдПрдордПрд╕) рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ 2 рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ:
рд╕реНрд╡рддрдВрддреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВред рдХреБрдЫ рдПрдордПрд╕ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╣реИрдВ, рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЫреБрдЖ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред UserService
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ [email protected]
рдФрд░ MessagesService
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ [email protected]
ред рдпрд╣ рдЗрддрдиреА рдЖрд╕рд╛рди рджреБрдирд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рд╕рд┐рд░реНрдл рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд╕реЗ рдлреЛрд▓реНрдбрд░ рдХреЛ рд░реВрдЯ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ node_modules
ред рддреЛ, рд░реВрдЯ рд▓реЙрдХ-рдлрд╛рдЗрд▓ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЗрдВ (рд░реВрдЯ) рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВред рдЗрд╕реЗ рдпрд╛рд░реНрди рдбреЙрдХреНрд╕ рдореЗрдВ Multirepo
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдЬреЛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╣реИ "рдореИрдВ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ"ред рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИред
рдПрдХреАрдХреГрдд рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЬреИрд╕реЗ рдЬреЗрд╕реНрдЯ/рдмреЗрдмреЗрд▓/рдЖрджрд┐ред рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рдмрдирд╛рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рдПрдордПрд╕ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВред CI рдЪрд░рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди рдЬреИрд╕реЗ рд▓рд╛рдЗрдирд┐рдВрдЧ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕рднреА рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдорд╢реАрди рдкрд░ рдХрд░рддреЗ рд╣реИрдВ: рдпрд╛рд░реНрди рджреНрд╡рд╛рд░рд╛ рд░реВрдЯ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдбрд┐рдкреНрд╕ рдФрд░ рдЪрдкрдЯрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕рдорд╡рд░реНрддреА рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ yarn install
рдЪрд░рдг рдХреЛ рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИ: рдЗрд╕рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЙрд╕ utils
рдкреИрдХреЗрдЬ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП? рдХреНрдпрд╛ рдЗрд╕реЗ рдЯрд╛рд░рдмреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдВрдХ рдпрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд▓реЙрдХ-рдлрд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди yarn install --prod <workspace>
рдЬреИрд╕реА рдХрдорд╛рдВрдб рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рдбрд┐рдкреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рд╛рде рд╣реА рдЕрдиреНрдп рд╕рдВрджрд░реНрднрд┐рдд рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдЧрд╛ред рдЬреИрд╕реЗ рдЕрдЧрд░ рдореЗрд░рд╛ data
WS utils
WS рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди logging
WS рдкрд░ рдирд╣реАрдВ, рддреЛ logging
рд╕реНрд╡рдпрдВ рдФрд░ рдЙрд╕рдХреЗ рд╡рд┐рд╡рд░рдг node_modules
рдореЗрдВ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП
рдпрджрд┐ рдЖрдк рдмрд┐рд▓реНрдб рдкреИрдХреЗрдЬ рдХреЛ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рдПрдирдкреАрдПрдо, рдПрд░рд┐рдлреИрдХреНрдЯрд░реА, рдЧреБрдЯрд╣рдм) рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд▓реЙрдХ-рдлрд╛рдЗрд▓ рдХреЛ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЙрдкреА рдХрд░рдХреЗ рдФрд░ рдпрд╣рд╛рдВ yarn install --prod
рдХрд░рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдкреБрд░рд╛рдиреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЦрд░реЛрдВрдЪ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рдбрд┐рдкреНрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП (рдмрд╕ рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд╡реИрдз рд▓рдЧ рд░рд╣рд╛ рд╣реИ)ред рдСрдлрд▓рд╛рдЗрди рдорд┐рд░рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдФрд░ рднреА рдмреЗрд╣рддрд░ рдФрд░ рдордЬрдмреВрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдФрд░ рдЕрдВрдд рдореЗрдВ рдЖрдкрдиреЗ рдлреЛрдХрд╕реНрдб рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЛ рдорд▓реНрдЯреАрд░реЗрдкреЛрд╕ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред
рддреЛ, рдореИрдВ рдпрд╣ рдХреНрдпрд╛ рдХрд╣ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╢рд╛рдпрдж рд╕рдорд╕реНрдпрд╛ рд╡реИрд╕реА рдирд╣реАрдВ рджрд┐рдЦрддреА рдЬреИрд╕реА рдпрд╣ рд╣реИред
@the-рд╕реНрдкрд╛рдИрдХреЗ
рдЬреЛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рд╡реЛ рдореБрдЭреЗ рд╕рдордЭ рдЖ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдПрдХ рд▓реЙрдХрдлрд╛рдЗрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдиреЗ рдХреБрдЫ рд╕рд╣реА рдмрд╛рддреЗрдВ рдХрд╣реАрдВред
рдЗрд╕рдХрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡реИрд╕реЗ рднреА "рдПрдХ рдЖрдХрд╛рд░ рд╕рднреА рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ" рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ
@ the-spyke, рдЖрдк рдЕрдЪреНрдЫреЗ рдЕрдВрдХ рд▓рд╛рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрджрд┐ рдмрдбрд╝реЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд╛рде рдЧрдардмрдВрдзрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ:
.
тФФтФАтФА packages
тФЬтФАтФА app1
тФЬтФАтФА app2
тФЬтФАтФА lib1
тФЬтФАтФА lib2
тФФтФАтФА lib3
lib3
рдПрдХ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдФрд░ рдпрд╣ app1
рдФрд░ app2
рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред lib1
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ app1
рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ lib2
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ app2
рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, lib1
рдФрд░ app1
рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓реЙрдХрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдФрд░ lib2
рдФрд░ app2
ред рдЕрдм, рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ lib3
рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрджрд┐ _both_ app1
рдФрд░ app2
рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ? рд╢рд╛рдпрдж рдХреЛрдИ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ ( app1
рдФрд░ app2
) рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ lib3
рдЬреЛрдбрд╝ рд╕рдХреЗрдВ рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдРрдк рдореЗрдВ yarn install
рд╕рдХреЗрдВ? рдХреНрдпрд╛ рдпрд╛рд░реНрди рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ? рдпрджрд┐ рдХреЛрдИ app1
рдФрд░ app2
рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рд░реЛрдз рд╣реЛрдЧрд╛ (рд╢рд╛рдпрдж app1
рдПрдХ рд░рд┐рдПрдХреНрдЯ рдРрдк рд╣реИ рдФрд░ app2
рдПрдХ рдЧреНрд░рд╛рдлрд╝рдХреНрдпреВрдПрд▓ рдПрдкреАрдЖрдИ рд╣реИ) ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛ рдкреНрд░рд╢реНрди рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ "рдЗрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рдлрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд╛рдн рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ?" рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ app1
рдФрд░ app2
рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдлрд╣рд░рд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╛рд░реНрди рдкреАрдПрдирдкреА рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдпрд╣ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рдХреЙрдкреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕рд╛рдЭрд╛ рдХреИрд╢ рд╣реИ)ред
рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреЗрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реВрдВрдЧрд╛ред рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рд╣рдо рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХрд╛ рдЧрд▓рдд рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ...
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рдпрд╛, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЕрдм рдЕрдкрдирд╛ рд░реБрдЦ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкреВрд░реНрдг рдореЛрдиреЛрд░реЗрдкреЛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╕рдордп рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓реЙрдХрдлрд╛рдЗрд▓ рд╣реЛрдиреЗ рдкрд░ рдкрд╣рд▓реА рдмрд╛рдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╣ рд╕рд╣реА рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдмреЗрд╣рддрд░ рдкреНрд░рд╢реНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ "рдХреНрдпрд╛ рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?"ред рдЙрддреНрддрд░, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, "рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ"ред
рдпрджрд┐ рдЖрдк рдмреИрдмреЗрд▓ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЛрдиреЛрд░реЗрдкреЛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдЯреАрдо рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рд▓реЙрдХрд╕реНрдЯреЗрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рд╣рд╛рдБ, рдпрд╣реА рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдХрдИ рдЯреАрдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЧрдарди рд╣реИрдВ рдФрд░ рдЖрдк рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрднрд╡рддрдГ рдПрдХ рдПрдХрд▓ рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд░реВрдЯ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рд╢рд╛рдпрдж рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рднреАрддрд░ рдпрд╛рд░реНрди рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдЬрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХреМрди рд╕реЗ рдРрдк рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдХрд┐рддрдиреА рдЯреАрдореЗрдВ рд╣реИрдВ, рдЖрджрд┐ред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдпреЛрдЧреНрдп рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╣реИ), рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ yarn install
рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЪрд╛рд╣реЗ рд╡рд╣ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд░реВрдЯ рд╣реЛ рдпрд╛ рдирд╣реАрдВ)ред рдпрд╣ рдХреЛрдб рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреИрдбреЗрдВрд╕ рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рддреИрдирд╛рддреА рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЙрдХрдлрд╛рдЗрд▓ рдФрд░ рдбреЙрдХрд░ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХреИрд╢рд┐рдВрдЧ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХреБрдЫ рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐:
--hoist
рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредyarn workspace ...
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рдПрдирдкреАрдПрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВ) рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреВрд░реЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд░реВрдЯ рд╢рд╛рдпрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдЖрдк рдмреИрдмреЗрд▓, рдЬреЗрд╕реНрдЯ, рд░рд┐рдПрдХреНрдЯ, рдЖрджрд┐ рдЬреИрд╕реЗ рди рд╣реЛрдВ, рддрдм рддрдХ рдЖрдкрдХреЛ рд╡рд╣ рджреЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПредрдореЛрдиреЛрд░реЗрдкреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реА рдХрдИ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдФрд░ рдХреЗрд╡рд▓ рд╕реАрдЖрдИ рдореЗрдВ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓реА рдЧрдИ рдЪреАрдЬреЛрдВ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдЖрдкрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд░реНрдирд╛ рдРрд╕рд╛ рдХрд░рддреА рд╣реИ, рддрд╛рдХрд┐ рдЯреЛрдкреЛрд▓реЙрдЬрд┐рдХрд▓ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдпрд╛рд░реНрди v2 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдХреЛ рднреА рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдкреАрдПрдирдкреАрдПрдо рднреА рдпрд╣реА рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдореЛрдиреЛрд░реЗрдкреЛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдИ рдЙрд╕рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдЯреВрд▓ (рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдирд╣реАрдВ) рдЬреИрд╕реЗ Bazel , Pants , Buck , рдЖрджрд┐ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддрд╛ рд╣реИред
@migueller рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╕реЗ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рд╕рдЦреНрддреА рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдкреИрдХреЗрдЬ рдпрд╛ рдЕрдиреНрдп рд╡рд┐рджреЗрд╢реА рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк рд╕реНрд▓рд┐рдорд░ рдбреЗрд╡рд▓рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдирд┐рдпрдорд┐рдд рдпрд╛рд░реНрди рдореЛрдиреЛрд░реЗрдкреЛ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рд╕рд┐рдВрдЧрд▓ рд░реВрдЯ рдФрд░ рд╕рднреА рдкреИрдХреЗрдЬ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рддреЗрдЬрд╝ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕рдордп рд╣реЛрдЧрд╛, рдбрд┐рд╕реНрдХ рдХрд╛ рдХрдо рдЙрдкрдпреЛрдЧ рд╣реЛрдЧрд╛, рдФрд░ app1
рд╕реНрдерд╛рдиреАрдп рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП lib1
рдФрд░ lib3
ред рдХреЗрд╡рд▓ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╕реАрдЖрдИ рдХреИрд╢ рдЕрдорд╛рдиреНрдп рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ lib1
рд▓рд┐рдП рдПрдХ devDep рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рд╛рдЭрд╛ yarn.lock
рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдЖрдк рдЙрди рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдХреНрд╕рд░ рдЗрд╕ рдЯреНрд░реЗрдбрдСрдлрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИрдВред
lib1
lodash@^4.5.0" and
lib2 may depend on
lodash@^4.10.0" рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдк lodash
рдПрдХрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╛рд░реНрди рджреЛрдиреЛрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд╡реАрдирддрдо рд╕рдВрдЧрдд рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ `
рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рднреА рд╣реИрдВ рдЬрд╣рд╛рдБ рд╕реНрд╡рддрдВрддреНрд░ рдЯреАрдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреА рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ proj1
[email protected]
рд╕рд╛рде proj2
рд╕рд╛рде [email protected]
рдкрд░ рд░рд╣рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреИрдбреЗрдВрд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЖрдк lodash@~4.5.0
рдЬреИрд╕реЗ рдЕрдзрд┐рдХ рд╕рдЦреНрдд рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддреЛ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╕ рдПрдХ рдЧрд┐рдЯ рд░реЗрдкреЛ рдХреЗ рдЕрдВрджрд░ рд╣реБрдЖред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рдЭрд╛ рд▓реЙрдХ-рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдпрд╛рд░реНрди рдореЛрдиреЛрд░реЗрдкреЛ рдФрд░ рдЯреНрд░реЗрдб-рдСрдл рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдмрд╕ рдЙрдирдХреЗ рд╕рд╛рде рд╡реИрд╕рд╛ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВ рдЬреИрд╕реЗ рд╡реЗ рд╣реИрдВ: рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рдЬреАрд╡рди рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рдХрд░реЗрдВред рдФрд░ рдЗрд╕реЗ рдорд▓реНрдЯреАрд░реЗрдкреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреВрдирд┐рдХреНрд╕ рдкрд░ рдЖрдкрдХреА рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ /
рдЕрдВрддрд░реНрдЧрдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкреАрд╕реА рдкрд░ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЬреЗрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП :-)
рдЙрддреНрдкрд╛рджрди рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреНрдпреВрдирддрдо рд╕рдВрднрд╡ рдбреЙрдХрд░ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдпрд╛рд░реНрди рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдпрд╛рд░реНрди рдХреЛ yarn.lock
рдирд╛рдордХ рдПрдХ рд╡рд┐рдХрд╛рд╕ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ рднреА рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@ the-spyke, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ 3 рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реЗрдкреЛ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде 20 рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рд╣реИрдВ рдФрд░ рдлреНрд░рдВрдЯ-рдПрдВрдб рдФрд░ рдмреИрдХ-рдПрдВрдб рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрднрд╛рд░ рддреИрдирд╛рдд рд╣реИрдВред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЗрд╕реЗ рдЕрдм рджреЗрдЦрддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╣реИ (рдпрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдорд▓реНрдЯреАрд░реЗрдкреЛ рдХрд╣рддреЗ рд╣реИрдВ) рдЬрд╣рд╛рдВ рдпрд╣ рд╢рд╛рдпрдж рд╕реНрд╡рддрдВрддреНрд░ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрдИ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдЬрдбрд╝реЗрдВ рд░рдЦрдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ред рд╣рдо рдЕрд▓рдЧрд╛рд╡ рдХреА рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рддреИрдирд╛рддреА рдЗрдХрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП, рдЬреЛ рдЗрд╕ рдХрд╛рдо рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд░реВрдЯ рдХреЗ рдмрд╛рд╣рд░ рдкрде рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдЕрдиреНрдпрдерд╛ рдХрд╣рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
{
"workspaces": [
"../lib1",
"../lib3"
]
}
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ @migueller рдХреЗ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдпрд╛рд░реНрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдХрдИ рд╕реЗрдЯреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдЬреИрд╕реЗ:
{
"workspaces": {
"frontend-app": ["frontend", "common"],
"backend-app": ["backend", "common"]
}
}
рдпрд╛рд░реНрди рджреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЙрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп yarn.lock
рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реЛрдЧрд╛):
.
тФФтФАтФА monorepo/
тФЬтФАтФА yarn.frontend-app.lock
тФЬтФАтФА yarn.backend-app.lock
тФФтФАтФА packages/
тФЬтФАтФА frontend
тФЬтФАтФА backend
тФФтФАтФА common
рдбреЙрдХрд░ рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╕рдордп, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рдВрджрд░реНрдн (рдЬреИрд╕реЗ, рдЯрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ) рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╢рд╛рдорд┐рд▓ рд╣реИ:
.
тФФтФАтФА <Docker build context>/
тФЬтФАтФА yarn.frontend-app.lock
тФФтФАтФА packages/
тФЬтФАтФА frontend
тФФтФАтФА common
рдЬреЛ рдореИрдВрдиреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рд▓рд┐рдВрдХ рдореЗрдВ node_modules
) рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдпрджрд┐ рдлреНрд░рдВрдЯрдПрдВрдб рдФрд░ рдмреИрдХрдПрдВрдб рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд▓реЙрдХ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рджреНрд╡рд┐-рдЖрдпрд╛рдореА рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╢рд╛рдпрдж рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред
(рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдпрд╣рд╛рдВ рднреА рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред)
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
@gfortaine , рдпрджрд┐ рдЖрдк рдЪрд░реНрдЪрд╛ рдкрдврд╝рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдорд╣рд╕реВрд╕ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЕрд▓рдЧ рд▓реЙрдХрдлрд╛рдЗрд▓ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХрд╛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд▓реЙрдХрдлрд╛рдЗрд▓ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рдХреЗ рдмрджрд▓рдиреЗ рдкрд░ рд╣реА рдмрджрд▓рддрд╛ рд╣реИред рдПрдХ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд▓реЙрдХрдлрд╝рд╛рдЗрд▓ _every_ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдмрджрд▓ рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдПрдХ рдПрдХрд▓ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реНрдХреЛрдк рдХреА рдЧрдИ рд▓реЙрдХрдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ рддрднреА рдмрджрд▓реЗрдЧреА рдЬрдм _that_ рдкреИрдХреЗрдЬ рдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдмрджрд▓ рдЬрд╛рдПрдВрдЧреАред
рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рднреВрдорд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред @yarnpkg/lockfile
рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд▓реЙрдХрдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ yarn workspaces info
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ package.json
рдХреЗ рд╕рд╛рде, рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдПрдХ рд▓реЙрдХрдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░, рдХреЛрдИ рдЗрд╕реЗ рд░реЗрдкреЛ рдореЗрдВ postinstall
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓реЙрдХрдлрд╛рдЗрд▓реНрд╕ рдХреЛ рд╢реАрд░реНрд╖-рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗред
рдореИрдВ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рдПрдХ рд╕реНрдЯреИрдм рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА pnpm рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╛рдпрд╛ рд╣реИ: @ pnpm/рдореЗрдХ-рд╕рдорд░реНрдкрд┐рдд-рд▓реЙрдХрдлрд╛рдЗрд▓
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ
рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ (рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╕рдВрд╕реНрдХрд░рдг, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рд▓реЙрдХрдлрд╛рдЗрд▓ рд╣реИ) рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдиреЗрд╕реНрдЯреЗрдб рдореЛрдиреЛрд░реЗрдкреЛ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рд╕рдмрдЯреНрд░реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреВрд╕рд░реЗ рд░реЗрдкреЛ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрднреА рдореИрдВ рд▓рд░реНрди/рдПрдирдкреАрдПрдо рдФрд░ рдХреБрдЫ рдХрд╕реНрдЯрдо рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВред рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╛рд░реНрди (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ v2, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рд╕рдорд░реНрдерди рдирд┐рд╣рд┐рдд рд╣реИ?) рдЙрди рд╕рднреА рдХреЛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд┐рдирд┐рдВрдЧ рдХрд╛ рд╕рд╣реА рд╕рдмрд╕реЗрдЯ рдЫреЛрдбрд╝ рджреЗрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреЛрд╕реНрдЯрдЗрдВрд╕реНрдЯреЙрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реАрдзреЗ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреА рд╣реИред рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рд╣рдо рдкреВрд░реЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдкрд░рд┐рдгрд╛рдореА рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЙрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╣рд▓реНрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░рд╛ рдореЛрдиреЛ рд░реЗрдкреЛ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рдмреАрдЪ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рдХреБрдЫ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреБрдЫ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ)ред рдЗрд╕рд▓рд┐рдП рдЬрдм рд╣рдо рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЫрд╡рд┐ рдореЗрдВ рдЙрд╕ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреА рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЙрдЪрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП - рд╣рдорд╛рд░реА рдирд┐рдЬреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ, рдФрд░ рдбреЙрдХ рдЗрдореЗрдЬ рдХреЗ рдЖрд░реНрдХ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИред
рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд╣рдорд╛рд░реА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╣рд▓реНрдХрд╛ рд░рдЦрдирд╛ рд╣реИ, рдФрд░ рдкреВрд░реЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрд░рдирд╛ рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рд╣рдо рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреА рдЫрд╡рд┐ рдХреЗ рдЕрдВрджрд░ "рдпрд╛рд░реНрди" рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╡рд╣рд╛рдВ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдпрд╛рд░реНрди рдХрдорд╛рдВрдб рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреА рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдорд╛рдВрдЧ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред ..
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА ..