рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
Diary.ru рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рджреМрд░рд╛рди (рдФрд░ рдпрд╣ 4 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ), рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреА рдПрдХ рдмрдбрд╝реА рд░рд╛рд╢рд┐ рдЬрдорд╛ рд╣реЛ рдЧрдИ рд╣реИ: рдХреБрдЫ рдкреНрд▓рдЧ-рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдереЗ, рдХреБрдЫ рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рдг рдорд╛рд░реНрдХрдЕрдк рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ, рдФрд░ рдХреБрдЫ рд╕реАрдзреЗ
StringBuilder
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб-рдкреАрдЫреЗ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдереЗред рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
- рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдмрдврд╝рддреА рд╕рдВрдЦреНрдпрд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓
<head>
рдЯреИрдЧ рдореЗрдВ рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдкрд░ 11 рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╛рдЗрд▓реЗрдВ рднрд░реА рд╣реБрдИ рдереАрдВ; - рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдЬреЛ рдХрднреА-рдХрднреА рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рддреЗ рд╣реИрдВ;
рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рд╣рдордиреЗ рдЦреБрдж рдХреЛ рдкрд╣рд▓реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛: рдПрдХ рд╣реЗрдбреАрдлрд╛рдЗрдб рдкреИрдХреЗрдЬ рдореЗрдВ
<head>
рд╕реЗ рд╕рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрд╕реА рд╕рдордп, рдХреЛрдб рдХреЛ рддреГрддреАрдп-рдкрдХреНрд╖ рдФрд░ "рд╣рдорд╛рд░рд╛" рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд╛рд░реНрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереАред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред
рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдирд╛ рдерд╛ рдХрд┐ рд╣рдо рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЖрдпреЛрдЬрди рдХрд┐рд╕ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░реЗрдВрдЧреЗред рдмреЗрд╢рдХ, рдЖрдк рдЪреАрдВрдЯреА рд╕реЗ MSBuild рддрдХ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдЖрдк рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрдмреА рдпрд╛ рдкрд╛рдпрдерди рдореЗрдВред рдирддреАрдЬрддрди, рд╣рдордиреЗ рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХреЛ рди рд▓рд┐рдЦрдиреЗ рдФрд░ рдПрдХ рдЯреНрд░реИрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдирд╛рдЦреВрдиреЛрдВ рдХреЛ рд╣рдереМрдбрд╝рд╛ рдирд╣реАрдВ рдХрд░рдиреЗ, рдмрд▓реНрдХрд┐
рдЧреНрд░рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ:
рдЧреНрд░рдВрдЯ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯрд╛рд╕реНрдХ рд░рдирд░ рд╣реИ, рдпрд╣
рдиреЛрдб.рдЬреЗрдПрд╕ рдкрд░
рдЪрд▓рддрд╛ рд╣реИ , рдФрд░ рдПрдХ рдореБрдлреНрдд
рдЖрдИрдЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░рд┐рд╢реНрддреЗрджрд╛рд░ "рдпреБрд╡рд╛" рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЦреБрдж рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рдЪреБрдХрд╛ рд╣реИ - рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдбреЛрдм рдореЗрдВ рдЯреНрд╡рд┐рдЯрд░ рдФрд░ рдмреНрд░реИрдХреЗрдЯ рдкрд░ jQuery рдФрд░ рдХреНрд╡рдирд┐рдЯ, рдЯреНрд╡реАрдЯреЗрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдХрд╛рд░рдг рдереЗ рдХрд┐ рд╣рдордиреЗ рдЧреНрд░рдВрдЯ рдХреЛ рдХреНрдпреЛрдВ рдЪреБрдирд╛:
- рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА - рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдиреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдиреЛрдб.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреЛрдб рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрд╕рд╣рд┐рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, UglifyJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг, рдЬрд╛рдВрдЪ рдФрд░ рдирд┐рд░реНрдорд╛рдг рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдиреЛрдб.рдЬреЗрдПрд╕ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реЛрдЧрд╛ред
- рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЪрдпрди, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдПрдкреАрдЖрдИред
рд╡реИрд╕реЗ, рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ ASP.NET рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕реЗ
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд
рд╡реЗрдм рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЗрди рдирд┐рд░реНрдгрдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛:
- рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ;
- рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдЕрдиреБрд░реЛрдз рдкрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдСрдкрд░реЗрд╢рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдард┐рди рд╣реИ рдЬреЛ рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреЛрдИ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореИрдЪреЛрдВ рдкрд░ рдмрдЪрдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ , рд╣рдо рдЗрд╕рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реИрдВ - рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд░реНрд╡рд░ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рднрд╛рд░реА рд╕рдВрдЪрд╛рд▓рди рд╣реИрдВ;
рджреВрд╕рд░реА рдмрд╛рдд , рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдПрдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд╣реАрдВ рд╣реИ,
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реАрдбреАрдПрди рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпреЗ рдЙрдкрдХрд░рдг рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕ рд╕реЗ
рд╕реНрдкреНрд░реЛрдХреЗрдЯ рдХреЗ рд╕реНрддрд░ рддрдХ рдмрдврд╝ рдЬрд╛рдПрдВрдЧреЗ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рд╣рдо рдЙрдирдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред
рдЪрд▓реЛ рдЪрд▓реЗрдВ!
рдЗрд╕рд▓рд┐рдП, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдХреЗ рдХрдерди рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдЖрд░рдХреНрд╖рдг рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди ASP.NET рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ), рдФрд░ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЯреАрдорд╕рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдерд╛ (рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ
рд▓реЗрдЦ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛) рд╡рд┐рдВрдбреЛрдЬред рдЗрд╕рд▓рд┐рдП, рд▓реЗрдЦрдХ рдпреВрдирд┐рдХреНрд╕-рддрд░рд╣ рдХреЗ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХреНрд╖рдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рд╡рд░реНрдгрди рд╡рд┐рдВрдбреЛрдЬ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкреВрд░реЗ рдЕрдиреБрднрд╡ рдХреЛ рдПрдХ рдЪреБрдиреМрддреА рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдПред
рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдиреЛрдб.рдЬреЗрдПрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реИ, рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ "рдиреЗрдХреНрд╕реНрдЯ" рдмрдЯрди рдореЗрдВ рдбрд╛рд▓рдирд╛ рд╣реИред рдиреЛрдб.рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде, рдПрдирдкреАрдПрдо рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдПрдХ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЧреНрд░рдВрдЯ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ
package.json
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо, рдЙрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг, рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдиреЛрдб рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
{ "name": "Dnevnik", "version": "0.1.0", "private": true, "dependencies": { "grunt": "0.4.0", "grunt-cli": "0.1.6", "grunt-contrib-concat": "0.1.3", "grunt-contrib-jshint": "0.2.0", "grunt-contrib-uglify": "0.1.1", "grunt-hash": "0.2.2", "grunt-contrib-clean": "0.4.0" }, "engines": { "node": "0.10.0" } }
рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ, рд╣рдо рдЧреНрд░рдВрдЯ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдг, рд╕рд╛рде рд╣реА рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ, рд╣рдордиреЗ рдХреЗрд╡рд▓ рдЫрд╣ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
grunt-cli
- рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЧреНрд░рдВрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиgrunt-contrib-concat
- рдПрдХ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ grunt-contrib-concat
рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиgrunt-contrib-jshint
- JSHint рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиgrunt-contrib-uglify
- UglifyJS2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиgrunt-hash
- рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рд░рд╛рд╢рд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди (рддрд╛рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреИрд╢ рдлрд╝реНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)grunt-contrib-clean
- рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рдлрд╛рдИ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди
рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдХрдорд╛рдВрдб рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ
package.json
рд╕реНрдерд┐рдд рд╣реИ:
> npm install
рд╕рдлрд▓ рд╕рдорд╛рдкрди рдХреЗ рдмрд╛рдж, рдлрд╝реЛрд▓реНрдбрд░
.\node_modules
рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рд╣реЛрдВрдЧреЗ (рдпрд╣
.\node_modules
рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдорд╛рдирдХ рдирд╛рдо рд╣реИ)ред
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ
Gruntfile.js
рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ
Gruntfile.js
рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ,
Gruntfile.js
рд╕рднреА рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
module.exports = function (grunt) { 'use strict'; grunt.initConfig({}); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-hash'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'hash', 'clean']); };
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдпрд╣ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдПрдХ рд░реИрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЧреНрд░рдиреНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ,
grunt.initConfig()
рдлрд╝рдВрдХреНрд╢рди, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ,grunt.loadNpmTasks()
рдлрд╝рдВрдХреНрд╢рди, рдЬреЛ grunt.loadNpmTasks()
рдкреИрдХреЗрдЬреЛрдВ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ,grunt.registerTask()
рдлрд╝рдВрдХреНрд╢рди, рдЬреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдкрдиреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ
grunt.initConfig()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
option
рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рд▓рдХреНрд╖реНрдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВред рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдореЗрдВ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖реНрдп рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдк
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЧреНрд░рдВрдЯ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
> .\node_modules\.bin\grunt.cmd
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдп рдФрд░ рд▓рдХреНрд╖реНрдп рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ
default
рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЙрди рдХреБрдЦреНрдпрд╛рдд 11 рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬрд┐рдирдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ jQuery рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рдорд╛рдгреБ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕рдВрдХреБрдЪрд┐рдд рдереЗ, рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп, рдкрдардиреАрдп рд░реВрдк рдореЗрдВ рд╕рднреА рдХреЛрдб рдЪрд╛рд╣рддрд╛ рдерд╛ред рдФрд░ рдЕрдЧрд░ jQuery рдХреЗ рдЧреИрд░-рд▓рдШреБ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдвреВрдВрдврдирд╛ рдЖрд╕рд╛рди рд╣реИ, рддреЛ рдХреБрдЫ рдкреНрд░рд╛рдЪреАрди рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдЦреЛрдЬрдирд╛ рдЕрдм рдЙрддрдирд╛ рддреБрдЪреНрдЫ рдирд╣реАрдВ рдерд╛, рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЯрд┐рдВрдХрд░ рдХрд░рдирд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд╛рдпрдХ рдерд╛: рдЕрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдИ рднреА рдХреЛрдбрд┐рдд рдХреЛрдб рдирд╣реАрдВ рдерд╛, рдФрд░ рдЖрдк рдбреАрдмрдЧрд░ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ jQuery рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдиреЛрдб.рдЬреЗрдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдореИрдкрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ (рдмреЗрд╢рдХ, рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛), рдЬрд┐рд╕рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рд╕реЗрдЯ рдХреЗ рдЕрдиреБрд░реВрдк рдерд╛ред рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ:
{"package.js": ["jquery.js", "foo.js", тАж "bar.js"]}
рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╢реБрд░реВ рд╣реБрдЖ, рддреЛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝реА рдЧрдИ, рдбреАрдЬрд╝рд░реАрд▓рд╛рдЗрдЬрд╝ рдХреА рдЧрдИ, рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреЗрдЬ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди, рдЧреНрд░рдВрдЯ рдиреЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА рдХрд┐ рдХрд┐рди рдкреИрдХреЗрдЬреЛрдВ рд╕реЗ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рдЗрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП рд╕реВрдЪреА рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рдмрдЬрд╛рдп рдЗрдХрдЯреНрдареЗ рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдирд╛рдо рдерд╛ред
рдЧреНрд░рдВрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, TeamCity рдореЗрдВ рд╕рднреА рдмрд┐рд▓реНрдб рдПрдЬреЗрдВрдЯреЛрдВ рдкрд░ рдиреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдФрд░ PowerShell рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдХрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдбрд╛рдЙрдирд▓реЛрдб рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╣ рдордд рд╕реЛрдЪрд┐рдП рдХрд┐ рдпрд╣ рдЯреНрд░реИрдлрд╝рд┐рдХ рдкрд░ рд╣рдорд╛рд░реА рд╕реНрдерд┐рд░рддрд╛ рдирд╣реАрдВ рд╣реИ - рд╣рдо рд╕рд┐рд░реНрдл рдЗрдВрдЯрд░рдиреЗрдЯ рдпрд╛ рдПрдирдкреАрдПрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ), рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рд▓реНрдб рдПрдЬреЗрдВрдЯ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдФрд░ рдХреЙрдкреА рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ред "рд╕рд╕реНрддрд╛ рдФрд░ рд╣рдВрд╕рдореБрдЦ," рд╣рдордиреЗ рд╕реЛрдЪрд╛ (рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ, рдиреАрдЪреЗ рдкрдврд╝реЗрдВ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐
.\node_modules
рдореЗрдВ рдкрде рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ Windows 260 рд╡рд░реНрдг (Hi, MS-DOS) рдореЗрдВ рдЕрдиреБрдордд рд╣реЛрдВ, рдЗрд╕рд▓рд┐рдП рдХреЙрдкреА рдФрд░ xcopy рдХрдорд╛рдВрдб рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЙрдбрд╝ рдЬрд╛рдПрдВрдЧреЗ; / рдИ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рд╡рд╣
рд░реЛрдмреЛрдХреЙрдкреА ред
рд╣рдореЗрдВ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рд╣реИред
рдЧреНрд░рдВрдЯ рдиреЗ рдЯреАрдорд╕рд┐рдЯреА рдкрд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдкрд╣рд▓реЗ рд╕реБрдЕрд░ рдХреЛ рдЦрд┐рд╕рдХрд╛рдпрд╛ - рд╣рдореЗрдВ рдЙрдирдХреЗ рдХрд╛рдо рдХрд╛ рдПрдХ рд▓реЙрдЧ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рд╣рдорд╛рд░реА рдкреЙрд╡рд░рд╢реЗрд▓ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдШреВрдордирд╛ рдФрд░ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рдорд╛рд░реА рддрд░рдл рдирд╣реАрдВ рд╣реИ, рд╣рдордиреЗ рдЧреНрд░рдВрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЗрд╢реНрдпреВ рдЯреНрд░реИрдХрд░ рдХреЛ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░
рд╡рд╣рд╛рдВ рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп
рд╕рдВрджреЗрд╢ рдкрд╛рдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рди рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдФрд░ рдпрд╣ рдиреЛрдб рдореЗрдВ рдПрдХ
рдмрдЧ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЬреЗрдПрд╕, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд╕реНрдЯрдб / stdout / stderr рд╕реНрдЯреНрд░реАрдо рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рд╣реИрдВред рд╡реЗ рдЗрд╕реЗ 0.12.0 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм, рдЧреНрд░рдВрдЯ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрдВрджрд░ рд╣реИрдХ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рдирд╣реАрдВ рд▓реЗрдирд╛ рдкрдбрд╝рд╛: рд╣рдордиреЗ рдЧреНрд░рдВрдЯ рдХреЛ рджреЛ рдмрд╛рд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ - рдкрд╣рд▓реА рдмрд╛рд░ рд╣рдореЗрдВ рд╕рд╣реА рдирд┐рдХрд╛рд╕ рдХреЛрдб рдорд┐рд▓рд╛, рдФрд░ рджреВрд╕рд░реЗ рдиреЗ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИред
рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдЧреНрд░рдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдЬреЛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рддрдХ рдореБрдЦреНрдп рднрдВрдбрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╕реАрдзреЗ рдЬреАрдердм рд╕реЗ
рдХрд╛рдВрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдФрд░ рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдПрдХ рдФрд░ рдкрд░реЗрд╢рд╛рдиреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдордиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЧреНрд░рдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рддреЛ рд╣рдорд╛рд░реЗ рдмрд┐рд▓реНрдб рдПрдЬреЗрдВрдЯ рдкрд╛рд░реНрдХ рдореЗрдВ рдХреЗрд╡рд▓ рддреАрди рдХрд╛рд░реЗрдВ рдереАрдВред рдЕрдм рдЙрдирдореЗрдВ рд╕реЗ рдЖрда рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рдХреЙрдкреА рдХрд░рдирд╛ рдПрдХ рдердХрд╛рдК рдХрд╛рдо рд╣реИред рджреЛ рдмрд╛рд░ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛, рд╣рдордиреЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдПрдирдкреАрдПрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣рд▓рдЪрд▓ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд╣рд╛рдВ рд╣рдо рд╣рдореЗрд╢рд╛ рдкреИрдХреЗрдЬ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╣рд╛рдВ рд╣рдо рдХрдиреЗрдХреНрд╢рди рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреИрдХреЗрдЬ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ npm рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА
CouchDB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдФрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдордиреЗ рдЬрд▓реНрджреА рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (рдлрд┐рд░ рд╕реЗ, рд╡рд┐рдВрдбреЛрдЬ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ) рдХреЛ рдЙрдард╛рдпрд╛ рдФрд░ рдЙрд╕ рдкрд░ CouchDB рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ - рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ CouchDB рдореЗрдВ рджреЛ рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛
<CouchDB install directory>\etc\couchdb\local.ini
:
secure_rewrites = false bind_adress = 0.0.0.0
рдЖрдк рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ 5984 рдкреЛрд░реНрдЯ рдкрд░ рдирд┐рдпрдорд┐рдд GET рдЕрдиреБрд░реЛрдз рднреЗрдЬрдХрд░ рдФрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
{"couchdb":"Welcome","version":"1.2.1"}
рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдХреЗрд╡рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ, рдЖрдк рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
> npm shrinkwrap
рд╡рд╣
npm-shrinkwrap.json
рдмрдирд╛рдПрдЧреА, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЖрд╢реНрд░рд┐рддреЛрдВ рд╕рд╣рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдирд╛рдореЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдХрд░ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдореЗрд╣рдирдд рдХрд░рдиреА рд╣реЛрдЧреА рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдорд┐рд▓ рдЬрд╛рдПрдЧреА (рдореИрдВ рдЗрд╕рдХрд╛ рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИ)ред рд╕рдВрдХреБрд▓ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдирдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рдЙрдЪрдмреАрдбреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп HTTP рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП
curl
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ JSON рдлрд╝рд╛рдЗрд▓
deps.json
рдЬрд┐рд╕реЗ
deps.json
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
{ "source": "http://isaacs.iriscouch.com/registry/", "target": "registry", "create_target": true, "doc_ids": ["_design/app", "_design/ghost"] }
рдЬрд╣рд╛рдБ
"doc_ids"
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕реВрдЪреА (рд╕рдВрдХреБрд▓
"_design/app"
,
"_design/ghost"
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ) рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЕрдм рдХреЗрд╡рд▓ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
> .\curl.exe -X POST http://user:password@npm:5984/_replicate -d@deps.json -H "Content-Type: application/json"
рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд┐рд░ рд╕реЗ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реЛрдЧреА, рдФрд░ рдпрд╣ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ:
"ok"
рдФрд░
"doc_write_failures"
ред рдпрджрд┐ рдкрд╣рд▓рд╛
true
рдФрд░ рджреВрд╕рд░рд╛
0
, рддреЛ рдкреИрдХреЗрдЯ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕рдлрд▓ рд░рд╣рд╛ред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рдХрд░рдирд╛ рдмрд╛рдХреА рдерд╛, рд╡рд╣ рдЧреНрд░рдВрдЯ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рдХреЗ рд╕рд╛рде рдЬреАрдердм рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд╛рдВрдЯрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХрд╛рдВрдЯреЗ рдХреЗ
package.json
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ, рд╕реНрдерд╛рдиреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЗрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ:
> npm adduser --registry="http://npm:5984/registry/_design/app/_rewrite/"
рдФрд░ рдкреИрдХреЗрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ:
> npm publish --registry="http://npm:5984/registry/_design/app/_rewrite/"
рдпрд╣реА рд╣реИ, рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреИрдХреЗрдЬ рд╣рдорд╛рд░реА рд╕реНрдерд╛рдиреАрдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕рд┐рд░реНрдл
package.json
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдм, рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП):
> npm install --registry="http://npm:5984/registry/_design/app/_rewrite/"
рд╡реИрд╕реЗ, рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣рдордиреЗ рдЯреАрдорд╕рд┐рдЯреА рдкрд░ рдЧреНрд░рдВрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЙрд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред рдкреНрд▓рдЧрдЗрди
TeamCity.Node рдХрд╣рд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ
TeamCity рдкрд░ рдиреЛрдб .js рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕, npm, рдЧреНрд░рдВрдЯ рдФрд░ рдлреИрдВрдЯрдордЬрд╕ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣ рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмрд┐рд▓реНрдб рдПрдЬреЗрдВрдЯ рдкрд░ n.js рдФрд░ npm рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЬрдмрдХрд┐ рд╣рдо рдЙрд╕рдХреЗ рдХрд╛рдо рд╕реЗ рдмрд┐рд▓рдХреБрд▓ рдЦреБрд╢ рд╣реИрдВ, рдЕрдЧрд░ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЙрд╕рдХреА рдорджрдж рд╕реЗ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдо рдПрдЬреЗрдВрдЯреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдиреЛрдб.рдЬреЗрдПрд╕ рд▓рдЧрд╛рдирд╛ рднреВрд▓ рдЧрдП рд╣реИрдВред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рд╣рдо рдиреЛрдб.рдЬреЗрдПрд╕ 0.12 рдФрд░ рдЧреНрд░рдиреНрдЯ 0.5 рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдореИрдкрд┐рдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рд╣рдореЗрдВ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдо рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред