рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдмрд┐рд▓реНрдбрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm ci --keep
рдЬреИрд╕реЗ рдзреНрд╡рдЬ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рд╣рдорд╛рд░реА рддреИрдирд╛рддреА рдмрд╣реБрдд рддреЗрдЬ рд╣реЛ рдЬрд╛рдПрдЧреАред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЬреАрдердм рдФрд░ рд╕рдореБрджрд╛рдп рдкрд░ рд╕реБрдЭрд╛рдпрд╛ 7 рдЕрдХреНрдЯреВрдмрд░ рдХреЛ рдерд╛ рдХрд┐ рдХреНрд▓реА рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рдереАред рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдкрд░ рдЕрдкрдбреЗрдЯ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? :-)
рдпрд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕реАрдЖрдИ/рдХреНрд▓реАрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд╣реА рд╣реИред рдЖрдк рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рд╣реИ npm shrinkwrap
ред
рд╣рдордиреЗ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ _рдлрд╝реЛрд▓реНрдбрд░_ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрдбреЗрдЯ рдЬреЛрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ _contents_ рдХреЛ рдирд╣реАрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рдкреЛрд╕реНрдЯ рдкрд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред npm ci
рдХрдорд╛рдВрдб рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рд╕рд╛рдл рд╕реНрд▓реЗрдЯ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╣рдЯрд╛рдирд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдкреБрд░рд╛рдирд╛ node_modules рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ npm i
ред
рдЖрдкрдХреЗ рдЙрддреНрддрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореЗрд░реЗ рджреЗрд░ рд╕реЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдореИрдВрдиреЗ npm shrinkwrap
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ? рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рддреЗ рд╕рдордп рдпрд╣ рдореЗрд░реЗ package-lock.json
рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ npm-shrinkwrap.json
рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ CI рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреЗрд╡рд▓ npm install
рдПрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЕрджреНрдпрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдпрд╛ рдореБрдЭреЗ npm ci
рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╣рдЯрд╛ рджреЗрдЧрд╛ :-( рдЬреЛ рдореИрдВ рдЦреЛрдЬ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдПрдХ рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рдПрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ package-lock.json
рдореЗрдВ рдареАрдХ рд╡рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛
@claudiahdz; рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБ рдХрд┐ рдЪрд▓ рд░рд╣рд╛ рд╣реИ npm install
рд╕реАрдЖрдИ рджреМрд░рд╛рди рдЕрджреНрдпрддрди рдХрд░реЗрдЧрд╛ package-lock.json
рдФрд░ рдЕрд░реНрде рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдирд┐рд░реНрдорд╛рдг рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдмрд╛рдж рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╡рд┐рднрд┐рдиреНрди рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдпрд╣ рдЧрд▓рдд рд╣реИ?
Ps рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ npm ci
рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рдерд╛
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/npm/npm/issues/20104#issuecomment -403321557
рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдпрджрд┐ рдЖрдк рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ npm ci
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬреЛ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ) рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ node_modules
рдкрд░ рдПрдХ рдмрд╛рдЗрдВрдб рдорд╛рдЙрдВрдЯ рд╣реИ
рдпрд╣ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ:
webpack_1 | npm ERR! path /var/www/project/docker-config/webpack-dev-devmode/node_modules
webpack_1 | npm ERR! code EBUSY
webpack_1 | npm ERR! errno -16
webpack_1 | npm ERR! syscall rmdir
webpack_1 | npm ERR! EBUSY: resource busy or locked, rmdir '/var/www/project/docker-config/webpack-dev-devmode/node_modules'
рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдирд┐рд░рд╕реНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
--no-delete
рдзреНрд╡рдЬ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдпрджрд┐ npm ci
node_modules
рдХреЗ _contents_ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реНрд╡рдпрдВ рдирд╣реАрдВред
рд╕реАрдЖрдИ = рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯрд╛рд▓
рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдЖрдк рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп npm i
рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?
--no-delete рдлреНрд▓реИрдЧ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдпрджрд┐ npm ci рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╣реА рдирд╣реАрдВред
rm -rf node_modules/* && npm i
рд╕реАрдЖрдИ = рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯрд╛рд▓
рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдЖрдк рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп npm i рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?
...рдХреНрдпреЛрдВрдХрд┐: https://docs.npmjs.com/cli/ci.html
рдпрд╣ рдХрдорд╛рдВрдб рдПрдирдкреАрдПрдо-рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдЬреИрд╕реЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо, рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ - рдпрд╛ рдРрд╕реА рдХреЛрдИ рднреА рд╕реНрдерд┐рддрд┐ рдЬрд╣рд╛рдВ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдПрдХ рд╕рд╛рдл рд╕реНрдерд╛рдкрдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЙрдиреНрдореБрдЦ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рдХрд░ рдирд┐рдпрдорд┐рдд npm рдЗрдВрд╕реНрдЯреЙрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЦреНрдд рд╣реИ, рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ npm рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдХрд╛рд░рдг рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред
рддреЗрдЬреА рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рд╕рд╛рдл рд╕реНрд▓реЗрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реАрдЖрдИ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЖрджрд░реНрд╢ рдмрдирд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред
рдЖрд░рдПрдо-рдЖрд░рдПрдл рдиреЛрдб_рдореЙрдбреНрдпреВрд▓/* && npm i
рдЕрдм рдореИрдВ рдпрд╣реА рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди npm ci
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджреЗрдЦреЗрдВ
рдореБрдЭреЗ рдПрдХ рдЖрд░рдПрдлрд╕реА рдлрд╛рдЗрд▓ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдХреЙрдиреНрдлрд┐рдЧ рдлреНрд▓реИрдЧ рдорд╛рдВрдЧрддрд╛ рд╣реИ рдЬреЛ npm ci
рдХреЛ node_modules
рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рди рдХрд┐ рдбреАрдЖрдИрдЖрд░ рдХреЛред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдореИрдВрдиреЗ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдХреЛ node_modules
dir рдХреЛ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рд╡рд╣ рдЪреБрдирд┐рдВрджрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдЪрд▓реА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ node_modules
рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдПрдХ рдЖрд░рдПрдлрд╕реА рдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдзреНрд╡рдЬ рдорд╛рдВрдЧрддрд╛ рд╣реИ рдЬреЛ
npm ci
рдХреЛnode_modules
рдХреЗ _contents_ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рди рдХрд┐ рд╕реНрд╡рдпрдВ рдбреАрдЖрдИрдЖрд░ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдореИрдВрдиреЗ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдХреЛnode_modules
dir рдХреЛ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рд╡рд╣ рдЪреБрдирд┐рдВрджрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдЪрд▓реА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░node_modules
рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рднреА рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдПрдирдкреАрдПрдо рдХреЛ рдбреАрдЖрдИрдЖрд░ (рдУрдПрд╕рдПрдХреНрд╕ рд╕реНрдкреЙрдЯрд▓рд╛рдЗрдЯ рдФрд░ рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП) рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдЕрдиреНрдп рд▓реЛрдЧ рднреА рдереЗ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рд╕реАрдЖрдИ = рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯрд╛рд▓
рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдЖрдк рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп
npm i
рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?
npm i
рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдпрд╣ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ package-lock.json рдХреЛ npm i
рджреМрд░рд╛рди рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, npm i
package-lock.json рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЭрдВрдбрд╛ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред
рд╡рд╣реА, рдПрдХ рдЭрдВрдбрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ,
npm i
package-lock.json рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЭрдВрдбрд╛ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред
рдлрд┐рд░ npm i
рд▓рд┐рдП рдЭрдВрдбрд╛ рдХреНрдпреЛрдВ рди рдЬреЛрдбрд╝реЗрдВ? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реА рд╕рдордЭ рдореЗрдВ ci = clean install
рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред
рдорд╛рддрд╛-рдкрд┐рддрд╛ node_modules/
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрдиреЗ рдХреЗ рд╕рд╛рде "рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯрд╛рд▓" рдХрд╛ рдХреМрди рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЕрд╕рдВрдЧрдд рд╣реИ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреА рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрд░рддреЗ рд╕рдордп)?
рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рд╕реАрдЖрдИ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рддрдд рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ; рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯрд╛рд▓ рдЕрдХреНрд╕рд░ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдХрдорд╛рдВрдб рдПрдирдкреАрдПрдо-рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдЬреИрд╕реЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо, рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ - рдпрд╛ рдРрд╕реА рдХреЛрдИ рднреА рд╕реНрдерд┐рддрд┐ рдЬрд╣рд╛рдВ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдПрдХ рд╕рд╛рдл рд╕реНрдерд╛рдкрдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЙрдиреНрдореБрдЦ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рдХрд░ рдирд┐рдпрдорд┐рдд npm рдЗрдВрд╕реНрдЯреЙрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдирд┐рдпрдорд┐рдд рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЦреНрдд рд╣реИ, рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ npm рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдХрд╛рд░рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдпрд╛ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
npm ci
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдХрдИ рдмрд╛рд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдбреЙрдХрд░-рдЖрдзрд╛рд░рд┐рдд рд╕реЗрдЯрдЕрдк рд╣реИред
рдбреЙрдХрд░-рдЖрдзрд╛рд░рд┐рдд рд╕реЗрдЯрдЕрдк рдореЗрдВ node_module/
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░реЗрд╢рд╛рдиреА рднрд░рд╛ рд╣реИ, рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдПред
рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреА рдорд╛рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЙрд╕рдХреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдмрдирд╛ рд╕рдХреЗред
рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ,
npm i
package-lock.json рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЭрдВрдбрд╛ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛редрдлрд┐рд░
npm i
рд▓рд┐рдП рдЭрдВрдбрд╛ рдХреНрдпреЛрдВ рди рдЬреЛрдбрд╝реЗрдВ? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реА рд╕рдордЭ рдореЗрдВci = clean install
рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред
рдореБрдЭреЗ рдпрд╣ рд╕рд╡рд╛рд▓ рдкреВрдЫрдирд╛ рд╣реИ рдХрд┐ npm install
рдФрд░ npm ci
рдмреАрдЪ рдЙрдирдХреЗ рдХреЛрдИ рдЕрдиреНрдп рдЕрдВрддрд░ рд╣реИрдВ рдпрджрд┐ рдирд╣реАрдВ рддреЛ npm install
рдореЗрдВ рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВ рд╢рд╛рдпрдж ci
рдЬрд░реВрд░рдд рд╣реИ npm install --no-update-package-lock --clean-node-modules
рдЬреИрд╕реЗ рдХреБрдЫ рдЙрдкрдирд╛рдо рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП
рдбреЙрдХрд░-рдЖрдзрд╛рд░рд┐рдд рд╕реЗрдЯрдЕрдк рдореЗрдВ
node_module/
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░реЗрд╢рд╛рдиреА рднрд░рд╛ рд╣реИ, рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдПред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЫрд╡рд┐ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди npm i
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╢рд╛рдпрдж
ci
рдХреЛnpm install --no-update-package-lock --clean-node-modules
рдЬреИрд╕реЗ рдХреБрдЫ рдЙрдкрдирд╛рдо рдмрдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп npm i
рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЭрдВрдбреЗред
рдореИрдВ рдЗрд╕рдХреЗ рдкреНрд░рддрд┐ рдЙрджрд╛рд╕реАрди рд╣реВрдВ, рдФрд░ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ n00b рдЬреЗрдПрд╕ рднреВрдорд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдареЛрд╕ рддрд░реНрдХ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ci
, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ package-lock.json
рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ node_modules
рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
npm ci
рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд▓реЙрдХрдлрд╛рдЗрд▓ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ rm -rf node_modules
рд╕рд▓рд╛рд╣ рджреА рдЧрдИ npm i
рдЪрд▓рд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЧрдИ rm -rf node_modules
ред рдФрд░ afaik рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ рдпрд╣ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рди рдмрджрд▓реЗ рдмрд▓реНрдХрд┐ рдЗрд╕рд╕реЗ рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрд░реЗред
рддреЛ npm ci
рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖред рдФрд░ рдпрд╣ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рднреА рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдерд╛рдкрд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдкреЗрдбрд╝ рдФрд░ рдХреБрдЫ рдФрд░ рдЪреАрдЬреЗрдВред
рджреЗрдЦреЗрдВ https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable
рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред
рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ npm i
рдирдП рдЭрдВрдбреЗ рдЬреЛрдбрд╝рдиреЗ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо npm ci
рдХрд╛ рдЕрдиреБрдХрд░рдг рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ npm ci
рдЭрдВрдбреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдФрд░ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЕрднреА рднреА рдХреЗрд╡рд▓ рдХрд╡рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ imhoред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣рд╛рдВ рдЬреЛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ yarn install --frozen-lockfile
рдпрд╛ yarn --frozen-lockfile
ред
рдЕрдиреНрдпрдерд╛ рдЭрдВрдбреЗ npm ci
, npm i
рдФрд░ рдЗрддрдиреЗ рдкрд░ рдлреИрд▓реЗ рд╣реБрдП рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдереЛрдбрд╝рд╛ рдФрд░ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг, рдХреЛрдб, ...) рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рддреЛ рдпрд╣реА рд▓рдЧрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ npm i
t рдкрд░ рд░рдЦреЗрдВ, рдЗрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд▓рдЪреАрд▓реЗ рддрд░реАрдХреЗ рд╣реИрдВред
рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ npm iwith рдореЗрдВ рдирдП рдЭрдВрдбреЗ рдЬреЛрдбрд╝рдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо npm ci рдХрд╛ рдЕрдиреБрдХрд░рдг рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ npm ci рдХреЗ рдЭрдВрдбреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдФрд░ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬреЛ рдЕрднреА рднреА рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ imho рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣рд╛рдВ рдЬреЛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдпрд╛рд░реНрди рдЗрдВрд╕реНрдЯрд╛рд▓ --рдлреНрд░реЛрдЬрди-рд▓реЙрдХрдлрд╛рдЗрд▓ рдпрд╛ рдпрд╛рд░реНрди --рдлреНрд░реЛрдЬрди-рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИред
рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ npm i
рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдХреНрдпрд╛ рдореБрдЭреЗ рдореВрд▓ рдкреЛрд╕реНрдЯ рдЕрдкрдбреЗрдЯ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?
npm ci
рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд▓реЙрдХрдлрд╛рдЗрд▓ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛrm -rf node_modules
рд╕рд▓рд╛рд╣ рджреА рдЧрдИnpm i
рдЪрд▓рд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЧрдИrm -rf node_modules
ред рдФрд░ afaik рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ рдпрд╣ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рди рдмрджрд▓реЗ рдмрд▓реНрдХрд┐ рдЗрд╕рд╕реЗ рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрд░реЗредрддреЛ
npm ci
рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖред рдФрд░ рдпрд╣ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рднреА рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдерд╛рдкрд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдкреЗрдбрд╝ рдФрд░ рдХреБрдЫ рдФрд░ рдЪреАрдЬреЗрдВредрджреЗрдЦреЗрдВ https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable
рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред
рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ
npm i
рдирдП рдЭрдВрдбреЗ рдЬреЛрдбрд╝рдиреЗ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдоnpm ci
рдХрд╛ рдЕрдиреБрдХрд░рдг рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛnpm ci
рдЭрдВрдбреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдФрд░ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЕрднреА рднреА рдХреЗрд╡рд▓ рдХрд╡рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ imhoред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣рд╛рдВ рдЬреЛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣yarn install --frozen-lockfile
рдпрд╛yarn --frozen-lockfile
ред
рдХреИрд╕реЗ rm -rf node_modules/*
"рд╕рдлрд╛рдИ" рдХреЗ рд░реВрдк рдореЗрдВ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ? рдпрд╣рд╛рдБ рдкреВрдЫреА рдЧрдИ рд╡рд┐рд╢реЗрд╖рддрд╛ npm ci рдореЗрдВ рдореМрдЬреВрдж рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ npm ci рдореЗрдВ рдПрдХ рдзреНрд╡рдЬ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ npm ci рдХреЗ рд╕рдВрдкреВрд░реНрдг рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ npm i рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп rm -rf node_modules
рдмрдЬрд╛рдп rm -rf node_modules/*
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
BTW рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рд░рд╛рдп рдФрд░ рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЖрд╡рд╛рдЬ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рдореЗрд╢рд╛ CI (рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ npm ci рдХреЗ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ!
рдХреГрдкрдпрд╛ рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП RFC рдЦреЛрд▓реЗрдВред
рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ "рдПрдирдкреАрдПрдо рд╕реАрдЖрдИ рдореЗрдВ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдбреАрдЖрдИрдЖрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЦрд╛рд▓реА" рдХрд░ рджреВрдВрдЧрд╛ред
рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рдХрднреА рднреА node_modules
рдлрд╝реЛрд▓реНрдбрд░ рдпрд╛ рдХреЗрд╡рд▓ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВ рдерд╛ред рдпрд╣ рд╣рдореЗрд╢рд╛ node_modules
рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛, рд▓реЗрдХрд┐рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЕрджреНрдпрддрд┐рдд рд╣реИ рдФрд░ package-lock.json
рд╕рд╛рде рд╕рдордиреНрд╡рдпрд┐рдд рд╣реИред рддреЛ рдПрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЕрджреНрдпрддрди рдЬреЛ package-lock.json
рдкрд╛рд▓рди тАЛтАЛрдХрд░рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рджреЛ рдореБрджреНрджреЗ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдореБрджреНрджрд╛ рдпрд╛ рдЖрд░рдПрдлрд╕реА рд╢реБрд░реВ рдХрд░ рд╕рдХреЗ? рдпрд╛ рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рди рдХреБрдЫ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдВ?
@Zenuka рдкреВрд░реЗ рдХрд╛рд░рдг
рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рддреЗрдЬрд╝ рд╣реЛрдЧрд╛ рдХрд┐ nodes_modules
рдлрд╝реЛрд▓реНрдбрд░ рдЕрджреНрдпрддрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреИрд╕реЗ npm i
рдХрд░рддрд╛ рд╣реИ) рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╕рдорд░реНрдкрд┐рдд рд╡реАрдПрдо рдмрд┐рд▓реНрдб рдПрдЬреЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдПрдХ рдмрд┐рд▓реНрдб рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ nodes_modules
рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдЗрд╕рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд░рдЦрддреЗ рд╣реИрдВ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рддреЗрдЬрд╝ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдЕрдкрдирд╛ рдмрд┐рд▓реНрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╣рдорд╛рд░реЗ package.json
рдпрд╛ package-lock.json
рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рддреЗрдЬрд╝ рд╣реЛрдЧрд╛ рдХрд┐
nodes_modules
рдлрд╝реЛрд▓реНрдбрд░ рдЕрджреНрдпрддрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдЦреИрд░, рдпрд╣ (рдкреИрдХреЗрдЬ рдЯреНрд░реА рдХреА рдЧрдгрдирд╛) рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдЪреЗрдХ npm ci
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдзреАрдорд╛ рдХрд░ рджреЗрдЧрд╛ред
рдПрдХ рдмрд┐рд▓реНрдб рдЪрд▓рд╛рдирд╛ рдФрд░
nodes_modules
рдлрд╝реЛрд▓реНрдбрд░ рд░рдЦрдирд╛ рдФрд░ рдЙрд╕рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рддреЗрдЬрд╝ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╢рд╛рдпрдж рдирд╣реАрдВ, рдЗрд╕реАрд▓рд┐рдП npm ci
рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ npm i
рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ (рдкреИрдХреЗрдЬ рдЯреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ) рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
@Zenuka npm install
рдкрд╣рд▓реЗ рд╕реЗ npm ci
рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЙрджреНрджреЗрд╢реНрдп рд╣реИ: рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рд╣рдЯрд╛рдХрд░ рдЗрд╕реЗ рддреЗрдЬреА рд╕реЗ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рдПрдХ рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рди рдХрд░рдиреА рдкрдбрд╝реЗред
рд╢рд╛рдпрдж рдирд╣реАрдВ, рдЗрд╕реАрд▓рд┐рдП npm ci рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ npm i рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ (рдкреИрдХреЗрдЬ рдЯреНрд░реА рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ) рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ (рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИ) рд▓реЗрдХрд┐рди npm install
рдХреЛ рдЕрдк-рдЯреВ-рдбреЗрдЯ node_modules
рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЪрд▓рд╛рдирд╛ 10 рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред npm ci
рдЪрд▓рдиреЗ рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ?
рдореИрдВ npm install
рд╕рд╛рде рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд╝реНрд░реАрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд▓реИрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВред
рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдХрд┐ package-lock.json
рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рднреА рд╕реБрдкрд░ рдлрд╛рд╕реНрдЯ рд╣реИред https://github.com/fuzzykiller/verify-node-modules рджреЗрдЦреЗрдВ
рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдХрд┐ node_modules
рдореЗрдВ рдФрд░ рдХреБрдЫ рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдЧрд╛ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдПрдХ рд╕реЗрдХрдВрдб рд╕реЗ рднреА рдХрдо рд╕рдордп рд▓рдЧреЗрдЧрд╛ред
рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░, npm ci
рдПрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреЗрдбрд╝ рдХреА рдЧрдгрдирд╛ рдкрд╣рд▓реЗ рд╣реА рдХреА рдЬрд╛ рдЪреБрдХреА рд╣реИ рдФрд░ package-lock.json
рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг npm ci
рдореМрдЬреВрдж рд╣реИ рдХреНрдпрд╛ рдореЗрдВ рд╣реИ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ package-lock.json
ред рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдЙрдиреНрдирдпрди рдореЗрдВ рдЪреБрдкрдХреЗ рдХреЗ рдмрд┐рдирд╛, рдЬреИрд╕реЗ npm install
рдХрд░рддрд╛ рд╣реИред
рдмрд╕ рдореЗрд░реЗ 2 рд╕реЗрдВрдЯ, рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдЗрдВрдлреНрд░рд╛ рдХреЛ npm ci
рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рднреА рдПрдХ рдкреБрд░рд╛рдиреЗ рдЯреИрдЧ рдХреА рддреИрдирд╛рддреА рдкрд░ рдмреАрдорд╛рд░ рдерд╛ npm i
рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ ... рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдпрд╣ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╣реИ npm ci
рд╕реНрддрд░ рдкрд░ рдзреНрд╡рдЬ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ (рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ .. рдЗрд╕рдХреА clean install
рдпрд╣ рд╡рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЙрд╕рдиреЗ рдХрд╣рд╛ рдерд╛) рддреЛ npm i
REALLLLLYY рдХреЛ рдЗрд╕ рдзреНрд╡рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕ рдкрд░ рд╢реЛрдз рдХрд░рдирд╛ рдпрд╛рдж рд╣реИ рдФрд░ npm i
рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдзрд╛рдЧрд╛ рднреА рдерд╛ рдЬреЛ 2 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрд░рд╛рдирд╛ рдерд╛ (рдФрд░ рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ) рдЬрд╣рд╛рдВ npm рдЯреАрдо рдиреЗ рд▓реЛрдЧреЛрдВ рдХреЛ npm ci
lol рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛ ... рдпрд╣ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдиреЗ рдЕрддреАрдд рдореЗрдВ npm рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рд╕рд┐рд░реНрдл рд╕реВрдд рдкрд░ рдЪрд▓реЗ рдЧрдП рд╣реИрдВред
рдлрд┐рд░ рд╕реЗ рдмрд╕ рдПрдХ рдФрд░ рджреЗрд╡ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп
рдореИрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рд░рдЦрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╡реЛрдЯ рджрд┐рдпрд╛ :heavy_plus_sign:ред
+1 рдпрд╣рд╛рдБ - рдЬреИрд╕рд╛ рдХрд┐ @phyzical рдФрд░ @fuzzykiller рдиреЗ рдХрд╣рд╛, npm install
рдФрд░ npm ci
рдмреАрдЪ рдХреЛрдИ "рд╕реНрд╡реАрдЯ рд╕реНрдкреЙрдЯ" рдирд╣реАрдВ рд╣реИ рдЬреЛ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА package-lock.json
рд╕рдореНрдорд╛рди рдХрд░реЗрдЧрд╛ рдФрд░ рддреЗрдЬреА рд╕реЗ рдЪрд▓реЗрдЧрд╛ред
рдмрд╕ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рджреМрдбрд╝реЗрдВ - рдкреИрдХреЗрдЬ-рд▓реЙрдХ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдлрд┐рд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЧрд╛рдпрдм рд╣реИ .. рдХреЛрдИ рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ, рдХреЛрдИ рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреМрди рд╕рд╛ рд╣реИ ( install
рдпрд╛ ci
) рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдпрд╣ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм npm install
рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдмрд╕ рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ npm ci
рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХрдорд╛рдВрдб рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ npm ci
рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕реЗ рдпрд╣ рдореБрджреНрджрд╛ рдЙрдард╛ рд░рд╣рд╛ рд╣реИред
рдореВрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЗ рдПрдХ рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ npm install
рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ package-lock.json
рдХреЗ рдмрдЬрд╛рдп package.json
ред рд╣рдо рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm install
рдкрд░ рдПрдХ рдзреНрд╡рдЬ рдЪрд╛рд╣рддреЗ рдереЗред рдЗрд╕рдХреЗ рдмрджрд▓реЗ рд╣рдореЗрдВ рдЬреЛ рдорд┐рд▓рд╛ рд╡рд╣ рдерд╛ npm ci
, рдХреНрдпреЛрдВрдХрд┐:
package.json рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдЙрдиреНрд╣реЗрдВ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ, рддреЛ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдпреАрд▓реНрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЙрдХрдлрд╛рдЗрд▓ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд┐рднрд┐рдиреНрди рдорд╢реАрдиреЛрдВ рдореЗрдВ рдПрдХ рджреЛрд╣рд░рд╛рдиреЗ рдпреЛрдЧреНрдп рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдмрдирд╛рдирд╛ рд╣реИ, рди рдХрд┐ рдЕрдкреНрд░рдЪрд▓рд┐рдд package.json рдХреЗ рд▓рд┐рдПред
рдЗрддрдирд╛ рдареАрдХред npm install
рдЙрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИ, npm ci
рд╣реИред npm ci
рдЫреЛрдбрд╝рдХрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ ( node_modules
рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛) рдЬреЛ рдЗрд╕реЗ рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧреА рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдФрд░ рдЕрдм npm ci
рдкрд░ рдЭрдВрдбрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐:
рд╕реАрдЖрдИ = рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯрд╛рд▓
рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдЖрдк рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп npm i рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?
рдЬреЛ... рдареАрдХ рд╣реИред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЭрдВрдбрд╛ рдХрд╣рд╛рдБ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреАрдЫреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рджрд░реНрд╢рди рдореЗрдВ рдореЗрд░реА рдХреЛрдИ рд╣рд┐рд╕реНрд╕реЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЭрдВрдбрд╛ рдХреГрдкрдпрд╛ рдХрд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реЗрдХ, рдореИрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рдЙрдард╛рдКрдВрдЧрд╛, рднрд▓реЗ рд╣реА рд▓реЛрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ 3 рдХрдорд╛рдВрдб рдЪрд╛рд╣рддреЗ рд╣реЛрдВ, рдореИрдВ рдХрдо рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдХреА рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗ рд▓рд┐рдП package-lock.json
рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХреЗ 3 рд╕рд╛рд▓ рдмрд╛рдж рднреА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдореВрд▓ рд░реВрдк рд╕реЗ рдорд╛рдВрдЧ рд░рд╣реЗ рдереЗред
рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдкрд░ рд╣рдордиреЗ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдорд╛рдореВрд▓реА рдФрд░ рдмрдЧрдлрд┐рдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрдбреЗрдЯ рд╕реЗ рдмрдЧ рджреЗрдЦреЗ рд╣реИрдВред рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рдкреИрдХреЗрдЬ рдЙрдиреНрдирдпрди рдХреЗ рджреМрд░рд╛рди рдЙрди рдмрдЧреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рджреЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред рд╡рд╣рд╛рдБ рд╕рдВрдЧрддрд┐ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХреЛрдИ рднреА рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдпрд╛ рдЬрд╣рд╛рдВ рднреА рдХреЛрдИ рдЗрд╕реЗ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╣рдо рд▓реЙрдХрдлрд╛рдЗрд▓ рд╕реЗ рдкреИрдХреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рд╣рд░ рдмрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП node-gyp
рдмрд┐рд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдардиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдХрдорд╛рдВрдб рдЪрд▓рд╛рдУред
рдЗрд╕ рддрд░рд╣ рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░реЗ:
npm install
- рдЖрдЬ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░npm install --from-lockfile
- рд▓реЙрдХрдлрд╛рдЗрд▓ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ (рдЬреИрд╕реЗ ci
рдХрд░рддрд╛ рд╣реИ)npm install --clean
- npm install
рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд▓реЗрдХрд┐рди node_modules
рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛ рджреЗрдВnpm ci
- npm install --from-lockfile --clean
рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо@jdussouillez рдареАрдХ рдпрд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╣реБрдд рд╕рд╣реА рдХрд╣рд╛! рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЬрдЧрд╣ рдореЗрдВ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред
рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рд╕реАрдЖрдИ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдЧрддрд┐ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ 2 рдорд╣реАрдиреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░рдгреЛрдВ рд╕реЗ 3 рдпрд╛ 4 рдмрд╛рд░ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИред
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ Azure рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдФрд░ рдЕрдиреНрдп рдХреНрд▓рд╛рдЙрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реЛрдЧреАред
https://docs.microsoft.com/en-us/azure/devops/pipelines/release/caching?view=azure-devops#tip
рдХреНрдпреЛрдВрдХрд┐ npm ci рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рд╕реБрд╕рдВрдЧрдд, рджреЛрд╣рд░рд╛рдиреЗ рдпреЛрдЧреНрдп рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдкрдХреЛ npm ci рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдорд╛рдкрди: рдЬреИрд╕рд╛ рдХрд┐ @claudiahdz рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд╣рдордиреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╣рд╛рдВ npm ci
рдЕрдм node_nodules
рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ (рд░реЗрдлрд░реАред https://github.com/npm /libcipm/blob/latest/CHANGELOG.md#407-2019-10-09)ред рдЗрд╕реЗ 21 рдЬреБрд▓рд╛рдИ рдХреЛ рд╡рд╛рдкрд╕ [email protected]
рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╕рдВрджрд░реНрдн https://github.com/npm/cli/blob/v6/CHANGELOG.md#6147-2020-07-21) рдФрд░ рд╣рдордиреЗ рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рд╣реИ npm@7
рдореЗрдВ рд╡рд╣реА рдЕрдиреБрднрд╡ред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ npm ci
рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдмрдЧ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХрд┐рд╕реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ :
рд╕рд╛рдЗрдб рдиреЛрдЯреНрд╕...
@jdussouillez рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ; рд▓реЙрдХрдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕реАрдзреЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ - рдЖрдк рдЖрдЬ рдзреНрд╡рдЬ --package-lock-only
(рдЙрджрд╛. npm install --package-lock-only
) рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред --clean
рдзреНрд╡рдЬ рдХреЛ install
рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдЬреЛрдбрд╝рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА рдХрд┐ рдЖрдк https://github.com/npm/rfcs рдкрд░ RFC рд╕рдмрдорд┐рдЯ
рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ @claudiahdz рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдЯрд┐рдкреНрдкрдгреА рдпрд╣ тАЛтАЛрд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдХрд┐ npm ci
рд╡реНрдпрд╡рд╣рд╛рд░ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдмрдЬрд╛рдп node_modules
рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИред рдЬреЛ рдПрдХ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдореЗрдВ рдмрдврд╝рддреЗ рд╕рдордп рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ - npm ci
рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ред
npm install --package-lock-only
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореВрд▓ рдореБрджреНрджреЗ рдХреЗ рдареАрдХ рд╡рд┐рдкрд░реАрдд рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ (рдпрджрд┐ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ) - рдпрд╣ рдХреЗрд╡рд▓ package-lock.json
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛, рдФрд░ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдореВрд▓ рдореБрджреНрджреЗ рд╕реЗ рдореИрдВ рдЬреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╡рд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ node_modules
рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдФрд░ package-lock.json
рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ node_modules
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ package-lock.json
рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рддреЛ рдпрд╣ рд╣рд░ рдмрд╛рд░ рд╕рдм рдХреБрдЫ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реЛрдЧрд╛, рдЕрдВрдд рдореЗрдВ рдПрдХ рд╣реА рд╢реБрджреНрдз рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рдеред
рдХреНрдпрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ npm install
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдореЗрд╢рд╛ рдХрд░рддрд╛ рд╣реИ?
рдХреНрдпрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ
npm install
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдореЗрд╢рд╛ рдХрд░рддрд╛ рд╣реИ?
AFAIK -
npm install
package.json
рдлрд╝рд╛рдЗрд▓ ( package-lock.json
рдЕрдирджреЗрдЦрд╛ рдХрд░) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛, рд╡рд░реНрддрдорд╛рди рдореЗрдВ node_modules
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛ рд╣реИ рдЙрд╕рд╕реЗ рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рддрджрдиреБрд╕рд╛рд░ package-lock.json
рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ред
рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рдкреЗрдбрд╝ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдЬреЛ npm ci
рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рддреБрдо рд╕рд╣реА рд╣реЛ, рдореБрдЭреЗ рдЦреЗрдж рд╣реИред
рдореБрдЭреЗ рдЧрд▓рдд рдпрд╛рдж рдЖрдпрд╛, (рд╢рд╛рдпрдж рдЕрддреАрдд рдореЗрдВ рдпрд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдерд╛?) рдмрд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбрд┐рдк рдЯреНрд░реА рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдФрд░ рдЬрдм package-lock.json
рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ, рддреЛ npm i
рдареАрдХ рдЙрд╕реА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЬреЛ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдерд╛ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рддрд▓рд╛рд╢ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рд╕реЗ рдЦреБрд╢ рд╣реВрдВред рдореИрдВ
рдПрдХ рдмрдВрдж рдореБрджреНрджреЗ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЦреЗрдж рд╣реИред
рдореЗрд░рд╛ рдореВрд▓ рдЕрдиреБрд░реЛрдз рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдЯреАрдЧрд╛рд░реНрдбрдирд░ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ:
рдореВрд▓ рдореБрджреНрджреЗ рд╕реЗ рдЬреЛ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╡рд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ
node_modules
рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдФрд░package-lock.json
рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░node_modules
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИpackage-lock.json
рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рддреЛ рдпрд╣ рд╣рд░ рдмрд╛рд░ рд╕рдм рдХреБрдЫ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реЛрдЧрд╛, рдЕрдВрдд рдореЗрдВ рдПрдХ рд╣реА рд╢реБрджреНрдз рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рдеред
npm install
рд╕рд╛рде рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрднреА-рдХрднреА package-lock.json
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЖрдЬ рд╕реБрдмрд╣ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдПрдХ рднрдВрдбрд╛рд░ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдереЛрдбрд╝реА рджреЗрд░ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ git pull
рдФрд░ npm i
рдЪрд▓рд╛рдпрд╛ред рдЗрд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмрд╛рд░ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдмрд╕ рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝реЗред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдПрдХ рдирд┐рдЬреА рднрдВрдбрд╛рд░ рд╣реИ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдХрд┐рд╕реА рдФрд░ рдХреЛ рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрдВрдбрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ? рдЬрд╣рд╛рдВ рдХрдИ рдХрдорд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ npm install
package-lock.json
рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ?
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рд╛рдорд┐рд▓ рдЬрдм рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ package-lock.json
рдЬрдм рдЕрджреНрдпрддрди рдХрд░рдиреЗ package.json
рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП package-lock.json
рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ред рдореИрдВ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░реВрдВрдЧрд╛ред
npm i
package-lock.json
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЕрдкрдирд╛ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдорд┐рд▓рд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдХреБрдЫ рдФрд░ рдЖрдЬрдорд╛рдКрдВрдЧрд╛ред
рдпрджрд┐ npm i
рд╣рдореЗрд╢рд╛ package-lock.json
рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╡рд░реНрддрдорд╛рди node_modules
рд╕реЗ рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХреЗ рдЙрддрдирд╛ рд░рдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдХрднреА рднреА npm ci
рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреА
рджреЗрдЦреЗрдВ https://docs.npmjs.com/cli/v6/commands/npm-ci#description
рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдлрд┐рд░ рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рдмреЗрд╣рддрд░ рд╣реИ?
рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ node_modules
рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж npm i
рдХреА рд╕реНрдерд┐рддрд┐ package-lock.json
npm i
рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдФрд░ node_modules
рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж npm ci
рдХреА рд╕реНрдерд┐рддрд┐ рдареАрдХ рд╡реИрд╕реА рд╣реА рд╣реИ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо - рд▓рдЧрднрдЧ рд╕рднреА рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдЬрд┐рд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреБрдЫ/рдЕрдзрд┐рдХрд╛рдВрд╢ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ, рдХреНрдпрд╛ npm i
рддреЗрдЬ рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдпрд╣ рд╕рд┐рд░реНрдл рд╡рд╣реА рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
рдореИрдВ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд╕рдм рдХреБрдЫ рдХреНрдпреЛрдВ рд╣рдЯрд╛ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реВрдВрдЧрд╛?
рдирд╣реАрдВ, npm ci
рдЕрднреА рднреА рддреЗрдЬ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреБрдЫ рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд╕рдм рдХреБрдЫ рдХреНрдпреЛрдВ рд╣рдЯрд╛ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реВрдВрдЧрд╛?
рдореБрджреНрджреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ ci
рддреИрдирд╛рддреА рдЬреИрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорддрднреЗрджреЛрдВ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЙрдиреНрдореБрдЦ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рдХрд░ рдирд┐рдпрдорд┐рдд npm рдЗрдВрд╕реНрдЯреЙрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдирд┐рдпрдорд┐рдд рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЦреНрдд рд╣реИ, рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ npm рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдХрд╛рд░рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдпрд╛ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рднреА рджреЗрдЦреЗрдВ https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable
npm ci
рдЕрднреА рднреА рддреЗрдЬ рд╣реИред
рдЗрд╕рд▓рд┐рдП npm i
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╡рд░реНрддрдорд╛рди node_modules
рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп, рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд┐ рдХреМрди рд╕реЗ рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП, рдПрдирдкреАрдПрдо рдХреЗ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рд╕реЗ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИред рд╕рд░реНрд╡рд░? рдореБрдЭреЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдпреЛрдЧ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдЬреЛ рдЗрд╕реЗ рдорд╛рдкрддрд╛ рд╣реИред
рдФрд░ рдореИрдВ рдЗрд╕ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рднреА рдирд╣реАрдВ рд╕рдордЭрддрд╛ -
npm ci bypasses a packageтАЩs package.json to install modules from a packageтАЩs lockfile. This ensures reproducible buildsтАФyou are getting exactly what you expect on every install.
рдХреНрдпрд╛ рд╣рдордиреЗ рдЕрднреА рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓рд╛ рд╣реИ рдХрд┐ npm i
рдЪрд▓рд╛рдирд╛ package-lock.json
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдЯреАрдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░рди рдХреЗ рдмрд╛рдж node_modules
рдХреА рд╕реНрдерд┐рддрд┐ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рдорд╛рди рд╣реЛрддреА рд╣реИ рдЬреЛ рд╡рд╣ рдХрд░реЗрдЧреА npm ci
рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛ? рддреЛ рдмрд┐рд▓реНрдб рдЙрддрдирд╛ рд╣реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛ред
рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ -
рдореИрдВрдиреЗ рдПрдХ рдирдпрд╛ create-react-app
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдореЗрдВ package.json
7 рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдерд╛, рдФрд░ рдПрдХ package-lock.json
рдЬрд┐рд╕рдореЗрдВ 1982 рдкреИрдХреЗрдЬ рд╢рд╛рдорд┐рд▓ рдереЗред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ ( node_modules
рдореЗрдВ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ) - npm i
рдЪрд▓ рд░рд╣рд╛ рд╣реИ
real 0m2.548s
user 0m2.659s
sys 0m0.182s
рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░ ( node_modules/babel-eslint
) рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ npm i
рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛, рддреЛ рдЗрд╕рдореЗрдВ рд▓рдЧрд╛
real 0m3.295s
user 0m3.543s
sys 0m0.434s
рд▓рд╛рдкрддрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЬрдм рдореИрдВрдиреЗ рдкреВрд░реЗ node_moduels
рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдФрд░ npm i
рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛, рддреЛ рдпрд╣ рд▓реЗ рд▓рд┐рдпрд╛
real 0m16.701s
user 0m19.251s
sys 0m10.379s
рдЬрдм рдореИрдВ рднрд╛рдЧрд╛ npm ci
, рдпрд╣ рд▓рдЧ рдЧрдпрд╛
real 0m20.997s
user 0m23.844s
sys 0m14.857s
рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдкреИрдХреЗрдЬ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╛ рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреВрд░реЗ node_modules
рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рдерд╛ред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рдереА, рдХреНрдпреЛрдВрдХрд┐ npm ci
node_modules
рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ
рдкреНрд░рддреНрдпреЗрдХ рд░рди рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП diff -q -r node_modules_orig/ node_modules/
рдЪрд▓рд╛рдпрд╛ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдореВрд▓ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣ рд╣рдореЗрд╢рд╛ рдерд╛ред
рддреЛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ npm ci
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реА рдорд╢реАрди рдкрд░ ~21 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ node_modules
рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреБрдЫ рднреА рд╣реЛред рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП npm i
рдПрдХ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреНрд▓реЛрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ (рдХреЛрдИ node_modules
) рд▓реЗрддрд╛ рд╣реИ ~ 18 рд╕реЗрдХрдВрдб, рдФрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдирд┐рд░реНрднрд░рддрд╛ рдкрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ (рд╡рд░реНрддрдорд╛рди node_modules
рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ ) ~ 3 рд╕реЗрдХрдВрдб рд▓реЗрддрд╛ рд╣реИред
рддреЛ npm ci
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдм рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛? рдпрд╣ рддреЗрдЬрд╝ рдирд╣реАрдВ рд▓рдЧрддрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкрд░реАрдХреНрд╖рдг рд╣реИ), рдФрд░ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо npm i
рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╛рдж рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЙрддрдирд╛ рд╣реА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрдЧрд╛ред
npm ci
рдмреЗрд╣рддрд░ рд╣реИ рдЬрдм рдЖрдкрдХреЛ _exactly_ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рдЬреЛ package-lock.json
рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдирд╣реАрдВред npm i
рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ package-lock.json
ред рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИред рдЬрдмрдХрд┐ package-lock.json
рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдирдкреБрдЯ рд╣реИ npm i
, рдпрд╣ рднреА рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рд╣реИред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рд╣реА рдорд╛рдорд▓реЗ рдмрдЪреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ npm i
рдХреБрдЫ рдЕрд▓рдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ package-lock.json
), рдЬреИрд╕реЗ рд╢рд╛рдпрдж рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛ рд╕реЙрдлреНрдЯ-рдбрд┐рд▓реАрдЯ рдХрд┐рдП рдЧрдП рдереЗред
рд╡рд╛рдкрд╕ рдЬрдм npm ci
рдкрд╣рд▓реА рдмрд╛рд░ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, npm i
рдпрд╛ рддреЛ package-lock.json
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдерд╛ред
рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред npm ci
рдХреЗрд╡рд▓ рддрднреА рдареАрдХ рд╣реИ рдЬрдм node_modules
рдлрд╝реЛрд▓реНрдбрд░ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдпрдерд╛ рдпрд╣ рдирд┐рд╖реЗрдзрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ред рддреЛ npm i
рдмрд╕ рдПрдХ рдЭрдВрдбреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ _guarantees_ рдпрд╣ package-lock.json
рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдареАрдХ рд╡рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдЕрдВрджрд░ рд╣реИ package-lock.json
ред
рдореБрдЭреЗ рдХреНрдпреЛрдВ рдФрд░ рдХреИрд╕реЗ рдЗрд╕ рдкрд░ рдЖрдЧреЗ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рджрд┐рдЦрддрд╛ред рдпрд╛ рддреЛ рд╣рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ рдпрд╛ рдирд╣реАрдВред рдЬреИрд╕рд╛ рд╣реИ, npm ci
рдмреЗрдХрд╛рд░ рд╣реИред
/рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
рдпрд╣рд╛рдБ рдПрдХ рд░реЗрдкреЛ рдЬрд╣рд╛рдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ npm i
рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ package-lock.json
: https://github.com/fuzzykiller/npm-install-demo
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рддрдХрдиреАрдХреА рдкреНрд░рдХреГрддрд┐ рдХреЗ рд╣реИрдВ, рдлрд┐рд░ рднреА рд╡реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВред
рдмрд╕ рдЬрд▓реНрджреА рд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
npm ci
рд╣рдореЗрд╢рд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ node_modules
рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЧреИрд░-рдЙрддреНрдкрд╛рджрди рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдзреАрдорд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ package-lock.json
рдореЗрдВ рдкрд╛рдП рдЧрдП рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рдЯреАрдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрдиреАрдп рд╣реИред
npm install
рдХреЗрд╡рд▓ node_modules
рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╣реА рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдпрд╣ package-lock.json
рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ package.json
рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрд┐ рд╣реИ рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╛рдВрдЫрдиреАрдпред
npm install --package-lock-only
рдбреЙрдХреНрд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:
--рдкреИрдХреЗрдЬ-рд▓реЙрдХ-рдУрдирд▓реА рддрд░реНрдХ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ-рд▓реЙрдХ.рдЬреЗрд╕рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ред
рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рд╕реА рднреА рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реЗ 3 рд╕рд╛рд▓реЛрдВ рд╕реЗ рд▓реЛрдЧ рдХреНрдпрд╛ рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВ:
рдПрдХ рдЖрджреЗрд╢ (рдХрд╣реАрдВ рднреА) рдЬреЛ package.json
рдФрд░ _only_ рд╕рдореНрдорд╛рди package-lock.json
рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧрд╛, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрд░реЛрдд рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдпрд╣ node_modules
рдХреА рд╕рдВрдкреВрд░реНрдг рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рдПрдЧрд╛ рдФрд░ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдкрд░реАрдХреНрд╖рдг рджреЛрдиреЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, npm install
рдмрд┐рдВрджреБ 2 рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 1 рдирд╣реАрдВред npm ci
рдмрд┐рдВрджреБ 1 рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 2 рдирд╣реАрдВред npm install --package-lock-only
рдХрд┐рд╕реА рдХреЛ рднреА рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЙрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗред
рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрднреА рднреА рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: @fuzzykiller рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ package-lock.json
рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдорд╛рдг рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ package.json
рдореЗрдВ рдХрд╣реАрдВ рднреА рдЕрд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ, рдФрд░ рдЙрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рдПрдХ рдмрдЧрдлрд┐рдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрдм рдореИрдВ рдПрдХ рдирдИ рдорд╢реАрди рдкрд░ npm install
рдЪрд▓рд╛рдКрдВрдЧрд╛ рддреЛ рд╡реЗ рдмрджрд▓ рдЬрд╛рдПрдВрдЧреЗред рдЕрдЪрд╛рдирдХ рдореИрдВрдиреЗ рджреЛ рдорд╢реАрдиреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд╣рдордиреЗ рдЕрдкрдиреА рдХрдВрдкрдиреА рдореЗрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЧ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ package-lock.json
рдХреЛ рдлрд┐рд░ рд╕реЗ рдЧрд┐рдЯ рдореЗрдВ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ рдПрдХ рдЖрджреЗрд╢ рд╣реИ рдЬреЛ npm ci
рдЬреИрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ - рдЬреЛ package-lock.json
рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ _only_ рдЖрдзрд╛рд░рд┐рдд рдкреБрдирд░реБрддреНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЗрдВрд╕реНрдЯреЙрд▓ рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, node_modules
рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рд╡рд╛рддрд╛рд╡рд░рдг рдФрд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдЕрдВрддрд┐рдо рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рднреА рдЭрдВрдбрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ npm install --from-lockfile
рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ npm ci --preserve-existing
рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрднреА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдРрд╕реЗ рдШреЗрд░реЗ рдореЗрдВ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдЬреЛ npm install
рдЭрдВрдбреЗ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ, рдЙрд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ npm ci
рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдХреЛрдИ рднреА рдзреНрд╡рдЬ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реИ npm ci
рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ npm install
рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдореБрджреНрджрд╛ npm install --package-lock-only
рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЭрдВрдбрд╛ рд▓реЛрдЧреЛрдВ рдХреА рдорд╛рдВрдЧ рдХреЗ рд▓рдЧрднрдЧ рд╡рд┐рдкрд░реАрдд рд╣реИред рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ package-lock.json
рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ node_modules
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрджреНрдпрддрди рдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ :)
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕ рддрд░рд╣ рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░реЗ:
npm install
- рдЖрдЬ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░npm install --from-lockfile
- рд▓реЙрдХрдлрд╛рдЗрд▓ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ (рдЬреИрд╕реЗci
рдХрд░рддрд╛ рд╣реИ)npm install --clean
-npm install
рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд▓реЗрдХрд┐рдиnode_modules
рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛ рджреЗрдВnpm ci
-npm install --from-lockfile --clean
рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо