Cli: [рдлреАрдЪрд░] npm ci . рдкрд░ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдХреЛ рди рд╣рдЯрд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рджрд┐рд╕ре░ 2019  ┬╖  53рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: npm/cli

рдХреНрдпрд╛ рдХреНрдпреЛрдВ

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдмрд┐рд▓реНрдбрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm ci --keep рдЬреИрд╕реЗ рдзреНрд╡рдЬ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рд╣рдорд╛рд░реА рддреИрдирд╛рддреА рдмрд╣реБрдд рддреЗрдЬ рд╣реЛ рдЬрд╛рдПрдЧреАред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЬреАрдердм рдФрд░ рд╕рдореБрджрд╛рдп рдкрд░ рд╕реБрдЭрд╛рдпрд╛ 7 рдЕрдХреНрдЯреВрдмрд░ рдХреЛ рдерд╛ рдХрд┐ рдХреНрд▓реА рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рдереАред рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдкрд░ рдЕрдкрдбреЗрдЯ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? :-)

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

рдЗрд╕ рддрд░рд╣ рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░реЗ:

  • npm install - рдЖрдЬ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░
  • npm install --from-lockfile - рд▓реЙрдХрдлрд╛рдЗрд▓ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ (рдЬреИрд╕реЗ ci рдХрд░рддрд╛ рд╣реИ)
  • npm install --clean - npm install рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд▓реЗрдХрд┐рди node_modules рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
  • npm ci - npm install --from-lockfile --clean рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо

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

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

рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдлрд┐рд░ рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рдмреЗрд╣рддрд░ рд╣реИ?

рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ 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 рд╕рд╛рд▓реЛрдВ рд╕реЗ рд▓реЛрдЧ рдХреНрдпрд╛ рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВ:

  1. рдПрдХ рдЖрджреЗрд╢ (рдХрд╣реАрдВ рднреА) рдЬреЛ package.json рдФрд░ _only_ рд╕рдореНрдорд╛рди package-lock.json рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧрд╛, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрд░реЛрдд рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

  2. рдпрд╣ 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 рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрджреНрдпрддрди рдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ :)

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

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

dr-js picture dr-js  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

admosity picture admosity  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ