рдЖрдзреБрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдЖрдкрдХрд╛ рдХреЛрдб рд╕рдВрдХрд▓рди, рдЦрдирди, рд╡рд┐рд▓рдп рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рдж "рд▓рдбрд╝рд╛рдИ" рд╕рд░реНрд╡рд░ (рдЙрддреНрдкрд╛рджрди) рдкрд░ рдХреЛрдб рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрд░реЛрдд рдХреЗ рдирдХреНрд╢реЗ рдХрд╛рдо рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рд╕рдорд╛рдкреНрдд рдХрд╛рд░реНрдпрд╢реАрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рдХреЗ рддрддреНрд╡реЛрдВ рдФрд░ рдЖрдкрдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛрдб рдХреЗ рдмреАрдЪ рд╕рдЯреАрдХ рдкрддреНрд░рд╛рдЪрд╛рд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдкрд╛рда рдореЗрдВ, рд╣рдо рдПрдХ рд╕рд░рд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЗрдВрдЧреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреЛрдб рдореИрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
(рдЕрдиреБрд╡рд╛рдж рд╕реЗред) рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рд╕рдВрдХрд▓рд┐рдд) рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦ ( рдЕрдиреБрд╡рд╛рдж ) рдерд╛ред рдЕрдм рдпрд╣ рддрдХрдиреАрдХ рдЖрдХреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рд╕реВрд░реНрдп рдХреЗ рдиреАрдЪреЗ рдЕрдкрдиреА рдЬрдЧрд╣ рдЬреАрдд рд░рд╣реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрдм рдХреЗрд╡рд▓ рдорд╛рдирдЪрд┐рддреНрд░рдг рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рд╣реЛрддреА рдереА, рдФрд░ рдЕрдм, рд╕рдВрд╕реНрдХрд░рдг 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')
рд╕рдВрднрд╡рддрдГ, рдпрд╣ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдЖрджрд┐рдорддрд╛ рдХреЗ рдХрд╛рд░рдг рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдпрдерд╛, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдирд╡реАрдирддрдо рдмрд┐рд▓реНрдб рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдХреЛрдб рдореЗрдВ рдПрдХ рдЕрдиреБрдХреВрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рдмрд╛рдж рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдХреЛрдб рдореЗрдВ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд┐рдо рд▓реЛрдбрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдПрдВрдХрд░ рд░реАрдбрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╣ рд╕рдм рдПрдХ рдХреЙрдлреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдмрд┐рд▓реНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдо рдЖрджрд┐рдорддрд╛ рдХреЗ рд╕рдордЭреМрддреЛрдВ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЕрдореВрд░реНрдд рдХреЗ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╡рд┐рдХрд▓реНрдк 1: рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░
Google
рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдХреВрд▓рди рдЙрдкрдХрд░рдг рд╣реИред рдпрд╣ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕реЛрд░реНрд╕ рдореИрдк рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ:
- рдирд╡реАрдирддрдо рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ;
- рд╣рдордиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде
compiler.jar
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд░рдЦрд╛ рд╣реИ; - рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░, "
scripts/
" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ scripts/
рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред script.closure.js
рдлрд╛рдЗрд▓ рдЬреЛ рдХрд┐ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
java -jar compiler.jar --js script.js --js_output_file script.closure.js
- рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐
index.html
"рд╡рд┐рдХрд▓реНрдк A" рдХреЛ рдЕрд╕рдореНрдмрджреНрдз рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдВрдмрджреНрдз рд╣реИред

рдЬрдм рд╣рдо рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ
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
рдЗрд╕рдореЗрдВ рдЙрдирдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╣реЛред
рдЕрдм рдбреЗрд╡рд▓рдкрд░ рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рджреЛрдиреЛрдВ рдлрд╛рдЗрд▓реЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА - рдореВрд▓ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд
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 рд╣реИ:
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 рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛ - рдЕрд╕рдореНрдкреАрдбрд┐рдд рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдФрд░ рдЗрд╕рдореЗрдВ рдкрдереЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рд╕рд╣реА рд╣реИред
рдпрджрд┐ рд╣рдо рдПрдХ рдХрдорд╛рдВрдб (рдФрд░ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рдПрдХ рдХреЛрдб рдореИрдк рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдХрд▓рд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдлреЙрд░реНрдо рдХреА рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╣реИ
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреНрд░реЛрдо рднреА рдЗрд╕ рддрд░рд╣ рдХреА рдЯрд┐рдкреНрдкрдгреА рдкрдврд╝рддрд╛ рд╣реИред
рдФрд░ "рдлрд╝рд╛рдЗрд▓": "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
рдЬрд┐рд╕рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛:
рдФрд░ рдЙрд╕реА рдХрдорд╛рдВрдб рдореЗрдВ
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)