NPM рднрдгреНрдбрд╛рд░рдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдорд░реНрдорддрдХрд░реНрддрд╛рд╣рд░реВрдорд╛рдерд┐рдХреЛ рдЖрдХреНрд░рдордг рдирдпрд╛рдБ рд╕реНрддрд░рдорд╛ рдкреБрдЧреЗрдХреЛ рдЫред рднреБрдХреНрддрд╛рдиреА рд░ рдЧреЛрдкреНрдп рдЬрд╛рдирдХрд╛рд░реАрд▓рд╛рдИ рдЕрд╡рд░реЛрдз рдЧрд░реНрди рдорд╛рд▓рд╡реЗрдпрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдХреЛ рд╕рд╛рдереИ, рдЖрдХреНрд░рдордгрдХрд╛рд░реАрд╣рд░реВрд▓реЗ рдорд╛рд▓рд╡реЗрдпрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирд▓рд╛рдИ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВрдорд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди рд╕рдореНрдЭреМрддрд╛ рдЧрд░рд┐рдПрдХрд╛ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдорд╛ рд╡рд░реНрдо рдЗрдиреНрдЬреЗрдХреНрдЯ рдЧрд░реНрди рдерд╛рд▓реЗрдХрд╛ рдЫрдиреНред @ctrl/tinycolor NPM рдкреНрдпрд╛рдХреЗрдЬрдХреЛ рд╕рдореНрдЭреМрддрд╛ рдкрдЫрд┐ рд╡рд░реНрдордХреЛ рдкреНрд░рдпреЛрдЧ рдкрддреНрддрд╛ рд▓рд╛рдЧреЗрдХреЛ рдерд┐рдпреЛ, рдЬрд╕рдорд╛ реи.реи рдорд┐рд▓рд┐рдпрди рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдбрд╛рдЙрдирд▓реЛрдбрд╣рд░реВ рдЫрдиреН рд░ репремрек рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдорд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд╡рд░реНрдордХреЛ рдЧрддрд┐рд╡рд┐рдзрд┐рдХреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдХреНрд░рдордгрд▓реЗ резреорен рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдпреЛ, рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░рд┐рд▓реАрдЬрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ (рекренрен рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░рд┐рд▓реАрдЬрд╣рд░реВ)ред
рдирдпрд╛рдБ рдЖрдХреНрд░рдордгрдорд╛, рдлрд┐рд╕рд┐рдЩ рдорд╛рд░реНрдлрдд рдорд░реНрдорддрдХрд░реНрддрд╛рдХреЛ рдЦрд╛рддрд╛ рдкреНрд░рдорд╛рдгрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдкрдЫрд┐, рдЖрдХреНрд░рдордгрдХрд╛рд░реАрд╣рд░реВрд▓реЗ рд╡рд░реНрдо рднрдПрдХреЛ рдкреНрдпрд╛рдХреЗрдЬ рд░рд┐рд▓реАрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдЫрдиреН, рдЬреБрди рд╕рдореНрдЭреМрддрд╛ рдЧрд░рд┐рдПрдХреЛ рдкреНрдпрд╛рдХреЗрдЬрд▓рд╛рдИ рдирд┐рд░реНрднрд░рддрд╛рдХреЛ рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджрд╛ рд╕рдХреНрд░рд┐рдп рд╣реБрдиреНрдЫред рдПрдХ рдкрдЯрдХ рд╕рдХреНрд░рд┐рдп рднрдПрдкрдЫрд┐, рд╡рд░реНрдорд▓реЗ рдЯреНрд░рдлрд▓рд╣рдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдбрд╛рдЙрдирд▓реЛрдб рд░ рдЪрд▓рд╛рдЙрдБрджреИ, рдкреНрд░рдорд╛рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рд▓рдХреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдЦреЛрдЬреНрдЫред рдпрджрд┐ NPM рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд╣реБрдБрдЪ рдЯреЛрдХрди рдкрддреНрддрд╛ рд▓рд╛рдЧреНрдпреЛ рднрдиреЗ, рд╡рд░реНрдорд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдирдпрд╛рдБ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░рд┐рд▓реАрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрджрдЫ рд░ рдкрд╛рд▓реИрдкрд╛рд▓реЛ рдирд┐рд░реНрднрд░рддрд╛ рд░реВрдЦрд▓рд╛рдИ рд╕рдВрдХреНрд░рдорд┐рдд рдЧрд░реНрджрдЫред NPM рдкрд╣реБрдБрдЪ рдЯреЛрдХрдирдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╡рд░реНрдорд▓реЗ GitHub рд░ AWS, Azure, рд░ GCP (Google Cloud Platform) рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рдкрд╣реБрдБрдЪ рдХреБрдЮреНрдЬреАрд╣рд░реВ, рд╕рд╛рдереИ TruffleHog рд╕реНрдХреНрдпрд╛рдирд░ рджреНрд╡рд╛рд░рд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХрд┐рдиреЗ рдЕрдиреНрдп рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрджрдЫред
╨Т╤А╨╡╨┤╨╛╨╜╨╛╤Б╨╜╤Л╨╡ ╤А╨╡╨╗╨╕╨╖╤Л ╤Д╨╛╤А╨╝╨╕╤А╤Г╤О╤В╤Б╤П ╨┤╨╗╤П 20 ╨╜╨░╨╕╨▒╨╛╨╗╨╡╨╡ ╨┐╨╛╨┐╤Г╨╗╤П╤А╨╜╤Л╤Е ╨┐╨░╨║╨╡╤В╨╛╨▓, ╨║ ╨║╨╛╤В╨╛╤А╤Л╨╝ ╨╕╨╝╨╡╨╡╤В ╨┤╨╛╤Б╤В╤Г╨┐ ╨╜╨░╨╣╨┤╨╡╨╜╨╜╤Л╨╣ NPM-╤В╨╛╨║╨╡╨╜. ╨д╤Г╨╜╨║╤Ж╨╕╨╛╨╜╨░╨╗╤М╨╜╨╛╤Б╤В╤М ╨┐╤Г╨▒╨╗╨╕╨║╨░╤Ж╨╕╨╕ ╤А╨╡╨╗╨╕╨╖╨░ ╤А╨╡╨░╨╗╨╕╨╖╨╛╨▓╨░╨╜╨░ ╨▓ ╤Д╨╛╤А╨╝╨╡ ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ NpmModule.updatePackage, ╨║╨╛╤В╨╛╤А╨░╤П ╨╖╨░╨│╤А╤Г╨╢╨░╨╡╤В ╨╕╤Б╤Е╨╛╨┤╨╜╤Л╨╣ ╨░╤А╤Е╨╕╨▓ ╨┐╨░╨║╨╡╤В╨░, ╨╕╨╖╨╝╨╡╨╜╤П╨╡╤В ╨╜╨╛╨╝╨╡╤А ╨▓╨╡╤А╤Б╨╕╨╕ ╨╕ ╨┤╨╛╨▒╨░╨▓╨╗╤П╨╡╤В postinstall-╤Е╤Г╨║ ╨▓ ╤Д╨░╨╣╨╗ package.json, ╨┐╨╛╨┤╤Б╤В╨░╨▓╨╗╤П╨╡╤В ╨╛╨▒╤А╨░╨▒╨╛╤В╤З╨╕╨║ bundle.js, ╨┐╨╡╤А╨╡╤Г╨┐╨░╨║╨╛╨▓╤Л╨▓╨░╨╡╤В ╨┐╨░╨║╨╡╤В ╨╕ ╨┐╤Г╨▒╨╗╨╕╨║╤Г╨╡╤В ╨╡╨│╨╛. ╨Я╨╛╨┤╨┤╨╡╤А╨╢╨╕╨▓╨░╨╡╤В╤Б╤П ╤А╨░╨▒╨╛╤В╨░ ╨▓ Linux ╨╕ macOS.
рдпреЛ рдХрд┐рд░рд╛рд▓рд╛рдИ Shai-Hulud (рдЙрдкрдиреНрдпрд╛рд╕ Dune рдорд╛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдХрд┐рд░рд╛) рдХреЛрдбрдирд╛рдо рджрд┐рдЗрдПрдХреЛ рдЫред рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкрд╛рдЗрдиреЗ рдкреНрд░рдорд╛рдгрд╣рд░реВ Shai-Hulud (рдЬрд╕реНрддреИ, "B611/Shai-Hulud") рдирд╛рдордХ рднрдгреНрдбрд╛рд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрд░ GitHub рдорд╛ рдкреЛрд╕реНрдЯ рдЧрд░рд┐рдиреНрдЫрдиреН рд░ GitHub Actions рд▓рдЧрд╣рд░реВрдорд╛ рдкрдирд┐ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯ рдЧрд░рд┐рдиреНрдЫрдиреНред рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рднрдгреНрдбрд╛рд░рдорд╛ data.json рдлрд╛рдЗрд▓ рд╣реБрдиреНрдЫ, рдЬрд╕рдорд╛ рдкреНрд░рдгрд╛рд▓реА, рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рд╣рд░реВ, рд░ рдЕрд╡рд░реЛрдзрд┐рдд рдкрд╣реБрдБрдЪ рдХреБрдЮреНрдЬреАрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рднрдПрдХреЛ base64-рдЗрдирдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдЩ рд╣реБрдиреНрдЫред GitHub-рдЖрдзрд╛рд░рд┐рдд CI рдорд╛, рдХрд┐рд░рд╛рд▓реЗ рдмрд╛рд╣реНрдп рд╣реЛрд╕реНрдЯрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрди GitHub Actions рд╣реНрдпрд╛рдиреНрдбрд▓рд░ (.github/workflows/shai-hulud-workflow.yml) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ рдЖрдХреНрд░рдордг рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХрд╛ резреорен рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдорд╛ рд╕реАрдорд┐рдд рдЫреИрди, рдХрд┐рдирдХрд┐ Shai-Hulud рдирд╛рдордХрд╛ рдирдпрд╛рдБ рднрдгреНрдбрд╛рд░рд╣рд░реВ рд░ data.json рдлрд╛рдЗрд▓ GitHub рдорд╛ рджреЗрдЦрд╛ рдкрд░реНрди рдЬрд╛рд░реА рдЫрдиреНред

рдЕрдиреНрдп рдХреБрд░рд╛рд╣рд░реВрдХрд╛ рд╕рд╛рдереИ, рдХрд┐рд░рд╛рдХреЛ рдЧрддрд┐рд╡рд┐рдзрд┐рдХреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреНрд░рд╛рдЙрдбрд╕реНрдЯреНрд░рд╛рдЗрдХ рдХрдореНрдкрдиреАрдХрд╛ реирел рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ, рдЬрд╕рд▓реЗ рдЙрдкрдХрд░рдгрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджрдЫ рдЖрдХреНрд░рдордгрдмрд╛рдЯ рд╕реБрд░рдХреНрд╖рд╛ рдирд┐рд░реНрднрд░рддрд╛ (рд╕рдкреНрд▓рд╛рдИ рдЪреЗрди) рдорд╛рд░реНрдлрддред рдХреНрд░рд╛рдЙрдбрд╕реНрдЯреНрд░рд╛рдЗрдХрдХрд╛ рдЕрдиреБрд╕рд╛рд░, рд╕рдореНрдЭреМрддрд╛ рдЧрд░рд┐рдПрдХрд╛ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдлрд╛рд▓реНрдХрди рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрди, рд░ рдЖрдХреНрд░рдордг рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрдорд╛ рдлреИрд▓рд┐рдПрдХреЛ рдерд┐рдПрдиред рдпреЛ рдкрдирд┐ рдЦреБрд▓рд╛рд╕рд╛ рднрдпреЛ рдХрд┐ NPM рдорд╛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░рд┐рд▓реАрдЬрдХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рд▓рд╣рд░, рдЬреБрди рдХрд┐рд░рд╛ рдмрд┐рдирд╛ рднрдПрдХреЛ рдерд┐рдпреЛ, рд▓реЗ рдЧреБрдЧрд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдЬреЗрдорд┐рдиреА-рдХреНрд▓рд╛рдЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдпреЛред
рд╕реНрд░реЛрдд: opennet.ru
