Gulp.js рдПрдХ JS рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ
рдмрд┐рд▓реНрдбрд░ рд╣реИ ред рдпрд╣ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рд▓рдЧрднрдЧ рдПрдХ рд╣рдЬрд╛рд░ рд╕реНрдЯрд╛рдЗрд▓рд╕ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдЧреНрд░рдВрдЯрдЬ рдХреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 2.5 рд╕реЗрдХрдВрдб рдФрд░ рдСрдЯреЛрдкреНрд░рд┐рдлрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП 2 рд╕реЗрдХрдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо 4 рдмрд╛рд░ рдЧреНрд░рдВрдЯрдЬ рдХреЛ рд╣рд░рд╛рдХрд░, рдпрд╣ рд╕рдм 0.5 рд╕реЗрдХрдВрдб рдореЗрдВ рдЧреБрд▓рдк рдХрд░рддрд╛ рд╣реИред

рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдпреБрд╡рд╛рдУрдВ, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдХрдореА рдФрд░ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕рдореБрджрд╛рдп рд╕реЗ рднрдпрднреАрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдлрд┐рд▓рд╣рд╛рд▓ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдлрд┐рд▓рд╣рд╛рд▓, 165 рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ, рдЖрдк рдЙрдиреНрд╣реЗрдВ
рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рд▓реЗрдЦ рдЕрдзрд┐рдХ рдЕрднреНрдпрд╛рд╕ рд╣реЛрдЧрд╛, рд╣рдо рдЬреЗрдб рдФрд░ рд╕реНрдЯрд╛рдЗрд▓рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдлреНрд░рдВрдЯ-рдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗ, рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд▓рд┐рд╡рд░реЗрд▓реЛрдб рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗред рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ
рдЧрд┐рддреВрдм рдкрд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред
рдЧрд▓реНрдк рд╕реНрдерд╛рдкрдирд╛
рдЖрдкрдХреЗ рдкрд╛рд╕ Node.JS рдФрд░ npm рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдмрдирд╛рдПрдВ, рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдмрдирд╛рдПрдВ рдФрд░ рдЧреБрд▓рдк рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛:
|--/assets // |--|--/template |--|--/stylus |--|--/js |--|--/img |--/build // |--/public // |--package.json |--gulpfile.js
рд╕реНрдерд╛рдкрдирд╛:
$ mkdir assets public build assets/js assets/img assets/stylus assets/template $ touch gulpfile.js $ sudo npm install gulp -g $ npm init $ npm install gulp gulp-jade gulp-stylus gulp-livereload gulp-myth gulp-csso gulp-imagemin gulp-uglify gulp-concat connect --save-dev
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рд╣реИ gulpfile.js рдФрд░ рд╣рдо рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗред
рдЖрд░рдВрднрд┐рдХ рдкреНрд▓рдЧрдЗрдиреНрд╕:
var lr = require('tiny-lr'),
рдЙрджреНрджреЗрд╢реНрдпреЛрдВ:
рдЕрдм рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рдмрдирд╛рдПрдБ
рдЧрд▓реНрдк рдореЗрдВ, рд╣рдо рдПрдХ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо gulp.src рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреНрд░реАрдорд╡рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдЬреЗрдб, рдЗрдореЗрдЬ рдФрд░ рдЬреЗрдПрд╕ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рднреА рдмрдирд╛рдПрдВрдЧреЗ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдмрдирд╛рдПрдВ
рдЬрд┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдКрдкрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд▓рд┐рд╡рд░реЗрд▓реИрдб рд╣реИ
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдп 'рд╡реЙрдЪ' рдмрдирд╛рдПрдВред
рдЕрдм рдЖрдк рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖред
$ gulp watch
рдпрд╣ рд╕рд░реНрд╡рд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ: 9000 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣рдордиреЗ рд▓рд┐рдпреЗрд▓рд┐рд╕реЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдЯрд╛рдЗрд▓рд╕ рдФрд░ рдЬреЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡реЗрдм-рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдпрд╛ рд╣реИред рдЕрдм рдЖрдкрдХреЛ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 'рдмрд┐рд▓реНрдб' рдХрд╛рд░реНрдп рдмрдирд╛рдПрдБ
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА gulp.task('build', function() {
рд╣рдо рдирд┐рд░реНрдорд╛рдг рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
$ gulp build
GulpJS рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред