Yarn: рдХреНрдпрд╛ рдореБрдЭреЗ рдпрд╛рд░реНрди.рд▓реЙрдХ рдЗрди .gitignore рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рдирд╡ре░ 2016  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: yarnpkg/yarn

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

рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЧрд┐рдЯ рдореЗрдВ рдпрд╛рд░реНрди.рд▓реЙрдХ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рди рдХрд░реЗрдВред

рджреЗрдЦреЗрдВ https://yarnpkg.com/en/docs/migrating-from-npm

рдЬрдм рдЖрдк yarn рдпрд╛ yarn add <package> рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╛рд░реНрди рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рднреАрддрд░ рдПрдХ yarn.lock рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдпрд╛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдмрд╕ рдЗрд╕реЗ рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдЬрд╛рдВрдЪреЗрдВ ред рдЬрдм рдЕрдиреНрдп рд▓реЛрдЧ npm рдмрдЬрд╛рдп рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ yarn.lock рдлрд╝рд╛рдЗрд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧреА рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рд╡реИрд╕реА рд╣реА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВ рдЬреИрд╕реА рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИрдВред

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

рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЧрд┐рдЯ рдореЗрдВ рдпрд╛рд░реНрди.рд▓реЙрдХ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рди рдХрд░реЗрдВред

рджреЗрдЦреЗрдВ https://yarnpkg.com/en/docs/migrating-from-npm

рдЬрдм рдЖрдк yarn рдпрд╛ yarn add <package> рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╛рд░реНрди рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рднреАрддрд░ рдПрдХ yarn.lock рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдпрд╛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдмрд╕ рдЗрд╕реЗ рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдЬрд╛рдВрдЪреЗрдВ ред рдЬрдм рдЕрдиреНрдп рд▓реЛрдЧ npm рдмрдЬрд╛рдп рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ yarn.lock рдлрд╝рд╛рдЗрд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧреА рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рд╡реИрд╕реА рд╣реА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВ рдЬреИрд╕реА рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИрдВред

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

рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ?

@goenning
рд╢рд╛рдпрдж рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдбрд╛рд▓реЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рд┐рдиреЛрдкрд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╕реНрдЯрдо npm рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╣реИред рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдЬреА рдореЙрдбреНрдпреВрд▓ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдзрдХреЗрд▓рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╛рд░реНрди.рд▓реЙрдХ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЧрд▓рдд рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдореЗрд░рд╛ CI рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдореЗрд░реЗ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИрдВред
рдпрд╣ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╡реЗ рдореЗрд░реЗ рднрдВрдбрд╛рд░ рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рд╕рд┐рд╡рд╛рдп рдпрд╛рд░реНрди.рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ gitignore рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ?

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

@Pfeifenjoy рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдЬреА рдкреИрдХреЗрдЬ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ?
рдЧрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рддреИрдирд╛рддреА рдХреБрдВрдЬреА (рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЗрдкреЛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ

@beenotung рдореИрдВ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ git рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИ, рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдПрдХ рдкреНрд░рдмрдВрдзрдХ рдореЗрдВ рд╣рд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

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

@Pfeifenjoy рдХреНрдпрд╛ рд╕рдВрднрд╡рддрдГ рдЖрдк рдЬреЛ рдпрд╛рд░реНрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрдШрд░реНрд╖ рд╣реИ? рдпрджрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреНрдп рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдореЗрдВ рдЖрдкрдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ- рдпрд╣ рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдирд┐рдЬреА рд░реЗрдкреЛ рдФрд░ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдЦреАрдВрдЪ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рддрд░реНрдХ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдкреНрд░рддрд┐-рдХрд╣ рдХреИрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕реА рддрд░рд╣ рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░реЗрдкреЛ рд╕реЗ рдХрд┐рд╕реА рднреА рдХреБрдВрдЬреА рдпрд╛ рд▓рд╡рдг рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВрдЧреЗ (рдпрджрд┐ рдЖрдк рдПрдХ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реАрдбрдореА рдкрд░ рдЪреЗрддрд╛рд╡рдиреА, рдореИрдВ рдПрдХ рдлреАрдЪрд░/рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░реВрдВрдЧрд╛)ред

рд╕рдВрднрд╡рддрдГ рдпрд╛рд░реНрди рдХреЛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддреЗ рд╕рдордп рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдкреНрд░рдорд╛рдгреАрдХреГрдд рд╕реНрд░реЛрдд рддрдХ рдкрд╣реБрдВрдЪ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ, рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рд╣реЛрдЧрд╛ред

@thisolivier рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ

рдмрд╕ рдПрдХ рдЬреНрдЮрд╛рдкрдиред
https://github.com/yarnpkg/yarn/issues/3330 рдХреЗ рдХрд╛рд░рдг, рдпрджрд┐ рдЖрдк рдЪреАрди рдпрд╛ рдЕрдиреНрдп рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рд░рдЬрд┐рд╕реНрдЯреНрд░реА (eq taobao) рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ yarn.lock рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред .gitignore рдХрд░реЗрдВ рдФрд░ package-lock = false рд╕реЗ .npmrc рд▓рд┐рдЦреЗрдВред

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

рд╕рд╛рде рд╣реА рдпрд╣ рдЖрдкрдХреЗ рдХрдорд┐рдЯреНрд╕ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрджрд╕реВрд░рдд рдмрдирд╛рддрд╛ рд╣реИред

рдореИрдВ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡реЛрдЯ рдХреА рдЧрдИ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ:

тАв рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ NPM, рдкреНрд░рддрд┐рдмрджреНрдз package-lock.json рд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдФрд░ gitignore yarn.lock
тАв рдЕрдЧрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз yarn.lock рд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдФрд░ gitignore package-lock.json

рдпрд╣реА рд╣реИ, рдЖрдкрдХреЛ _not_ рд╣рдореЗрд╢рд╛ рд░реЗрдкреЛ рдХреЛ рдпрд╛рд░реНрди.рд▓реЙрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП , рдФрд░ рдУрдкреА рдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд╛рдВ рдЖрдк рдЗрд╕реЗ .gitignore рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

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

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

рджреВрд╕рд░реЗ, рдХрдИ рдХреЛрдбрдмреЗрд╕ _don't_ рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ "рдЬрдм рд╡реЗ рдпрд╛рд░реНрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ" рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдореЗрд░реА рд▓рдЧрднрдЧ рд╕рднреА рдиреЛрдб рд╕реЗрд╡рд╛рдПрдВ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╡реЗрдм рд╕рд░реНрд╡рд░ npm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╛рд░реНрди рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдпрд╛рд░реНрди рдкрд╕рдВрдж рд╣реИ, рдмрд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдЬреИрд╕рд╛ рдХрд┐ @Pfeifenjoy рдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ:

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╕реНрдЯрдо npm рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╣реИред рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдЬреА рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ

рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдзрдХреЗрд▓рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╛рд░реНрди.рд▓реЙрдХ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЧрд▓рдд рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдореЗрд░рд╛ CI рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

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

рдПрдХ рдФрд░ рдмрд╛рдд - рдпрджрд┐ рдЖрдк рд╕рднреА рдХреЛ рд╣рдореЗрд╢рд╛ рд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП yarn.lock рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрднреА рднреА рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд░реЗрдкреЛ рдореЗрдВ рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА npm рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ 2 рд▓реЙрдХ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрддрд┐рд░реЗрдХ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдирд░рдХ рдХрд╛ рджреНрд╡рд╛рд░ рдЦреЛрд▓ рджреЗрдЧрд╛ред рдФрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░ рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рди рдЧреНрд░рд╛рдл рдХреЛ рдЧрдбрд╝рдмрдбрд╝рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ ~ 25k рд▓рд╛рдЗрди yarn.lock рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВрдЧреЗ: рдЦреБрд╢реА:

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

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

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

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

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

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

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