рдЕрд╡рдпрд╡ред рдмрдирд╛рдУ рдФрд░ рджреЗрдЦреЛ

рдШрдЯрдХ рдиреЛрдЯреЛрдВ рдХреЗ рдКрдкрд░

рдмрдирд╛рдо рдмрдирд╛ рдЧреНрд░рдВрдЯ рдмрдирд╛рдо рдЧреБрд▓ рдХреА рдШрдбрд╝реА



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



рдЧреНрд░рдВрдЯ (рдЧреНрд░рдВрдЯ)ред Gruntfile.js рдЧреНрд░рдВрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╣реИред Gruntfile.js рд╕рд╣рдЬ рд╣реИ, рдмрд╕ рдирдореВрдиреЗ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд▓реЗрдХрд┐рди рдЧреНрд░рдВрдЯрдлрд╛рдЗрд▓.рдЬреЗрдПрд╕ рдмреЗрд╣рдж рдмрджрд╕реВрд░рдд рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, gulp рд▓реЗрдЦрдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЧреНрд░рдВрдЯ рдмреЗрд╣рдж рдЕрдХреНрд╖рдо рд╣реИред gruntfile.js рд▓рд┐рдЦрдирд╛ рдФрд░ рдкрдврд╝рдирд╛ рдмрд╣реБрдд рдЬрд▓реНрджреА рдЙрдмрд╛рдК рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЧреБрд▓ ("рддрд╛рдЬрд╝реА рд╣рд╡рд╛" рдХреА рдПрдХ рд╕рд╛рдВрд╕)ред Gruntfile.js рдХреЗ рд╡рд┐рдкрд░реАрдд, gulpfile.js рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдиреЛрдб рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИред рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рджреЗрдЦреЗрдВред рд╣рд╛рдВ, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, gulp plugins рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, js рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рджреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП .min.js рдкрд░ рд░реЗрдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рд╣реА рд╣реИред рд▓реЗрдХрд┐рди guplfile.js рдХрд╛ рдЖрдХрд╛рд░ gruntgile.js рд╕реЗ рд▓рдЧрднрдЧ рдХреЛрдИ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рджрд╕рд╡реАрдВ рдмрд╛рд░ рдЗрд╕рдХреА рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕реБрд╕реНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛ рд░рд╣реА рд╣реИред рдлрд┐рд░ рднреА, рд╕реНрд╡рд╛рдж рдХреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди, IMHO, gulp рддреБрд▓рдирд╛ gulp рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

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

рдореЗрдХрдлрд╛рдЗрд▓ рдЕрд╡рд▓реЛрдХрди



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

file рдореЗрдВ рдЪрд░ рдФрд░ рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реЛрддрд╛ рд╣реИред

рд▓рдХреНрд╖реНрдп рдирд┐рдпрдо



Makefile рдореЗрдВ рд▓рдХреНрд╖реНрдп рдирд┐рдпрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИрдВ:

 target: sources tab -> commands tab ->tab -> commands, .     


рдпрд╣рд╛рдБ target рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред рдЖрдорддреМрд░ рдкрд░ target рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖ PHONY рд▓рдХреНрд╖реНрдп (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдХреЛ рдЫреЛрдбрд╝рдХрд░ред

рдпрджрд┐ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЧрд░реНрднрдкрд╛рдд рдХрд░рддрд╛ рд╣реИред (рд╡рд┐рдХрд▓реНрдк -i рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ)ред

mtime рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдВрддрд┐рдо рдмрд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред target рддреИрдпрд╛рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рд╕реЗ рдирдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреЗрд╡рд▓ рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдмрдирд╛рдПрдВ рдЬреЛ рдмрджрд▓ рдЧрдИ рд╣реИрдВред

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

рдЬрдм рддрдХ рдпрд╣ рд╕рдорд╛рдкреНрдд рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рдпрд╛ рд╕реНрд░реЛрдд рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рдЕрдкрдиреЗ рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИрдВ, рддрдм рддрдХ рд╕реНрд░реЛрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдиреАрдЪреЗ рдЬрд╛рддреА рд╣реИред рдЬрдм рдЙрд╕реЗ рдРрд╕рд╛ рдХреЛрдИ рдорд╛рдорд▓рд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЙрдЪрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдкреБрди: рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рддрд╛ рд╣реИред

рдирд┐рдпрдореЛрдВ рдХреЛ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреИрдЯрд░реНрди рдирд┐рдпрдо



рдкреИрдЯрд░реНрди рдирд┐рдпрдо рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 %.js: %.html @component convert $<; 


рдлреЛрдиреА рдирд┐рдпрдо



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

 clean: rm -fr build components $(TEMPLATES) .PHONY: clean 


.PHONY рдирд┐рдпрдореЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЪрд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП .PHONY

рдЪрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди



рд╕реНрд╡рдЪрд╛рд▓рд┐рдд, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЪрд░ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп $ @ рд╣реИрдВ - рд▓рдХреНрд╖реНрдп рдХрд╛ рдирд╛рдо, $ + - рд╕рднреА рд╕реНрд░реЛрдд, рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рдЕрд▓рдЧ, $ <; - рдкрд╣рд▓реЗ рд╕реНрд░реЛрдд рдХрд╛ рдирд╛рдоред рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдкреВрд░реА рд╕реВрдЪреА - http://www.gnu.org/software/make/manual/make.html#Automatic-Variables

рд╕рд╛рдзрд╛рд░рдг рдЪрд░ (рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╕реНрд░реЛрдд рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдп) - рдЖрдк рдмрд╕ рд╕реВрдЪреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

 JS = index.js example.js 


рд▓реЗрдХрд┐рди рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ:

 CF = $(shell find templates -name "*.coffee") 


рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:

 SRC = $(wildcard client/*/*.js) 


рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдЪрд░ рд╕реЗ targets рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:

 HTML = $(JADE: .jade=.html) 


рдмрд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, HTML рдлрд╛рдЗрд▓реЗрдВ рд╕реНрд╡рдпрдВ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдиреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдирд╛рдореЛрдВ рдХреА рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рдгреА рд╣реИред

рдЪрд░ рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг:



 SRC = $(wildcard client/*/*.js) HTML = $(wildcard client/*/*.html) TEMPLATES = $(HTML:.html=.js) build: components $(SRC) $(TEMPLATES) @component build components: component.json @component install %.js: %.html @component convert $<; 


рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдирд╛рдо рдШрдЯрдХреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╣рдо рдШрдЯрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬрдорд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╡рд╣ SRC рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ JS рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред рдпрд╣ рдкрд╣рд▓реА .js рдлрд╝рд╛рдЗрд▓ рдХреЗ 'рд╕реНрд░реЛрддреЛрдВ' рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, .js рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЯрд░реНрди рдирд┐рдпрдо рдвреВрдБрдврддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ .html рд╕реНрд░реЛрдд рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдпрд╣ рдПрдХ рд╣реА build/build.js рдореЗрдВ рд╕рдм рдХреБрдЫ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИред build/build.js component build , component convert ред

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:

 JADE = $(shell find templates -name "*.jade") HTML = $(JADE:.jade=.html) all: $(HTML) %.html: %.jade jade < $< > $@ 


рдкреИрдЯрд░реНрди-рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЙрдлреА, рдЬреЗрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣реИ:

 %.js: %.coffee @coffee -c $< %.js: %.jade @jade -c $< 


рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, coffee , jade рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдШрдбрд╝реА



рд╡реЙрдЪ рдПрдХ рдШрдЯрдХ рдирд╣реАрдВ рд╣реИ, рди рдХрд┐ рдиреЛрдб.рдЬреЗрдПрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рдпрдорд┐рдд рдпреВрдирд┐рдХреНрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИред (рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдпрд╣ Altlinux рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП)ред

рд╣рдо рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдбрд╛рд▓рддреЗ рд╣реИрдВ:

 $ PREFIX=~ make install 


рдФрд░ рд░рди make

 $ watch make &; 


рд╕реНрд░реЛрдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЧреНрд░рдВрдЯ рдореЗрдВ рдСрдЯреЛ-рд░реЗрдореНрдкрд╛рдЗрд▓ рд╕реЗ рддреБрд▓рдирд╛ рдХрд░реЗрдВред gulp рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рди рдХрд┐ рдПрдХ рдкреНрд▓рдЧрдЗрди рдореЗрдВред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЗрд╕реЗ gulpfile.js рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рднреА рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ред

Makefile рдореЗрдВ, рдЖрдк рдШрдбрд╝реА рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 .PHONY: continuously continuously: while true; do make 1>/dev/null; sleep 3; done 


рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдП

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


All Articles