рд╕реНрд░реЛрдд рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдкрд░рд┐рдЪрдп

рдЖрдзреБрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдЖрдкрдХрд╛ рдХреЛрдб рд╕рдВрдХрд▓рди, рдЦрдирди, рд╡рд┐рд▓рдп рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рдж "рд▓рдбрд╝рд╛рдИ" рд╕рд░реНрд╡рд░ (рдЙрддреНрдкрд╛рджрди) рдкрд░ рдХреЛрдб рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрд░реЛрдд рдХреЗ рдирдХреНрд╢реЗ рдХрд╛рдо рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рд╕рдорд╛рдкреНрдд рдХрд╛рд░реНрдпрд╢реАрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рдХреЗ рддрддреНрд╡реЛрдВ рдФрд░ рдЖрдкрдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛрдб рдХреЗ рдмреАрдЪ рд╕рдЯреАрдХ рдкрддреНрд░рд╛рдЪрд╛рд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдкрд╛рда рдореЗрдВ, рд╣рдо рдПрдХ рд╕рд░рд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЗрдВрдЧреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреЛрдб рдореИрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

(рдЕрдиреБрд╡рд╛рдж рд╕реЗред) рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рд╕рдВрдХрд▓рд┐рдд) рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦ ( рдЕрдиреБрд╡рд╛рдж ) рдерд╛ред рдЕрдм рдпрд╣ рддрдХрдиреАрдХ рдЖрдХреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рд╕реВрд░реНрдп рдХреЗ рдиреАрдЪреЗ рдЕрдкрдиреА рдЬрдЧрд╣ рдЬреАрдд рд░рд╣реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрдм рдХреЗрд╡рд▓ рдорд╛рдирдЪрд┐рддреНрд░рдг рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рд╣реЛрддреА рдереА, рдФрд░ рдЕрдм, рд╕рдВрд╕реНрдХрд░рдг 1.6.1 рд╕реЗ, рдХреЙрдлрд┐рд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рдХ рдХреЛ рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдорд┐рд▓рд╛ рд╣реИред Jetbrains Webstorm 6.0 / Phpstorm (рдорд╛рд░реНрдЪ 2013) рдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SourceMap рд╕рдорд░реНрдерди рдкреЗрд╢ рдХрд┐рдпрд╛ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 0.8.1 (рдирд╡рдВрдмрд░ 2012) рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдорд░реНрдерди рд╣реИ ред рд╣рд░ рдХреЛрдИ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдкрд░ "рдЕрд╕реЗрдВрдмрд▓рд░" рдХреЗ рд╕рд╛рде рдореИрдиреБрдЕрд▓ рдХрд╛рдо рдХрд╛ рд╕рдордп рдЧреБрдЬрд░рддрд╛ рд╣реИ, рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреЛрдб рд╕реЗ рдкреИрд░ рдХрд╣рд╛рдБ рдмрдврд╝рддреЗ рд╣реИрдВред рд╣рдо рдорд┐рдирд┐рдлрд╝рд╛рдИ рдХрд┐рдП рдЧрдП рдлрд╝рд╛рдЗрд▓ рдХреЛрдб рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - UglifyJS, рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ GWT (рдХрдо рд╕реЗ рдХрдо) рд╡реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдпрд╣ JS рдФрд░ CSS рдХреЛрдб рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ (рдЬрдирд╡рд░реА 2013 рдореЗрдВ) рдпрд╣ рдмрдбрд╝рд╛ рд╢реИрдХреНрд╖рд┐рдХ рд▓реЗрдЦ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛рддрд╛ рд╣реБрдЖ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдХрд┐ рдХреЛрдб рдХрд╛рд░реНрдб рддрдХрдиреАрдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рднреА рд╡рд┐рд╕реНрддреГрдд рдерд╛, рд▓реЗрдХрд┐рди рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рджреВрд╕рд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдЖрд╣рдд рдирд╣реАрдВ рд╣реБрдЖ, рдпрд╣ рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдФрд░ рджреГрд╖реНрдЯрд╛рдВрддреЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реИ, рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред

рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рд╕реЗ рджрд╣рд▓реАрдЬ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рд░реЛрдз рдХрд╛ рдЕрдиреБрднрд╡ рд╣реЛрддрд╛ рд╣реИред рдХреЛрдб рдХрд╛рд░реНрдб рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЗрд╕ рдмреАрдЪ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдорд╛рд╣реМрд▓ рдорд┐рд▓реЗрдЧрд╛ - рд╡реЗ рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рдорд┐рдирд┐рдлрд╝рд╛рдпрд░ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдЬрд╛рдирддреЗ рдереЗ рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдбрд░рддреЗ рдереЗ, рд╣рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╣рдо рдХреЗрд╡рд▓ рд▓рд┐рдЦреЗрдВрдЧреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЪреАрдиреА рджреГрд╢реНрдп рднрд╛рд╖рд╛рдУрдВ рддрдХ рд╡рд┐рджреЗрд╢реА рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЖрдкрдХрд╛ рдХреЛрдбред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдЧреНрд░рдиреНрдЯ 0.4+ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ 0.3.9 рд╕реЗ 0.4x рдореЗрдВ habrahabr.ru/post/170937 ред

рд▓реЗрдЦрдХ рдиреЗ Mas рд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП, рд╡реЗ рд╡рд┐рдВрдбреЛрдЬ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдХреНрд░реЛрдо рдХреЗ рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВред

рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрджрд┐ рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкреНрд░рд╢реНрди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рд╕рднреА рдЙрджрд╛рд╣рд░рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреБрд╡рд╛рдж рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдЖрдзреБрдирд┐рдХ (рдЕрдкреНрд░реИрд▓ 2013 рддрдХ) рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЧрдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, 5 рдореЗрдВ рд╕реЗ 2 рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд╕реБрдзрд╛рд░ рдХрд┐рдП рдЧрдП рдереЗ рдЬреЛ рдЕрдиреБрд╡рд╛рдж рд▓реЗрдЦ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦреЗ рдЧрдП рдереЗред (рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдХреЛ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред) рд╡реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рдХрд░реАрдм рд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ - рджреЛрдиреЛрдВ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧреНрд░рдиреНрдЯ 0.4 тАЛтАЛрдФрд░ рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ 1.6.1) рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рднреАред

рдЕрдЧрд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓реЗрдЦрдХ рдХреЗ рдЧрд┐рдЯрдм рдкрд░ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЗрд╕рдореЗрдВ 260 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рдкрде рд╣реИ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ WinRar рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИ (рд▓реЗрдХрд┐рди рдпрд╣ рдЙрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрдн рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ)ред рдкреВрд░реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рдЕрдирдЭрд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рд╕рдВрдкреВрд░реНрдг рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ), рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рд╕реНрдерд╛рдкрд┐рдд рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдЖрдкрдХреЛ рд╡рд┐рдирд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ 7zip рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рджреЛрдиреЛрдВ рд▓реЗрдЦ - рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рдФрд░ рдорд╛рдиреЗ рдЧрдП - рдкреБрд░рд╛рдиреЗ рд╣реИрдВ (рдХрдИ рдХрдерди рд╡рд░реНрддрдорд╛рди рдХреНрд╖рдг рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИрдВ), рдпрд╣ рдкреНрд░рд╢реНрди, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд▓реЗрдЦ рдорд╛рдирдЪрд┐рддреНрд░рдг рдФрд░ рдЪрд╛рд▓реВ рджреЛрдиреЛрдВ рдкрд░ рдПрдХ рдЖрдзреБрдирд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдмрди рдЬрд╛рдПред рдЖрдЬ рдХреЗ рд▓рд┐рдП рдЯреВрд▓ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рд╕реНрдерд┐рддрд┐ред


рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдХреНрдпрд╛ рд╣реИрдВ?


рдХреЛрдб рдХрд╛рд░реНрдб рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдп рдХреЛрдб рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб (рд╕реНрд░реЛрдд) рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдПрдХ рднрд╛рд╖рд╛-рд╕реНрд╡рддрдВрддреНрд░ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреЗ рдкреВрд░реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рд░рдгреА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрддрд┐рдо рдХреЛрдб рдХреЗ рдЕрдиреБрднрд╛рдЧ рдФрд░ рдЙрд╕рдХреЗ рд╕реНрд░реЛрдд рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рдЦреЛрдЬрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреЛрдб рдХрд╛рд░реНрдб рдЗрди рдкрддреНрд░рд╛рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рд╣рдо рдкреВрдЫрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕реНрдерд╛рди, рдпрд╣ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдЯреАрдХ рд╕реНрдерд╛рди рджрд┐рдЦрд╛рдПрдЧрд╛! рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд▓рд╛рднрдХрд╛рд░реА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдкрдардиреАрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбреАрдмрдЧ рднреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ!

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдо JS + SASS рдХреЛрдб рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЯреБрдХрдбрд╝рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдХреЛрдб рдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред рдбреЗрдореЛ рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЖрд░рдВрдн рдХрд░реЗрдВ!

рдЪреВрдВрдХрд┐ рдЧреНрд░рдВрдЯ (0.4) рдХрд╛ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рд▓реЗрдЦрдХ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЕрдиреБрд╡рд╛рдж рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ ред рдЙрдирдореЗрдВ рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреЛрдиреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ, рддрд╛рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдФрд░ рд╕рдлрд▓рддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХреЗрдВ - рдзреНрдпрд╛рди рджреЗрдВред ред


рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, Chrome рд╕рдВрд╕реНрдХрд░рдг 23 JS рдФрд░ SASS SourceMaps рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЛ рднреА рд╕рдорд░реНрдерди рдорд┐рд▓реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рд╖рдп рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдХреНрд░рд┐рдп рдЪрд░рдг рдореЗрдВ рд╣реИред рдЗрди рдХреИрд╡рд┐рдЯреАрдЬрд╝ рдХреЗ рд╕рд╛рде, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХрд┐рд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреЛрдб рдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред

(рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред :) рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЕрдВрдд рдореЗрдВ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ + рдлрд╛рдпрд░рдмрдЧ рдореЗрдВ рдПрд╕рдПрдПрд╕ рдХреЗ рд▓рд┐рдП рд╕реЛрд░реНрд╕рдкрд╛рдЗрдк рд╕рдорд░реНрдерди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдирдпрд╛: рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ DevTools рдХрд╛ рднрд╡рд┐рд╖реНрдп (рдорд╛рд░реНрдЪ 17, 2013) рдпрд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд :
тАЬCoffeeScript рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ SourceMap рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ред рдирд┐рдХ рдлрд┐рдЯреНрдЬрдЧреЗрд░рд╛рд▓реНрдб рдбрд┐рдмрдЧрд░ рд╡рд░реНрдЬрди рд╕рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕реЛрд░реНрд╕рдкрд╛рдЗрдк рдФрд░ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ

рдирд┐рдХ рдХрд╛ рдХрд╛рдо рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓ рдХреЗ рдорд┐рдирд┐рдорд╛рдЗрдЬреЗрд╢рди рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред тАЭ

*) wiki.mozilla.org/DevTools/Features/SourceMap


рдХреНрд░реЛрдо рдореЗрдВ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдореИрдкрд┐рдВрдЧ рд╕рдорд░реНрдерди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
1) рдХреНрд░реЛрдо рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдВ: рджреЗрдЦреЗрдВ -> рдбреЗрд╡рд▓рдкрд░ -> рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ (F12);
2) рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ "рд╕реЗрдЯрд┐рдВрдЧ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ;
3) "рд╕рд╛рдорд╛рдиреНрдп" рдФрд░ "рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ" рдЪреБрдиреЗрдВред

рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП (рдЕрдиреБрд╡рд╛рдж рд╕реЗ) :
1) рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдкреНрд░рдмрдВрдзрди (рдКрдкрд░реА рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ) (F12);
2) рдбреЗрд╡рд▓рдкрд░ рдХреА рд╡рд┐рдВрдбреЛ рдореЗрдВ - рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ "рд╕реЗрдЯрд┐рдВрдЧ";
3) "рд╕реНрд░реЛрдд" рдмреНрд▓реЙрдХ рдореЗрдВ "рд╕рд╛рдорд╛рдиреНрдп" рдФрд░ "рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ" рдЪреБрдиреЗрдВред


рд╕реНрдерд╛рдкрдирд╛


рдбреЗрдореЛ рд╕рдВрдЧреНрд░рд╣ (рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рдордп рд╕рддреНрдпрд╛рдкрд┐рдд рдЕрдиреБрд╡рд╛рджрдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ "рдкреНрд░рд╛рд░рдВрдн" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЦреЛрд▓реЗрдВред рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ / script.js рдореЗрдВ рд╕рд░рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд╕рд╛ред Index.html рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд▓рд░ рдХреЛрдб рджрд░реНрдЬ рдХрд░рдХреЗ рдкреГрд╖реНрда рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рдмрджрд▓ рджреЗрддреА рд╣реИред



/start тФЬтФАтФА index.html тФЬтФАтФА /scripts тФВ тФЬтФАтФА jquery.d.ts тФВ тФЬтФАтФА script.coffee.coffee тФВ тФЬтФАтФА script.js тФВ тФФтФАтФА script.typescript.ts тФФтФАтФА /styles тФЬтФАтФА style.css тФФтФАтФА style.sass 

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЗрдЦреЗрдВред
рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдХрд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдХрд╛рд░реНрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗред

рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдиреНрдпреВрдирддрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП 5 рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЖрдк рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВред

рд╡рд┐рдХрд▓реНрдк:
1. рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ ред
2. рдЬреЗрдПрд╕рдПрдордЖрдИрдПрди рдХреЗ рд╕рд╛рде рдЧреНрд░рдВрдЯрдЬ ред
3. рдЙрд▓рдЧреБрд▓рд┐рдЬ 2 ред
4. рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ Redux ред
5. рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ ред

рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкрд░рд┐рд╢реЛрдзрди рдХреЗ рдмрд╛рдж, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреЗрдбрд╝реЗ рдХреЛ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

JSMin рдХреЗ рд╕рд╛рде 2.a рдЧреНрд░рдВрдЯрдЬ (0.4.x) ред
4.a рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ - рд░реЗрдбрдХреНрд╕ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг 1.6.2 ред

рдкрд╣рд▓реЗ рдореЗрдВ, рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдлрд░рд╡рд░реА 2013 рддрдХ рдореМрдЬреВрджрд╛ рд╕рдВрд╕реНрдХрд░рдг 0.3.x рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред рджреВрд╕рд░реЗ рдореЗрдВ - рдореИрдкрд┐рдВрдЧ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдФрд░ рдкрд░реАрдХреНрд╖рдг, рдЬреЛ рдлрд░рд╡рд░реА 2013 рдореЗрдВ рдХреЙрдлрд┐рд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 1.6.1 рд╕реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред (рд╕рд┐рддрдВрдмрд░ 2012 рд╕реЗ, рдпрд╣ рднреВрдорд┐рдХрд╛ рдПрдХ рдХреНрд▓реЛрди рджреНрд╡рд╛рд░рд╛ рдирд┐рднрд╛рдИ рдЧрдИ рд╣реИ - рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реЗрдбрдХреНрд╕ред)


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

 var lHash = location.hash.substr(1).split('='); if(lHash && lHash.length ==2 && lHash[0] =='option') var optionName = lHash[1]; if(optionName && !parseInt(optionName)) optionName = {closure:1,jsmin:2,uglifyjs:3,coffeescript:4,typescript:5}[optionName.toLowerCase()]; console.log(optionName); optionName = optionName ||0; var loadScript; (loadScript = function(i){ var scr = document.createElement('SCRIPT'); scr.setAttribute('type', 'application/javascript'); scr.src ='scripts/script.' + ('|closure|jsmin-grunt|uglify|coffee.min|typescript.min'.split('|')[i]) +(i?'.':'') +'js'; document.getElementsByTagName('head')[0].appendChild(scr); })(optionName); 

рдЕрдм рд╣рдореЗрдВ рдХреЛрдб рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдорд┐рд▓рд╛, рдЙрдиреНрд╣реЗрдВ рдкрд╛рд▓рди рдХрд░рдиреЗ рдФрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред рдПрдХ рдПрдВрдХрд░ # рд╡рд┐рдХрд▓реНрдк = <рдирдВрдмрд░> рдпрд╛ # рд╡рд┐рдХрд▓реНрдк = <example_name> рдпрд╛ рдПрдХ рд▓рд╛рдкрддрд╛ (рдпрд╛ рдкреНрд░рд╛рд░реВрдк рддреНрд░реБрдЯрд┐) рдПрдВрдХрд░ рдЬреЛрдбрд╝рдирд╛, рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрд╕реАрд╕реА рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдПрдЧрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рддрд╣рдд рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдФрд░ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рд╕реНрд╡рд┐рдЪ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдирдлреНрд░реЗрдВрдбрд▓реА рд╣реИ - рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рд╕рд╛рдордиреЗ рд╢рд╛рд░реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рдореМрдЦрд┐рдХ рд░реВрдк рдореЗрдВ рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯрдЪ рдЕрдк:
 var colr = $("#color").val().toUpperCase() , cL = colr.length; for(var i in cL) if(cL[i] <'0'|| cL[i] >'9'&& cL[i] <'A'|| cL[i] >'F') //  hex- break; document.body.style.backgroundColor = (colr.charAt[0] !='#' && i < cL ?'':'#') + colr; 

рд╕рдВрднрд╡рддрдГ, рдпрд╣ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдЖрджрд┐рдорддрд╛ рдХреЗ рдХрд╛рд░рдг рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдпрдерд╛, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдирд╡реАрдирддрдо рдмрд┐рд▓реНрдб рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдХреЛрдб рдореЗрдВ рдПрдХ рдЕрдиреБрдХреВрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рдмрд╛рдж рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдХреЛрдб рдореЗрдВ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд┐рдо рд▓реЛрдбрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдПрдВрдХрд░ рд░реАрдбрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╣ рд╕рдм рдПрдХ рдХреЙрдлреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдмрд┐рд▓реНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдо рдЖрджрд┐рдорддрд╛ рдХреЗ рд╕рдордЭреМрддреЛрдВ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЕрдореВрд░реНрдд рдХреЗ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рд╡рд┐рдХрд▓реНрдк 1: рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░


Google рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдХреВрд▓рди рдЙрдкрдХрд░рдг рд╣реИред рдпрд╣ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕реЛрд░реНрд╕ рдореИрдк рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ:
 java -jar compiler.jar --js script.js --js_output_file script.closure.js 


рдЬрдм рд╣рдо рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ index.html рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдореЗрдВ рд╕реНрд░реЛрдд рдкреИрдирд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ script.closure.js рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИ; рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдореВрд▓ рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдХреЛрдб рдХрд╛рд░реНрдб рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ:

 java -jar compiler.jar --js script.js --create_source_map script.closure.js.map --source_map_format=V3 --js_output_file script.closure.js 


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ 2 рд╡рд┐рдХрд▓реНрдк - --create_source_map рдФрд░ --source_map_format рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ --source_map_format рд╣реИред рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рд╕рдВрд╕реНрдХрд░рдг 3 рдХреЗ рд╕рд╛рде рдПрдХ --source_map_format рдореИрдк script.closure.js.map ред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рдкреНрд░рднрд╛рд╡ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдХрд▓рд┐рдд script.closure.js рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрд░реЛрдд URL рдЬреЛрдбрд╝реЗрдВред script.closure.js рдлрд╝рд╛рдЗрд▓ script.closure.js рдЗрд╕рдореЗрдВ рдЙрдирдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╣реЛред
 //@ sourceMappingURL=script.closure.js.map 

рдЕрдм рдбреЗрд╡рд▓рдкрд░ рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рджреЛрдиреЛрдВ рдлрд╛рдЗрд▓реЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА - рдореВрд▓ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд script.closure.js ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕реНрд░реЛрдд рдХреЛ рджреЗрдЦрдиреЗ рдкрд░ рдЕрднреА рддрдХ рджреЗрдЦреЗ рдЧрдП рднрд╛рд╡ рдФрд░ рдЪрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред рдЪрд▓реЛ рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╡реЗ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ!

рд╕рд┐рд░рд┐рд▓рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рдФрд░ рдЬрд╛рдо рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕реМрднрд╛рдЧреНрдп рдорд┐рд▓рд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреЛ: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ, рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдЕрдиреНрдпред рдореИрдкрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рднрд░реА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ UTF-8 рд╡рд░реНрдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:



рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рднреА рдмрджрддрд░ рд╣реИ: рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгреЛрдВ рдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд╛рдирддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рди (рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ) рд╕реЗ рдкрд╣рд▓реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╡рд┐рдХрд▓реНрдк 2: JSMin рдХреЗ рд▓рд┐рдП рдЧреНрд░рдВрдЯрдЬ рдЯрд╛рд╕реНрдХ


рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП Grunt.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЕрдм рдпрд╣ JSMin рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдХреЛрдб рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рдХреЛрдб рди рдХреЗрд╡рд▓ рдЦрдирди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд▓реНрдХрд┐ рдПрдХ рдХреЛрдб рдХрд╛рд░реНрдб рднреА рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред (рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ Grunt рд╕рдВрд╕реНрдХрд░рдг 0.4 рдХрд╛ рдХрд╛рд░реНрдп рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдВрд╕реНрдХрд░рдг 0.3 рд╕реЗ рдЕрд▓рдЧ рд╣реИред - рдиреЛрдЯред)

рдЪрд░рдг рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ Grunt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ JSMin рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ JSMin ред

1. рдЧреНрд░рдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ " start/ " рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рд╕реНрдерд┐рдд gruntfile рдирд╛рдордХ grunt.js gruntfile рдореЗрдВ рдЪрд▓рд╛рдПрдВ ( рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд╛рдЬрд╛ рд╡рд┐рд╡рд░рдг )ред

 $ npm install -g grunt $ npm view grunt version npm http GET https://registry.npmjs.org/grunt npm http 200 https://registry.npmjs.org/grunt 0.3.17 $ grunt init:gruntfile 


рдЧреНрд░рдВрдЯ 0.4.x рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ


рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ 0.4.x рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧ рд╣реЛрдЧреАред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЧреНрд░рдиреНрдЯ 0.3.x рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░реЗрдВ (рдпрджрд┐ рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред
 npm uninstall -g grunt 

рдЪрд▓реЛ рдЧреНрд░рдВрдЯ 0.4 тАЛтАЛрдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореБрдЦреНрдп рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрдЧрд╛ред

рдЕрдм рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЧреНрд░рдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдИ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдХрд░реНрдиреЗрд▓ рд╕реЗ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдФрд░ рдкреНрд▓рдЧ-рдЗрдиред рдХрдИ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рд╡реИрд╢реНрд╡рд┐рдХ рдЧреНрд░рдиреНрдЯ-рдХреНрд▓реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
 npm install -g grunt-cli 


рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдкрдХреЛ рдЧреНрд░рдВрдЯрдлрд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдкрд╣рд▓реЗ рдЗрд╕реЗ grunt.js рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рддреЛ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ - Gruntfile.js рдпрд╛ Gruntfile.cfishред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рджреВрд╕рд░реА рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓ рдкреИрдХреЗрдЬ рд╣реИред рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде npm (Node.js рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░) рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЧреНрд░рдиреНрдЯ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
 npm install grunt 
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ "рдкреНрд░рд╛рд░рдВрдн /" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рд╡рд╣рд╛рдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВрдЧреЗред рдЬреИрд╕рд╛ рдХрд┐ 0.3.x рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдиреЛрдб_рдореЙрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдЧреНрд░рдВрдЯ рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрдЧрд╛ред

рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдХреЛрдб рдХрд╛ рдкреНрд░рд╕рд╛рд░ рдПрдХ рд╣реА рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ sbrowser рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЧреНрд░рдВрдЯ-рдХреНрд▓реА рдХреЗрд╡рд▓ рдПрдХ рд╢реЗрд▓ рд╣реИ рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред ( gruntjs.com/getting-started )

рдЕрдЧрд▓рд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ ("рд╢реБрд░реВ /") рд╣рдо Gruntfile.js рдФрд░ package.json рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред package.json рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ - рдкреНрд▓рдЧрдЗрди рдмрд┐рд▓реНрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╣рдо рд▓рд┐рдЦреЗрдВрдЧреЗ:
 { "name": "colors", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.1", "grunt-jsmin-sourcemap": "~1.5.6" } } 

рд╕рдВрд╕реНрдХрд░рдг 0.3.x рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдЧреНрд░рд╛рдл 2 рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
 npm install grunt --save-dev 
package.json рд╕реЗ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдКрдкрд░ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред


2. (рд╕рдВрд╕реНрдХрд░рдг 0.3.x рдХреЗ рд▓рд┐рдП)ред рдЧреНрд░рдиреНрдЯ-рдЬреЗрд╕реНрдорд┐рди-рд╕реЛрд░реНрд╕рдореИрдк рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдпрд╣ node_modules/grunt-jsmin-sourcemap ред
 $ npm install grunt-jsmin-sourcemap 


3. рдирд┐рд░реНрдорд┐рдд grunt.js рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ (рд╕рдВрд╕реНрдХрд░рдг 0.4 рдХреЗ рд▓рд┐рдП - "рдкреНрд░рд╛рд░рдВрдн /" рдореЗрдВ Gruntfile.js рдмрдирд╛рдПрдВ) рддрд╛рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ jsmin-sourcemap - рд╣рдо рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдХрд░реЗрдВрдЧреЗ:

 module.exports = function(grunt) { grunt.loadNpmTasks('grunt-jsmin-sourcemap'); grunt.initConfig({ 'jsmin-sourcemap': { all: { src: ['scripts/script.js'], dest: 'scripts/script.jsmin-grunt.js', destMap: 'scripts/script.jsmin-grunt.js.map' } } }); grunt.registerTask('default', 'jsmin-sourcemap'); }; 


4. рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд▓реМрдЯреЗрдВ рдФрд░ рдЧреНрд░рдВрдЯ рдЪрд▓рд╛рдПрдВ:
 E:\Projects\nodeJS\SourceMaps101\start> grunt 

рдпрд╣ jsmin-sourcemap рдХрд╛рд░реНрдп рдХреЛ grunt.js (рдпрд╛ Gruntfile.js ) рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рддреИрдпрд╛рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдПрдХ рд╕рдлрд▓ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ:
 Running "jsmin-sourcemap:all" (jsmin-sourcemap) task Done, without errors. 

рдЕрдЧрд▓рд╛, рд╣рдо рд▓реЗрдЦрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреВрд░реНрдг-рдмрд░реНрдмрд╛рдж рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдЬреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЧреНрд░рдВрдЯ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдХрд╛рд░рдг рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред рдпрд╣ рдЙрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдЬреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рддреЗ рд╕рдордп рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗред - рд▓рдЧрднрдЧред


5. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ script.jsmin-grunt.js.map рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ: "sources":["script.js"] ред
(рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, "sources":["scripts/script.js"] рд╡рд╣рд╛рдВ рдкрдВрдЬреАрдХреГрдд рдереЗ "sources":["scripts/script.js"] , рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред - рд▓рдЧрднрдЧред

6. рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП script.grunt-jsmin.js рдлрд╝рд╛рдЗрд▓ рдХреЛ index.html рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП Uncomment Option B рдФрд░ рдЗрд╕реЗ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВред

(рдпрд╣ рдПрдВрдХрд░ рдХреЗ рд╕рд╛рде рд╕рдВрд╢реЛрдзрд┐рдд рдЗрдВрдбреЗрдХреНрд╕- ru.html рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ / рдЗрдВрдбреЗрдХреНрд╕- ru.html # рд╡рд┐рдХрд▓реНрдк - jsmin ред - рд▓рдЧрднрдЧ ред рдЕрдиреБрд╡рд╛рдж ред)

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдореЗрдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреА рдореИрдкрд┐рдВрдЧ рднреА рдорд┐рд▓реА - рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдХрд▓реЗрдХреНрдЯрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдмрдирд╛рдпрд╛ред рдпрд╣ рдЖрдЧреЗ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдореБрдЦреНрдп рдЙрдкрдХрд░рдг рд╣рдорд╛рд░реА рдЬреЗрдм рдореЗрдВ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдЕрд╕реЗрдВрдмрд▓реА рдЬрд╛рдо рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐, рдпрджрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реБрдзрд╛рд░реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рд╣реА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рддрддреНрдкрд░рддрд╛ рдХреЗ рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдФрдЬрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА, рдмрд╛рдЬрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреА рдмрд╣реБрдд рдорд╛рдВрдЧ рд╣реИред


Grunt рдФрд░ jsmin-sourcemap рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ 2 рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рддреА рд╣реИ: рдЕрдВрдд рдореЗрдВ рдореИрдкрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдХреЛрдб рдХрд╛рд░реНрдб рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдпрдВред рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдорд╛рди, рд╕реНрд░реЛрдд рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред


рд╡рд┐рдХрд▓реНрдк 3: UglifyJS


UglifyJS2 рдПрдХ рдФрд░ рдЬреЗрдПрд╕ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░-рдХрдВрдкреНрд░реЗрд╕рд░ рд╣реИред рдкрд┐рдЫрд▓реЗ 2 рдорд╛рдорд▓реЛрдВ рдХреА рддрд░рд╣, рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдХреЛрдб рдХрд╛рд░реНрдб URL рдФрд░ рдореИрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд рдФрд░ рдореВрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, " start " рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЪрд▓рд╛рдПрдВ:
1. uglify-js рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ( nocde_module/uglify-js рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ nocde_module/uglify-js ):
 $ npm install uglify-js -g $ npm view uglify-js version 2.2.3 $ cd scripts/ 



2. " scripts " рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
 uglifyjs --source-map script.uglify.js.map --output script.uglify.js script.js 

(рдЗрд╕ рдмрд╛рд░ - рд╣рд╛рдереЛрдВ рд╕реЗ рдХреЛрдИ рд╢рд░реНрдорд┐рдВрджрдЧреА рдирд╣реАрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред)


3. index.html рд╡рд┐рдХрд▓реНрдк C рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред


рд╡рд┐рдХрд▓реНрдк 4: рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ Redux


рдЪреВрдВрдХрд┐ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЬреЗрд░реЗрдореА рдПрд╢рдХреЗрдирд╕ рджреНрд╡рд╛рд░рд╛ рдореВрд▓ рдХреЙрдлрд╝рд╕реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрдорд╛рдг рдиреЗ рдореИрдкрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдХреНрд▓реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ 1.6.1+ рдореЗрдВ, рдЖрдк рдореВрд▓ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ рдХрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрд▓реЛрди рдХреЗ рдЕрдиреНрдп рд▓рд╛рднреЛрдВ рдХреЛ рдХрдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред

рдЗрд╕ рдХреНрд▓реЛрди рдиреЗ, рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХрд┐рдХрд╕реНрдЯрд╛рд░реНрдЯрд░ рдкрд░ рдПрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд $ 12 рд╣рдЬрд╛рд░ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ред


рдкрд╣рд▓реЗ 3 рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ, рдХреЗрд╡рд▓ 1 рдЕрдиреБрдХреВрд▓рди рдЪрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ 2 рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ, рдФрд░ рдлрд┐рд░ рдЬреЗрдПрд╕ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдФрд░ рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ Redux рд╕рдВрдХрд▓рдХ рд╕реЗ (рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓ рдХреЙрдлрд╝рд┐рд╢рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд╕рдВрд╕реНрдХрд░рдг 1.6.1 рдХреЗ рд▓рдЧрднрдЧ рдХрд╛рд░реНрдб рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ - рдмрд╣реБ-рд╕реНрддрд░реАрдп рдХреЛрдб рдХрд╛рд░реНрдб рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рдЧрднрдЧред) ред

рдЪрд░рдг 1: рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд╕рд░рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ


рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ " start " рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВред рдЕрдЧрд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ, рд╣рдо рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмреАрдЪ рдПрдХ рдкрддреНрд░рд╛рдЪрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗред
1. рд╡реИрд╢реНрд╡рд┐рдХ рдХреЙрд▓ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ -g рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
2. рд╕рд░рд▓ JS рдореЗрдВ рд╕рдВрдХрд▓рди script.coffee.coffee ред
 $ coffee -c scripts/script.coffee.coffee 

3. рд╕реНрдерд╛рдкрд┐рдд рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ Redux :
 $ git clone https://github.com/michaelficarra/CoffeeScriptRedux.git coffee-redux $ cd coffee-redux $ npm install $ make -j test $ cd .. 

4. рдПрдХ script.coffee.js.map рдмрдирд╛рдПрдВред script.coffee.js.map рдореИрдкрд┐рдВрдЧ script.coffee.js.map рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рджреЗ JS рдФрд░ рдореВрд▓ CoffeeScript рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред
 $ coffee-redux/bin/coffee --source-map -i scripts/script.coffee.coffee > scripts/script.coffee.js.map 

5. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ script.coffee.js рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреЛрдб рдХрд╛рд░реНрдб рдХрд╛ URL рд╣реИ:
 //@ sourceMappingURL=script.coffee.js.map 

6. рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ script.coffee.js.map рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реА рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдВрдХ рд╣реИ:
 "file":"script.coffee.coffee", and source file as "sources":["script.coffee.coffee"] 


рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рдХреЙрдлреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓реЛрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдореВрд▓ рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВред
рдкреИрд░рд╛рдЧреНрд░рд╛рдл 1 рдФрд░ 2 - рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддреЗ рд╣реИрдВред
рдмрд┐рдВрджреБ 3 - рдЫреЛрдбрд╝реЗрдВред
4ред
 coffee -o script.c -cm script.coffee.coffee 

("-cm" рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ "- рдХрдВрдкрд╛рдЗрд▓" рдФрд░ "--рдореИрдк" рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред)
5. рд╢реВрд▓ред
рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде - рдмрд╕ рдХреБрдЫ рдХреАрдбрд╝реЗред 1) рд╕реНрдХреНрд░рд┐рдкреНрдЯ.рдХреЙрдлреА.рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ - рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдЬреЗрдПрд╕, рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдирд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ (рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдУрдПрд╕ рдореЗрдВ рдзрд╛рд░рд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ); 2) рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ "рдмрд╛рдПрдВ" рдЦрд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ "/ -p /" рдЖрд╡рд╢реНрдпрдХ рдПрдХ рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЧрдИ рд╣реИред

рд░рд╛рд╕реНрддреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдЬреЛ 6 рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛ - рдЕрд╕рдореНрдкреАрдбрд┐рдд рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдФрд░ рдЗрд╕рдореЗрдВ рдкрдереЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рд╕рд╣реА рд╣реИред

рдпрджрд┐ рд╣рдо рдПрдХ рдХрдорд╛рдВрдб (рдФрд░ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рдПрдХ рдХреЛрдб рдореИрдк рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдХрд▓рд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдлреЙрд░реНрдо рдХреА рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╣реИ
 /* //@ sourceMappingURL=script.map */ 
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреНрд░реЛрдо рднреА рдЗрд╕ рддрд░рд╣ рдХреА рдЯрд┐рдкреНрдкрдгреА рдкрдврд╝рддрд╛ рд╣реИред
рдФрд░ "рдлрд╝рд╛рдЗрд▓": "script.js" рдФрд░ рдХреЛрдб рдХрд╛рд░реНрдб рдХреЗ рдЕрдиреНрдп рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╣рд╛рдБ рд╣реИ:
  "file": "script.js", "sourceRoot": "..", "sources": [ "script.coffee.coffee" ], 


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЕрдЬреАрдм рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рдо, script.c рдХреЛ рдкреВрд░реНрд╡-рдЪрдпрдирд┐рдд рдХрд┐рдпрд╛, рддрд╛рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рд╣реЛред
 var lHash = location.hash.substr(1).split('='); if(lHash && lHash.length ==2 && lHash[0] =='option') var optionName = lHash[1]; if(optionName && !parseInt(optionName)) optionName = {closure:1,jsmin:2,uglifyjs:3,coffeescript:4,typescript:5,'coff':6}[optionName.toLowerCase()]; console.log(optionName); optionName = optionName ||0; var loadScript; (loadScript = function(i){ var scr = document.createElement('SCRIPT'); scr.setAttribute('type', 'application/javascript'); scr.src ='scripts/script.'+ ('|closure|jsmin-grunt|uglify|coffee.min|typescript.min|c/script'.split('|')[i]) +(i?'.':'') +'js'; document.getElementsByTagName('head')[0].appendChild(scr); })(optionName); 

рдкреИрд░рд╛рдореАрдЯрд░ 6 рдпрд╛ coff рдкрде scripts/script.c/script.js рд╕реЗ scripts/script.c/script.js рдкрдврд╝реА рдЬрд╛рдПрдЧреАред рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдкреИрдЪ рдХреЗ рдмрд┐рдирд╛ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рд╕рдВрдХрд▓рдХ рд▓реЗрдЦрдХ!

рдпрд╣ рдХреИрд╕реЗ рдХреЙрдлреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд░реЛрдо рдХреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИред

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрд░реЛрдо рдЕрднреА рднреА utf-8 рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИред scr.setAttribute('charset', 'utf-8'); рдорджрдж рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред


рдЪрд░рдг 2: рд╕рд╛рджреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд▓реЗрдХрд░ рдЬреЗрдПрд╕ рддрдХ


1. рдЕрдВрдд рдореЗрдВ, JS рдХреЛ рдХрдВрдкреНрд░реЗрд╕ рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рдХрд╛рд░реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП UglifyJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕ рдмрд╛рд░, рдХрд▓реЗрдХреНрдЯрд░ рдПрдХ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХрд╛рд░реНрдб рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рд╣рдо рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВред " scripts " рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
 $ cd scripts/ $ uglifyjs script.coffee.js -o script.coffee.min.js --source-map script.coffee.min.js.map --in-source-map script.coffee.js.map 

рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ
 uglifyjs script.c/script.js -o script.coffee.min.js --source-map script.coffee.min.js.map --in-source-map script.c/script.map 


2. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЛрдб рдХрд╛рд░реНрдб рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлреЙрд░реНрдо рдХрд╛ рд╕рд╣реА рд▓рд┐рдВрдХ рд╣реИ
 "file":"script.coffee.min.js" 

... рдФрд░ рдлрд╛рд░реНрдо рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд▓рд┐рдВрдХ
 "sources":["script.coffee.coffee"] 


рд╣рдо рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
 http://localhost/#option=coffeescript 

... рдФрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рд╣реИред "sources":["script.coffee.coffee"] рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрдХрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ (рдореБрдЭреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА)
 "sources":["/scripts/script.coffee.coffee"] 

рдлрд┐рд░ рднреА, рд╕реНрдХреНрд░рд┐рдкреНрдЯред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ script.c рд╕рд╛рде рдЬрдЯрд┐рд▓ рд░рд╛рд╕реНрддреЗ, рдФрд░ рдмрдВрдбрд▓ рдореЗрдВ рдорд┐рдирд┐рдлрд╝рд╛рдпрд░ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдерд╛, рдФрд░ рдпрд╣ рд╕рдВрдкрд╛рджрди рдХрдЪреНрдЪреЗ рдЙрддреНрдкрд╛рдж рдХреА рд╣реИрдХ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред


рд╡рд┐рдХрд▓реНрдк 5: рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ


рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣, рднреА 2 рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ -> рд╕рд░рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ -> рдиреНрдпреВрдирддрдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯред рдЪреВрдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ jQuery рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ script.typescript.ts рдФрд░ jquery.d.ts рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде 2 рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдкрдирд╛:
 npm install -g typescript 

рдЪрд░рдг 1: рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд╕рд╛рджреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ


рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЛрдб рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ:
 $ tsc script.typescript.ts -sourcemap 

рдХрдорд╛рдВрдб рдПрдХ script.typescript.js рдлрд╝рд╛рдЗрд▓ script.typescript.js рдЬрд┐рд╕рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛:
 //@ sourceMappingURL=script.typescript.js.map 
рдФрд░ рдЙрд╕реА рдХрдорд╛рдВрдб рдореЗрдВ script.typescript.js.map рдореИрдк рдлрд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред

Crhbgn рдиреЗ jQuery рдФрд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдПрдХ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмреЗрдореЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХреА:
/script.typescript.ts(7,8): рдкреНрд░рдХрд╛рд░ 'JQueryEventObject' рдХреЗ рдореВрд▓реНрдп рдкрд░ рд╕рдВрдкрддреНрддрд┐ 'рдХреАрдХреЛрдб' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ

рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдиреМрдХрд░реА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓реА; рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдЪрд░рдг 2: рд╕рд╛рджреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд▓реЗрдХрд░ рдЬреЗрдПрд╕ рддрдХ


CoffeweScript рдХреЗ рд╕рд╛рде, рдЕрдЧрд▓рд╛ рдЪрд░рдг UglifyJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
 $ uglifyjs script.typescript.js -o script.typescript.min.js --source-map script.typescript.min.js.map --in-source-map script.typescript.js.map 

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ index.html рдореЗрдВ рд▓рд┐рдВрдХ рд╕рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ: scripts/script.typescript.min.js рдФрд░ рдЗрд╕реЗ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВред

рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рдорд┐рдирд┐рдлрд╝рд╛рдпрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЗрд╕ рд╕рд░рд▓ рдХреЛрдб рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ред рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдореИрдкрд┐рдВрдЧ рд╕реЗрд╡рд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдореИрдиреБрдЕрд▓ рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред


SASS рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛рд░реНрдб


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд░реЛрдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдб рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдПрд╕рдПрдПрд╕рдПрд╕ рдФрд░ рдПрд╕рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред SASS рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдЪрд▓реЛ рдХреНрд░реЛрдо рдореЗрдВ рдХреБрдЫ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ SASS рдХреЛ рдбреАрдмрдЧрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде CSS рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

1. рдХрд┐рд╕реА рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рд╕реЗ рдПрдХ рддрддреНрд╡ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдХреЗрд╡рд▓ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВрдЧреЗред рдпрд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред

2. рдХреНрд░реЛрдо рдкрд░ рдЬрд╛рдПрдВ: // рдЭрдВрдбреЗ /ред
3. " рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдкреНрд░рдпреЛрдЧ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ" рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ (рдХреНрд░реЛрдо рдХреЗ рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ - "рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ")ред

рд╡рд┐рдВрдбреЛрдЬ рдкрд░:



4. рдУрдкрди Dev Tools -> Setting -> Experiments -> Check тАЬSupport for SASSтАЭ ред

рд╡рд┐рдВрдбреЛрдЬ рдкрд░:
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (-) -> рдЙрдкрдХрд░рдг -> рдбреЗрд╡рд▓рдкрд░ рдЙрдкрдХрд░рдг -> рд╕реЗрдЯрд┐рдВрдЧреНрд╕ () рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ) -> рдкреНрд░рдпреЛрдЧ -> рд╕реИрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди ред



5. рд╣рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ " styles " рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдРрд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдПрд╕рдПрдПрд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдо рдХреЛ @media -sass-debug-info рд╕рд╛рде рд╕реЗрдЯ рдХрд░реЗрдЧрд╛
 $ cd styles/ $ sass --debug-info --watch style.sass:style.css 

6. рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рджреА рдЧрдИ рд╣реИ рдФрд░ рдкреГрд╖реНрда рдкреБрдирдГ рд▓реЛрдб рд╣реЛ рдЧрдпрд╛ рд╣реИред
7. рдЕрдм, рдЬрдм рд╣рдо Dev.Tools рдореЗрдВ рддрддреНрд╡ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо SASS рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЗрдЦреЗрдВрдЧреЗред

рдХреЗрд╡рд▓ SASS рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ LiveReload рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЬрдм SASS рдлрд╝рд╛рдЗрд▓ рдмрджрд▓реА рдЬрд╛рддреА рд╣реИ, рддреЛ рдкреГрд╖реНрда рднреА рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм - рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВ рдФрд░ рдлрд╛рдпрд░рдмрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦреЗрдВред рдпрд╣ SASS рдлрд╛рдЗрд▓ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред


рдХреЛрдб рдХрд╛рд░реНрдб рдХреА рдЬрд╛рдирдХрд╛рд░реА


рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА *.map рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕рдореЗрдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдХреЗ рдмреАрдЪ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдореИрдкрд┐рдВрдЧ рд╣реЛрдЧреАред рд╕рдВрд░рдЪрдирд╛, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рдВрд╕реНрдХрд░рдг 3 рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЖрдорддреМрд░ рдкрд░, 5 рдЧреБрдг рд╣реИрдВ:
1. рд╕рдВрд╕реНрдХрд░рдг : рдирдХреНрд╢реЗ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг (рдЖрдорддреМрд░ рдкрд░ 3)ред
2. рдлрд╝рд╛рдЗрд▓ : рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдоред
3. рд╕реНрд░реЛрдд : рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдоред
4. рдирд╛рдо : рдореИрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдХреНрд╖рд░ред
5. рдореИрдкрд┐рдВрдЧ : рдореИрдЪ рдбреЗрдЯрд╛ред


рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ


рдХреЛрдб рдХрд╛рд░реНрдб рдЕрднреА рднреА рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗрдм рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕рдВрд╕рд╛рдзрди рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд▓рд┐рдВрдХ рдХреЛ рдЕрд╡рд╢реНрдп рджреЗрдЦреЗрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрдИ рд╕рдВрдХрд▓рдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрднреНрдпрд╛рд╕ рдиреЗ рдХреЛрдб рдХрд╛рд░реНрдб рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдм рд╕реАрдорд┐рдд рд╣реИ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЪрд░ рдФрд░ рдЕрднрд┐рдЧрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реНрдг рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдЙрдореНрдореАрдж рд╣реИред



: Sayanee Basu, . Ruby . тАФ .


, ┬л ┬╗ тАФ . ; тАФ nodeJS . , , , тАФ , nodeJS. . , , - , , .

( , Firefox .)

? Coffeescript, . , 2 , , JS.

Grunt, , SASS тАФ . , , , . , тАФ , , , .

, , , nodeJS, - .


, Windows + nodeJS.

1) Using Source Maps with TypeScript , Aaron Powell, Oct 3 2012;
2) github.com/mozilla/source-map тАФ This is a library to generate and consume the source map format .
3) Happy debugging with JavaScript source maps by James Allardice, 25 January 2013.
4) bower.io тАФ Twitter.
5) kevinpelgrims.com/blog/2011/12/28/building-coffeescript-with-sublime-on-windows
6) sourcemap.litcoffee .
7) github.com/evanw/node-source-map-support
8) , (2013-05)

Source: https://habr.com/ru/post/In178743/


All Articles