Yarn: рдХрд╛рд░реНрдпрд╕реНрдерд╛рди: рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рдлрд╝рд╛рдЗрд▓ рд▓реЙрдХ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдлрд╝рд░ре░ 2018  ┬╖  54рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: yarnpkg/yarn

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рд╡рд┐рд╢реЗрд╖рддрд╛

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдореЛрдиреЛрд░реЗрдкреЛ рдХреА рдЬрдбрд╝ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ 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

cat-feature triaged

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

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

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

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

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА ..

рд╕рднреА 54 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╛рд░реНрди рдмреНрд▓реЙрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд:

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

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

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

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

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

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

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

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА ..

@netanelgilad рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИред рдХреГрдкрдпрд╛ #4521 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рддрд╛рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдореЗрдХрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВред

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

рдЫрд╡рд┐ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ package.json рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдпрд╛рд░реНрди рдХреЗрд╡рд▓ рдЙрди package.json рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдк рдпрд╛рд░реНрди.рд▓реЙрдХ рдореЗрдВ рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

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

4206 рд╕рдВрдмрдВрдзрд┐рдд/рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдареАрдХ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рд╣реИрдВред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рд╕рднреА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд░рд╣реЗрдВ рддрд╛рдХрд┐ рд▓реЛрдЧ рдЪрд╛рд╣реЗрдВ рддреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрди рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХреЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдЧрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИ, рдФрд░ рдПрдХ 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 рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:

  1. рдпрджрд┐ рдпрд╣ рд░реВрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рд░реВрдЯ рдХреЗ yarn.lock , рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп package.json рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
  2. рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЦреЛрдЬ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди .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

рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рджреЛ рдкреИрдХреЗрдЬреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рдФрд░ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВред

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

  1. рдбреЙрдХрдЯрд░ рдореЗрдВ рдХреЗрд╡рд▓ рдпрд╛рд░реНрди.рд▓реЙрдХ, рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди рдФрд░ рдпреВрдЖрдИ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝реЗрдВ
  2. yarn install --frozen-lockfile рдЪрд▓рд╛рдПрдВ
  3. рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд▓рд╛рдПрдБ
  4. рдПрдХ рдирдпрд╛ рдЪрд░рдг рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдпрд╛рд░реНрди.рд▓реЙрдХ, рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд░рдирдЯрд╛рдЗрдо рдкреИрдХреЗрдЬ/рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝реЗрдВ
  5. рдирд┐рд░реНрдорд┐рдд рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдХреЗ рд▓рд┐рдП COPY --from=<stage>
  6. yarn install --frozen-lockfile рдЪрд▓рд╛рдПрдБ рдФрд░ RUN рдХрдорд╛рдВрдб рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред

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

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

@connectdotz рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдУрд░ рд╕реЗ, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдо #4521 рдореБрджреНрджреЗ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдореБрдЦреНрдп рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рд╕рдВрдХреБрд▓ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдПрдХ рдпрд╛рд░реНрди.рд▓реЙрдХ рдХреА рддрд░рд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ (рднрд▓реЗ рд╣реА рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░ рджреЗрд╡ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ЁЯШЙ)ред рд▓реЗрдХрд┐рди #4521 рдореЗрдВ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╣рдо рдпрд╣рд╛рдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╛рд░реНрди рдХреЛ рдЕрдиреНрдпреЛрдиреНрдпрд╛рд╢реНрд░рд┐рддрддрд╛рдУрдВ рдФрд░ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЛ "рд╡рд┐рдХреНрд░реЗрддрд╛" рдХреИрд╕реЗ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдкрд╣рд▓реЗ рд▓рд░реНрди рдФрд░ рдлрд┐рд░ рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрд╛рд░реНрди рдиреЗ рдЖрдо рддреМрд░ рдкрд░ рдЕрдзрд┐рдХ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реА рдЬрд╝рд░реВрд░рдд рдХреЗ рдХрд░реАрдм рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ yarn workspaces run <script> рд╢реБрд░реВрдЖрдд рдФрд░ wsrun рдЬреИрд╕реА рдЕрдиреНрдп рдЕрдЪреНрдЫреА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рдеред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХрд▓ yarn.lock рдПрдХ рджрд░реНрдж рдмрд┐рдВрджреБ рд╣реИ:

  • рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдореМрдЬреВрджрд╛ рд▓реЙрдХрдлрд╛рдЗрд▓реНрд╕ рдХреЛ рдПрдХ рдПрдХрд▓ рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, https://github.com/yarnpkg/yarn/issues/6563 рджреЗрдЦреЗрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣рд╛рдВ рд╣рдЬрд╛рд░реЛрдВ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ рдФрд░ рдореМрдЬреВрджрд╛ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╕реНрдерд╛рдиреЛрдВ рдиреЗ рдХрдИ рд╕реВрдХреНрд╖реНрдо рд╕рдВрд╕реНрдХрд░рдг рдореБрджреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рд╣реИред
  • рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ ("рдбреА-рд╣реЛрд╕реНрдЯрд┐рдВрдЧ" / "рд╡реЗрдВрдбрд░рд┐рдВрдЧ") рдбреЙрдХрд░рд╛рдЗрдЬрд╝реНрдб рдмрд┐рд▓реНрдб рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдКрдкрд░ рджреЗрдЦреЗрдВ (https://github.com/yarnpkg/yarn/issues/5428#issuecomment-403722271) рдпрд╛ https: //github.com/yarnpkg/yarn/issues/4521ред

рдЖрдк рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪреЗрдВрдЧреЗ,

  • рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк 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 рдХрд░рддрд╛ рд╣реИ: npm pack package@version )
  • gzip рдХреЛ node_modules/package рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВ
  • рдиреЛрдб_рдореЙрдбреНрдпреВрд▓/рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реАрдбреА
  • рд░рди рдпрд╛рд░реНрди рдЗрдВрд╕реНрдЯреЙрд▓ - рд╡рд╣рд╛рдВ рд╕реЗ рдЙрддреНрдкрд╛рджрди (рдпрд╣ рдмрдВрдбрд▓ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдЧрд╛)

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

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

рдпрд╣рд╛рдБ @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 рдРрдк рдЗрдВрдЬрди рдмрд┐рдирд╛ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ (рдПрдирдкреАрдПрдо/рдпрд╛рд░реНрди) рдХреЗ рдПрдХ рдиреЛрдб рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрдирдХреА рдУрд░ рд╕реЗ рдЙрддреНрдХреГрд╖реНрдЯ рджреЗрд╡реЛрдкреНрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рджрд░реНрдж рд╣реИред рдЕрдм рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  • env vars рдХреЗ рд╕рд╛рде рд╕рднреА рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВ рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рдХрд┐рд╕ рд╕реЗрд╡рд╛ рд╕реЗ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ yarn start (рдПрдХрдорд╛рддреНрд░ рд╕рдорд░реНрдерд┐рдд рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ) рдХреЛ env vars рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ
  • рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореБрдЦреНрдп рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕ рд╕реЗрд╡рд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред (рдзрдиреНрдпрд╡рд╛рдж @ johannes-scharlach)

рдЕрдВрддрддрдГ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ 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 рддрд╣рдд рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реЛрд▓реНрдбрд░ рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рддрдВрддреНрд░ рдЧрд┐рдЯ рд░реЗрдкреЛ рд╣реИред
image
рдмреЗрд╢рдХ рдпрд╣ рдореБрдЭреЗ рдЗрд╕ рд╕реВрддреНрд░ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд▓рд╛рддрд╛ рд╣реИ; рдЪреВрдВрдХрд┐ рдореИрдВ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдПрдХ рд░реЗрдкреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рдХрд░рддрд╛, рд░реВрдЯ-рд▓реЗрд╡рд▓ yarn.lock рдЕрд░реНрдерд╣реАрди рд╣реИред рдореИрдВ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --no-lockfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ class-validator рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЖрдИ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рднреА рд╡рд┐рднрд╛рдЧреЛрдВ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд▓реЙрдХ рдХрд░ рджреВрдВрдЧрд╛ (рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╡рд╣ рд╕реНрддрд░ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ) рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдкреВрд░реА рдЪрд╛рд▓ рдлрд┐рд░ рд╕реЗ рдкрдврд╝реВрдВрдЧрд╛, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ рдЬреЛ рдореИрдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдКрдВрдЧрд╛ред

рдкреБрдирд╢реНрдЪ.
yarn why рдПрдХ рдХреЗ рд▓рд┐рдП рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧ рдРрдк рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдПрдХ рдЕрд▓рдЧ рд░реЗрдкреЛ рд╣реЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЙрдХрдлрд╛рдЗрд▓ рд╣рд░ рдмрд╛рд░ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрдиреЗ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕реЗ рд╡реАрд╕реАрдПрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛)? рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

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

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

рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдкрд╣реБрдВрдЪреЗ - рдореМрдЬреВрджрд╛ рдбреЙрдХрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдкрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕рд╛рдеред

  1. ln project/yarn.lock packages/package1/yarn.lock - рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рд░реВрдЯ yarn.lock рд╕реЗ рдПрдХ рд╣рд╛рд░реНрдб рд╕рд┐рдорд▓рд┐рдВрдХ рдмрдирд╛рдПрдВред
  2. рдЬреЛрдбрд╝реЗ COPY yarn.lock . рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП packages/package1/Dockerfile
  3. yarn install рдбреЙрдХрд░ рдХреЗ рдЕрдВрджрд░

рд▓рд╛рдн :

  • рдЕрдкрдиреЗ рд╕рдВрдкреВрд░реНрдг рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдПрдХ рдЫрд╡рд┐ рдкрд░рдд рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
  • рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рд╕реНрддрд░ Dockerfiles рдХреЛ рд░реВрдЯ рдкрд░ рдПрдХрд▓ Dockerfile рдореЗрдВ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
  • рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд▓реЙрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ

рдиреБрдХрд╕рд╛рди :

  • --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 рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ:

  1. рд╕реНрд╡рддрдВрддреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВред рдХреБрдЫ рдПрдордПрд╕ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╣реИрдВ, рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЫреБрдЖ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред UserService рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ [email protected] рдФрд░ MessagesService рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ [email protected] ред рдпрд╣ рдЗрддрдиреА рдЖрд╕рд╛рди рджреБрдирд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рд╕рд┐рд░реНрдл рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд╕реЗ рдлреЛрд▓реНрдбрд░ рдХреЛ рд░реВрдЯ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ node_modules ред рддреЛ, рд░реВрдЯ рд▓реЙрдХ-рдлрд╛рдЗрд▓ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЗрдВ (рд░реВрдЯ) рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВред рдЗрд╕реЗ рдпрд╛рд░реНрди рдбреЙрдХреНрд╕ рдореЗрдВ Multirepo рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдЬреЛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╣реИ "рдореИрдВ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ"ред рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИред

  2. рдПрдХреАрдХреГрдд рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЬреИрд╕реЗ рдЬреЗрд╕реНрдЯ/рдмреЗрдмреЗрд▓/рдЖрджрд┐ред рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рдмрдирд╛рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рдПрдордПрд╕ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВред 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, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рд╕рдорд░реНрдерди рдирд┐рд╣рд┐рдд рд╣реИ?) рдЙрди рд╕рднреА рдХреЛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд┐рдирд┐рдВрдЧ рдХрд╛ рд╕рд╣реА рд╕рдмрд╕реЗрдЯ рдЫреЛрдбрд╝ рджреЗрдВред

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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

baptistelebail picture baptistelebail  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

esphen picture esphen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

danez picture danez  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Ambroos picture Ambroos  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

davidmaxwaterman picture davidmaxwaterman  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ