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

рдФрд░ рдпрд╣ рдЬрд╡рд╛рдм - рд╢рд╛рдпрдж рдЗрддрдирд╛ рдирд╣реАрдВред
[рдиреЛрдЯ: рдорд╛рдзреНрдпрдо рдкрд░ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдПрдХ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдореЗрд░реЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рднреА]
рдПрдХ npm рдкреИрдХреЗрдЬ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрдкрдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХреЗ рджреЛ рдореБрдЦреНрдп рддрд░реАрдХреЗ рд╣реИрдВ - рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╕рдордп / рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╕рдордпред рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред
рдПрдирдкреАрдПрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рдордп рдордирдорд╛рдиреЗ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрдирдореЗрдВ preinstall
, preuninstall
, preuninstall
, preuninstall
рдФрд░ postuninstall
, рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреИрдХреЗрдЬ рдЬреАрд╡рди рдЪрдХреНрд░ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╕рдордп рдкрд░ postuninstall
рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рд╡рд╣реА рд╕рдм рдЬреЛ рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рдЕрд╡рдХрд╛рд╢ рд╕реЗ рдЕрдкрдиреА рд╕рднреА рдлрд╝реЛрдЯреЛ рд╣рдЯрд╛ рджреЗрдВ, рдпрд╛ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдПрдлрдмреАрдЖрдИ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджреЗрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЙрдирдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ)ред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ --ignore-scripts
рдлреНрд▓реИрдЧ рдкрд╛рд╕ рдХрд░рдХреЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдИ рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдХрд╛рдлреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдерд╛ рдХрд┐ ESLint рдкрд░ рд╕рдирд╕рдиреАрдЦреЗрдЬ рд╣рдорд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рдПрд╕реНрд▓рд┐рдВрдЯ-рд╕реНрдХреЛрдк (рдкреНрд░рддрд┐ рд╕рдкреНрддрд╛рд╣ 6 рдорд┐рд▓рд┐рдпрди рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди) рдФрд░ рдПрд╕реНрд▓рд┐рдВрдЯ-рдХреЙрдиреНрдлрд┐рдЧ-рдПрд╕реНрд▓рд┐рдВрдЯ (рдкреНрд░рддрд┐ рд╕рдкреНрддрд╛рд╣ 2 рд╣рдЬрд╛рд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред
рдкреИрдХреЗрдЬ рдХреЛ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рдореМрдХрд╛ рдорд┐рд▓рддрд╛ рд╣реИ (рдЖрдорддреМрд░ рдкрд░ require
рд▓рд┐рдП рдкрд╣рд▓реА рдХреЙрд▓ рдкрд░ рд╣реЛрддрд╛ require
)ред рдЕрдм рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдФрд░ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдмрд┐рдЯрдХреЙрдЗрди рд╡реЙрд▓реЗрдЯ рд╕реЗ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЛ рдЪреЛрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдпрд╛ crypto.randomBytes
рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред crypto.randomBytes
рд╡рд┐рдзрд┐ рдЗрддрдиреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирд╣реАрдВ рд╣реИ ред

рдХрд┐рддрдиреЗ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛?
рдЦреИрд░, рд╕реВрдЪреА рдХреЛ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрд▓ 3 рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдПрдирдкреАрдПрдо рд╕реБрд░рдХреНрд╖рд╛ рдЯреАрдо рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рд╕реЗ рдПрдирдкреАрдПрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ рдЦрддреНрдо:
- рдХрдорд╛рдВрдбрд░-рдЬреЗрдПрд╕ рдЦреБрдж рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ
commander.js
(рдЬреЛ https://www.npmjs.com/package/commander рд╣реИ ) рдХреЗ рд░реВрдк рдореЗрдВ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдПрдХ рдмрд╛рдж рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ http://23.94.46.191/ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЪрд▓рд╛рддрд╛ рд╣реИред update.json (рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рдордп рдореЗрдВ рдХреБрдЫ рднреА рдЖрдкрд░рд╛рдзрд┐рдХ рдирд╣реАрдВ рд╣реИ)ред рд╕реБрд░рдХреНрд╖рд╛ рд╕рд▓рд╛рд╣рдХрд╛рд░: https://www.npmjs.com/advisories/763 - rrgod, рд╕рднреА рд╕рдорд╛рди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, http://static.ricterz.me рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рджреВрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред рд╕реБрд░рдХреНрд╖рд╛ рд╕рд▓рд╛рд╣рдХрд╛рд░: https://www.npmjs.com/advisories/764 ред
- partfatty12 рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд▓реЗрдЦрдХ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдмрд╣реБрдд рд╣реА рд╕рдВрджрд┐рдЧреНрдз рд╣реИ - рдпрд╣ рдЖрдкрдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ssh рдХреБрдВрдЬреА (
~/.ssh/id_rsa.pub
) рдХреЛ рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред рд╕реБрд░рдХреНрд╖рд╛ рд╕рд▓рд╛рд╣рдХрд╛рд░: https://www.npmjs.com/advisories/765
рдмрд╣реБрдд рд╣реА рдорд╛рдореВрд▓реА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╕рднреА рд╕рдВрджрд┐рдЧреНрдз рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ (рдФрд░ рдореИрдВрдиреЗ рдЗрди рддреАрди рдореЛрддреА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП 3000 рд╕реЗ рдЕрдзрд┐рдХ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЛ рджреЗрдЦрд╛), рдмрд╣реБрдд рд╕рд╛рд░реЗ рдордЬрд╛рдХрд┐рдпрд╛ рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рдорд┐рд▓реАрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЖрдорддреМрд░ рдкрд░ npm install
рдХрд░рдХреЗ рдЯрд╛рдЗрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ (рдпрд╛ рдзреНрдпрд╛рди рд╕реЗ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП)ред ред рддреЛ, рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЧрд▓рддреА рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
1. рдПрдХ рдкреИрдХреЗрдЬ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЬрд┐рдирдореЗрдВ Node.js рдХреА рдорд╛рдирдХ рдбрд┐рд▓реАрд╡рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ)
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдорд╛рдЪрд╛рд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдЖрдкрджрд╛ рдХрд╛ рдкреИрдорд╛рдирд╛ рдЖрдкрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рд╕рд▓ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ fs.closeSync рд╡рд┐рдзрд┐ рдЬреЛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджреА рд╣реИ (рдФрд░ рд╢рд╛рдпрдж рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░)ред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рд╣реИрдВред "рдЪреИрдВрдкрд┐рдпрди" рдкреНрд░рддрд┐ рд╕рдкреНрддрд╛рд╣ 12 рдорд┐рд▓рд┐рдпрди рдкреНрд░рддрд┐рд╖реНрдард╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕реБрдВрджрд░-рдПрдлрдПрд╕ рд╣реИ , рдЬреЛ рдПрдлрдПрд╕ рд╕реЗ рджрд░реНрдЬрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ crypto.randomBytes
рд╢реНрд░реЛрддрд╛ рдХреЛ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ , рдЬреЛ 46 рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ , рдЬрд┐рд╕рдореЗрдВ рдмреАрдорд╛рд░- crypto.randomBytes
, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдкрддрд╛ crypto.randomBytes
рдереЛрдбрд╝рд╛ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдпрд╣ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рдХрд╛рд░рдг рдмрдЧ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд▓рдЧреЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪрд┐рдВрддрд╛ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ ...
2. рдкреИрдХреЗрдЬ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдПрдкреАрдЖрдИ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рд╣рд╛рдВ, рдХреБрдЫ рдкреИрдХреЗрдЬ / (рдЬреИрд╕реЗ рдЕрдХреНрд╕рд░ рдПрдХ рд╣реА /graceful-fs/.test(fs.closeSync.toString())
graceful-fs
рд╕рдВрдмрдВрдз рдореЗрдВ) / /graceful-fs/.test(fs.closeSync.toString())
рдЬреИрд╕реЗ рдХрд▓рд╛рдмрд╛рдЬреА рдХреЗ рдЪрдорддреНрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЕрд╕рдВрдЧрдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ npm рд╕рдВрдХреБрд▓ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрд╛ рдмрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдирд┐рдХрдЯрддрдо рдкрд╛рд░реНрдХ рдореЗрдВ рд╕реИрд░ рдХрд░реЗрдВ, рдпрд╣ рд╕рдм рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред
3. рд╡рд╣ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ
рдпрджрд┐ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪреАрдЬреЗрдВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ Adblock рдЖрдкрдХреА рд░рдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдХреБрдЫ рдкреИрдХреЗрдЬ рдХреЗ рд▓реЗрдЦрдХ рдЗрд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ ecdsa-csr :
рдХреБрдЫ рдЗрддрдиреЗ рд╢рд░реНрдореАрд▓реЗ рдирд╣реАрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ (рдореВрд▓ 2 рдЧреБрдирд╛ рдмрдбрд╝рд╛ рд╣реИ):
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, jquery
рдХреЛрдИ рднреА рдЖрдВрдХрдбрд╝реЗ рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрднреА рднреА рдЗрд╕реЗ рд╕рднреА рд╕реЗ рдЧреБрдкреНрдд рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдПред
4. рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ CI / CD рд╕рд░реНрд╡рд░ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпрджрд┐ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХреЛ рдХреНрдпреЛрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВрдЧреЗ? рдпрджрд┐ рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдХреЗрд╡рд▓ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрд▓рдмреНрдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП typescript@3
ред Microsoft рд╕реЗ рд╕рд╛рдХреНрд╖рд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╡реЗ рд╕рд╣реА рд╕реЗрд╡рд░ рдХрд░рдирд╛ рдЬрд╛рдирддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдЧреЗ рднреА рдРрд╕рд╛ рд╕рдВрднрд╡ рд╣реИ? рдмреЗрд╢рдХ !
"postinstall": "eslint --ext .js,.vue --fix src"
рдЕрдм рдЖрдк рд╢рд╛рдВрддрд┐ рд╕реЗ рд╕реЛ рд╕рдХрддреЗ рд╣реИрдВ - рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рд╕реНрд░реЛрдд рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗред
5. рд╡рд╣ рдЖрдкрдХреЛ рдбрд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рд╕рднреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ рдорд┐ред рд░реЛрдмреЛрдЯ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХрдВрдкреНрдпреВрдЯрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди - рдПрдХ рдкреЛрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреБрдирд┐рдпрд╛ рдХреЛ рдЕрдкрдиреЗ рдХреМрд╢рд▓ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдкрд┐рдЬреНрдЬрд╛-рдкрд╛рд╕реНрддрд╛ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдХрд┐рдпрд╛ рдерд╛ (рдФрд░ рдЙрд╕реА рд╕рдордп рдореБрдЭреЗ рдХреЗрдбреАрдкреАрд╡реА рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред
{ "name": "pizza-pasta", "author": "Zeavo", "scripts": { "install": "mkdir -p ~/Desktop/hacked && touch ~/Desktop/hacked/pwnddddd && wget https://imgur.com/download/KTDNt5I -P ~/Desktop/hacked/", "postinstall": "find ~/.ssh | xargs cat || true && printf '\n\n\n\n\n\nOH HEY LOOK SSH KEYS\n\n\n\nHappy Birthday! Youve been h4ck0red\n\n\n'" } }
6. рдкреИрдХреЗрдЬ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕реБрдирд╛ рд╣реИ рдХрд┐ curl|bash
рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдк рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХ ORESoftware рдХрд░реНрдордЪрд╛рд░реА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкреЛрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдорд╛рди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдХреБрд▓ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ рд╣реИ :
curl --silent -o- https://raw.githubusercontent.com/oresoftware/realpath/master/assets/install.sh | bash
рдЕрдм рддрдХ, рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреБрдЫ рднреА рдЖрдкрд░рд╛рдзрд┐рдХ рдирд╣реАрдВ рд╣реИ ... рдЕрднреА рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА oresoftware/realpath
рдореЗрдВ master
рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рд╡рд╣ рдмреЗрд╣рдж рдИрдорд╛рдирджрд╛рд░ рдФрд░ рд╕рднреНрдп рд▓реЛрдЧ рд╣реИрдВред
7. рдЖрдкрд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рдорд╛рдВрдЧрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдореИрдЬрд┐рдХрд▓реЗрдк рдХреЗ рд▓реЗрдЦрдХ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреИрдХреЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдирд┐рдЬреА рдкреИрдХреЗрдЬ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рдХреЗ рд╕рд╛рде рдЖрдП рдереЗред рдЙрдирдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдЗрд╕реЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЖрдк MAGICLEAP
рдореЗрдВ рд╕рд╣реА рдХреБрдВрдЬреА рдбрд╛рд▓рддреЗ рд╣реИрдВ:
8. рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдкреИрдХреЗрдЬ рдЦреБрдж рдХреЛ рдкреИрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдирдХрд▓реА-рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдкрд╛рд╕ рддрддреНрдХрд╛рд▓ рдХреЛрдб рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рдХрд░ рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ:
рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ sed
рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ:
"postinstall": "sed -i '/\\/\\/ TEST/d' index.js"
рд╕рд░рд▓ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг!
9. рдкреИрдХреЗрдЬ npm
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ
рдореЗрд░реА рд╡рд┐рдирдореНрд░ рд░рд╛рдп рдореЗрдВ, package-json.lock
рдПрдХ рдорд╣рд╛рди рдЪреАрдЬ рд╣реИ рдЬреЛ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд▓рд╛рдкрд░рд╡рд╛рд╣реА рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдПрдХ рдкреВрд░реЗ рдЧреБрдЪреНрдЫрд╛ рд╕реЗ рдмрдЪрд╛ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдХреБрдЫ рд╡рд┐рд░реЛрдзрд┐рдпреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд╛рдлреА рдЕрдЪреНрдЫреЗ рддрд░реНрдХ рд╣реИрдВ:
"preinstall": "npm config set package-lock false"
10. рд╡рд╣ рдирд┐рдХреЛрд▓рд╕ рдХреЗрдЬ рдХреА рдПрдХ рддрд╕реНрд╡реАрд░ рдкрд░ рдЖрдкрдХреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ

рдпрд╣рд╛рдБ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ, рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ - https://www.npmjs.com/package/cage-js рд╢рд╛рдпрдж рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╕рд╛рд░реНрдердХ рдерд╛ред
11. рдкреИрдХреЗрдЬ рдЖрдкрдХреЛ рд▓реБрдврд╝рдХрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдПрдореНрдмрд░-рдбреЗрдЯрд╛-рд░рд┐рдПрдХреНрд╢рди рдХрд░рддрд╛ рд╣реИ , рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╕рд┐рджреНрдз рд╡реАрдбрд┐рдпреЛ рдХреЛ рдЦреЛрд▓рдирд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдХреА рдорджрдж рд╕реЗ рдПрдореНрдмрд░ рд╕реЗ рд░рд┐рдПрдХреНрдЯ рддрдХ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдЗрд╕рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреА рдПрдХ рднреА рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИред
12. рдпрд╣ рдмрд╕ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЧреИрд░-рдореМрдЬреВрдж рдирд┐рд░реНрднрд░рддрд╛рдПрдВ, рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг, рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЬреЛ рдЧреБрдордирд╛рдореА рдореЗрдВ рдбреВрдм рдЧрдП рд╣реИрдВ - рдЖрдк npm рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рд▓рдЧрднрдЧ 0.6% рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЕрдЬреАрдм рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рд╕реЗ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВред рдЕрдЪрд╛рдирдХ рдЕрдкрдбреЗрдЯ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП package-lock.json
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ рднреА рдЖрдкрдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), CSP рдХреЛ рдлреНрд░рдВрдЯрдПрдВрдб рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рдХрдо рд╕реЗ рдХрдо рдЕрдкрдиреЗ рд▓реЗрдЦрдХ рдХреЛ рдбреЗрдЯрд╛ рдорд░реНрдЬ рди рдХрд░ рд╕рдХреЗрдВред рдФрд░ рдЕрдкрдиреА рддрд╕реНрд╡реАрд░реЛрдВ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдВ, рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВред
рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬреЛрдВ рдХреА рдЕрджреНрднреБрдд рджреБрдирд┐рдпрд╛ рдореЗрдВ рдбреВрдмрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рддрд╛рдХрдд рд╣реИ - рддреЛ рдЖрдк рдпрд╣рд╛рдВ рд╕рднреА рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/malicious-packages/core ред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИрдХ рдФрд░ рдЧреИрд░-рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рддрд╛ рд╣реИред 180,000 рд╕реЗ рдЕрдзрд┐рдХ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдХ MongoDB рдбрдВрдк рднреА рд╣реИ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдлрд┐рд▓реНрдЯрд░ {'reports.status': 'unverified'}
рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВред рдореИрдВ рд╕рдордп рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдпрджрд┐ рдХреЛрдИ рд╣реЛред
рдЕрдкрдирд╛ рдФрд░ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦреЗрдВ!