JavaScript เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชชเซเชธเชจเซ€ เชนเซ‡เชฐเชซเซ‡เชฐ เชฆเซเชตเชพเชฐเชพ Node.js เชชเชฐ เชนเซเชฎเชฒเซ‹

เชนเซ‡เชฒเซเชฎเชนเซ‹เชฒเซเชŸเซเช เชธเซ‡เชจเซเชŸเชฐ เชซเซ‹เชฐ เช‡เชจเซเชซเซ‹เชฐเซเชฎเซ‡เชถเชจ เชธเชฟเช•เซเชฏเซ‹เชฐเชฟเชŸเซ€ (CISPA) เช…เชจเซ‡ เชฐเซ‹เชฏเชฒ เช‡เชจเซเชธเซเชŸเชฟเชŸเซเชฏเซ‚เชŸ เช“เชซ เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€ (เชธเซเชตเซ€เชกเชจ) เชจเชพ เชธเช‚เชถเซ‹เชงเช•เซ‹เช Node.js เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช…เชจเซ‡ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชชเชฐ เชนเซเชฎเชฒเชพเช“ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ JavaScript เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช เชชเซเชฐเชฆเซ‚เชทเชฃ เชคเช•เชจเซ€เช•เชจเซ€ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซเชฏเซเช‚, เชœเซ‡ เช•เซ‹เชก เชเช•เซเชเชฟเช•เซเชฏเซเชถเชจ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡.

เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช เชชเซเชฐเชฆเซ‚เชทเชฟเชค เชชเชฆเซเชงเชคเชฟ JavaScript เชญเชพเชทเชพเชจเซ€ เชตเชฟเชถเซ‡เชทเชคเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เช•เซ‹เชˆเชชเชฃ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเชพ เชฎเซ‚เชณ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชชเชฎเชพเช‚ เชจเชตเชพ เช—เซเชฃเชงเชฐเซเชฎเซ‹ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชฎเชพเช‚ เช•เซ‹เชก เชฌเซเชฒเซ‹เช•เซเชธ (เช—เซ‡เชœเซ‡เชŸเซเชธ) เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ เชœเซ‡เชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เช…เชตเซ‡เชœเซ€ เชฎเชฟเชฒเช•เชคเชฅเซ€ เชชเซเชฐเชญเชพเชตเชฟเชค เชฅเชพเชฏ เช›เซ‡; เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เซ‹เชกเชฎเชพเช‚ 'const cmd = options.cmd || "/bin/sh"', เชœเซ‡เชจเซ‹ เชคเชฐเซเช• เชฌเชฆเชฒเชพเชˆ เชœเชถเซ‡ เชœเซ‹ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชฐเซเชŸ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเชˆเชชเชฎเชพเช‚ "cmd" เช—เซเชฃเชงเชฐเซเชฎเชจเซ‡ เชฌเชฆเชฒเชตเชพเชจเซ€ เชตเซเชฏเชตเชธเซเชฅเชพ เช•เชฐเซ‡.

เชธเชซเชณ เชนเซเชฎเชฒเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเชพ เชฐเซ‚เชŸ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชชเชฎเชพเช‚ เชจเชตเซ€ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฌเชพเชนเซเชฏ เชกเซ‡เชŸเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‡, เช…เชจเซ‡ เชคเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชถเชจ เช—เซ‡เชœเซ‡เชŸเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชธเช‚เชถเซ‹เชงเชฟเชค เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡. เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช เชฌเชฆเชฒเชตเชพเชจเซเช‚ Node.js เชฎเชพเช‚ โ€œ__proto__โ€ เช…เชจเซ‡ โ€œconstructorโ€ เชธเชฐเซเชตเชฟเชธ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เช เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€เชจเซ‡ เชชเชฐเชฟเชชเซ‚เชฐเซเชฃ เชฅเชพเชฏ เช›เซ‡. "__เชชเซเชฐเซ‹เชŸเซ‹__" เช—เซเชฃเชงเชฐเซเชฎ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเชพ เชตเชฐเซเช—เชจเชพ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชชเชจเซ‡ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ "เช•เชจเซเชธเซเชŸเซเชฐเช•เซเชŸเชฐ" เช—เซเชฃเชงเชฐเซเชฎ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชคเซเช‚ เชซเช‚เช•เซเชถเชจ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡.

เชœเซ‹ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชกเชฎเชพเช‚ "obj[a][b] = เชฎเซ‚เชฒเซเชฏ" เช…เชธเชพเช‡เชจเชฎเซ‡เชจเซเชŸ เชนเซ‹เชฏ เช…เชจเซ‡ เชฎเซ‚เชฒเซเชฏเซ‹ เชฌเชพเชนเซเชฏ เชกเซ‡เชŸเชพเชฎเชพเช‚เชฅเซ€ เชธเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเซ‹เชฏ, เชคเซ‹ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ "__proto__" เชฎเซ‚เชฒเซเชฏ เชชเชฐ "a" เชธเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชชเซ‹เชคเชพเชจเซ€ เชฎเชฟเชฒเช•เชคเชจเซเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชนเชพเช‚เชธเชฒ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเชพ เชฐเซเชŸ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชชเชฎเชพเช‚ "b" เชจเชพเชฎ เช…เชจเซ‡ เชฎเซ‚เชฒเซเชฏ "เชฎเซ‚เชฒเซเชฏ" เชธเชพเชฅเซ‡ (obj.__proto__.b = value;), เช…เชจเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชชเชฎเชพเช‚ เชธเซ‡เชŸ เช•เชฐเซ‡เชฒเซ€ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€ เชคเชฎเชพเชฎ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชฆเซ‡เช–เชพเชถเซ‡. เชคเซ‡เชตเซ€ เชœ เชฐเซ€เชคเซ‡, เชœเซ‹ เช•เซ‹เชกเชฎเชพเช‚ "obj[a][b][c] = value" เชœเซ‡เชตเชพ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เชนเซ‹เชฏ, เชคเซ‹ "a" เชจเซ‡ "constructor" เชตเซ‡เชฒเซเชฏเซ เชชเชฐ เช…เชจเซ‡ "b" เชจเซ‡ "เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช" เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เชนเชพเชฒเชจเชพ เชคเชฎเชพเชฎ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชฎเชพเช‚ "c" เชจเชพเชฎ เช…เชจเซ‡ เชฎเซ‚เชฒเซเชฏ "เชฎเซ‚เชฒเซเชฏ" เชธเชพเชฅเซ‡ เชจเชตเซ€ เชฎเชฟเชฒเช•เชคเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‹.

เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช เชฌเชฆเชฒเชตเชพเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ: const o1 = {}; const o2 = เชจเชตเซ‹ เช‘เชฌเซเชœเซ‡เช•เซเชŸ(); o1.__proto__.x = 42; // เชฐเซ‚เชŸ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช console.log (o2.x) เชฎเชพเช‚ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€ "x" เชฌเชจเชพเชตเซ‹; เช…เชจเซเชฏ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชฎเชพเช‚เชฅเซ€ // เชเช•เซเชธเซ‡เชธ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€ "x" // เช†เช‰เชŸเชชเซเชŸ 42 เชนเชถเซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸ o1 เชฆเซเชตเชพเชฐเชพ เชฐเซ‚เชŸ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เชœเซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸ o2 เชฎเชพเช‚ เชชเชฃ เชตเชชเชฐเชพเชฏ เช›เซ‡.

เชธเช‚เชตเซ‡เชฆเชจเชถเซ€เชฒ เช•เซ‹เชกเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ: เชซเช‚เช•เซเชถเชจ เชเชจเซเชŸเซเชฐเซ€เชชเซ‹เชˆเชจเซเชŸ (arg1, arg2, arg3){ const obj = {}; const p = obj[arg1]; p[arg2] = arg3; เชชเชฐเชค เชชเซ€; }

เชœเซ‹ เชเชจเซเชŸเซเชฐเซ€เชชเซ‹เชˆเชจเซเชŸ เชซเช‚เช•เซเชถเชจ เชฆเชฒเซ€เชฒเซ‹ เช‡เชจเชชเซเชŸ เชกเซ‡เชŸเชพเชฎเชพเช‚เชฅเซ€ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ "__proto__" เชฎเซ‚เชฒเซเชฏเชจเซ‡ arg1 เชชเชฐ เชชเชธเชพเชฐ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชฐเซ‚เชŸ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชชเชฎเชพเช‚ เช•เซ‹เชˆเชชเชฃ เชจเชพเชฎ เชธเชพเชฅเซ‡ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ arg2 เชจเซ‡ "toString" เชฎเซ‚เชฒเซเชฏ เช…เชจเซ‡ arg3 เชฎเซ‚เชฒเซเชฏ 1 เชชเชพเชธ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ "toString" เช—เซเชฃเชงเชฐเซเชฎเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ (Object.prototype.toString=1) เช…เชจเซ‡ toString() เชชเชฐ เช•เซ‰เชฒ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เซเชฐเซ‡เชถ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เช•เซ‹เชก เชเช•เซเชเชฟเช•เซเชฏเซเชถเชจ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชถเช•เซ‡ เชคเซ‡เชตเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชฎเชพเช‚ "เชฎเซเช–เซเชฏ", "เชถเซ‡เชฒ", "เชจเชฟเช•เชพเชธ", "เชธเช‚เชฆเชฐเซเชญ เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจเซเชธ" เช…เชจเซ‡ "env" เช—เซเชฃเชงเชฐเซเชฎเซ‹เชจเซ€ เชฐเชšเชจเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเชพ เชฐเซเชŸ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชชเชฎเชพเช‚ "เชฎเซเช–เซเชฏ" เช—เซเชฃเชงเชฐเซเชฎ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡, เชคเซ‡เชฎเชพเช‚ เชคเซ‡เชจเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เชฎเชพเชฐเซเช— เชฒเช–เซ€ เชถเช•เซ‡ เช›เซ‡ (Object.prototype.main = โ€œ./../../pwned.jsโ€) เช…เชจเซ‡ เช† เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เชจเซ‡ เช•เชจเซเชธเซเชŸเซเชฐเช•เซเชŸ เชœเชฐเซ‚เชฐเซ€("my-package") เชจเชพ เช•เซ‹เชกเชฎเชพเช‚ เช…เชฎเชฒเชจเชพ เชธเชฎเชฏเซ‡ เชฌเซ‹เชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชœเซ‹ เชธเชฎเชพเชตเซ‡เชฒ เชชเซ‡เช•เซ‡เชœ เชชเซ‡เช•เซ‡เชœ.json เชฎเชพเช‚ "เชฎเซเช–เซเชฏ" เช—เซเชฃเชงเชฐเซเชฎเชจเซ‡ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชคเซเช‚ เชจเชฅเซ€ (เชœเซ‹ เชฎเชฟเชฒเช•เชค เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชจ เชนเซ‹เชฏ เชคเซ‹, เชคเซ‡ เชฐเซ‚เชŸ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชชเชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡). "เชถเซ‡เชฒ", "เชจเชฟเช•เชพเชธ" เช…เชจเซ‡ "env" เช—เซเชฃเชงเชฐเซเชฎเซ‹ เชธเชฎเชพเชจ เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เชพเชฏ เช›เซ‡: เชšเชพเชฒเซ‹ rootProto = Object.prototype; rootProto["exports"] = {".":"./changelog.js"}; rootProto["1"] = "/path/to/npm/scripts/"; // เชŸเซเชฐเชฟเช—เชฐ เช•เซ‰เชฒ เช†เชตเชถเซเชฏเช• เช›เซ‡(."/target.js"); Object.prototype.main = "/path/to/npm/scripts/changelog.js"; Object.prototype.shell = "เชจเซ‹เชก"; Object.prototype.env = {}; Object.prototype.env.NODE_OPTIONS = "โ€”inspect-brk=0.0.0.0:1337"; // เชŸเซเชฐเชฟเช—เชฐ เช•เซ‰เชฒ เช†เชตเชถเซเชฏเช• เช›เซ‡("เชฌเชพเช‡เชŸเซเชธ");

เชธเช‚เชถเซ‹เชงเช•เซ‹เช เชธเซŒเชฅเซ€ เชตเชงเซ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเชพเชฅเซ‡ 10 NPM เชชเซ‡เช•เซ‡เชœเซ‹เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เชœเชพเชฃเชตเชพ เชฎเชณเซเชฏเซเช‚ เช•เซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ 1958 เชชเซ‡เช•เซ‡เชœ.jsonเชฎเชพเช‚ เชฎเซเช–เซเชฏ เชฎเชฟเชฒเช•เชค เชจเชฅเซ€, 4420 เชคเซ‡เชฎเชจเชพ เชœเชฐเซ‚เชฐเซ€ เชจเชฟเชตเซ‡เชฆเชจเซ‹เชฎเชพเช‚ เชธเช‚เชฌเช‚เชงเชฟเชค เชชเชพเชฅเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ 355 เชธเซ€เชงเชพ เช†เชฆเซ‡เชถ เช…เชตเซ‡เชœเซ€ APIเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡.

เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เช‰เชฆเชพเชนเชฐเชฃ เช เชชเชพเชฐเซเชธ เชธเชฐเซเชตเชฐ เชฌเซ‡เช•เชเชจเซเชก เชชเชฐ เชนเซเชฎเชฒเซ‹ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชถเซ‹เชทเชฃ เช›เซ‡ เชœเซ‡ evalFunctions เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เชจเซ‡ เช“เชตเชฐเชฐเชพเช‡เชก เช•เชฐเซ‡ เช›เซ‡. เช†เชตเซ€ เชจเชฌเชณเชพเชˆเช“เชจเซ€ เช“เชณเช–เชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชเช• เชŸเซ‚เชฒเช•เซ€เชŸ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ เชœเซ‡ เชธเซเชฅเชฟเชฐ เช…เชจเซ‡ เช—เชคเชฟเชถเซ€เชฒ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡. Node.js เชจเชพ เชชเชฐเซ€เช•เซเชทเชฃ เชฆเชฐเชฎเชฟเชฏเชพเชจ, 11 เช—เซ‡เชœเซ‡เชŸเซเชธ เช“เชณเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชนเซเชฎเชฒเชพเช“เชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เชœเซ‡ เชนเซเชฎเชฒเชพเช–เซ‹เชฐเชจเชพ เช•เซ‹เชกเชจเชพ เช…เชฎเชฒ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡. เชชเชพเชฐเซเชธ เชธเชฐเซเชตเชฐ เช‰เชชเชฐเชพเช‚เชค, เชฌเซ‡ เชถเซ‹เชทเชฃเช•เซเชทเชฎ เชจเชฌเชณเชพเชˆเช“เชจเซ‡ เชชเชฃ NPM CLI เชฎเชพเช‚ เช“เชณเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹