рдЧреНрд░рдВрдЯ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд░рд┐рд▓реАрдЬрд╝ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рд╣реБрдИ рдереА,
рдмреЗрди "рдХрд╛рдЙрдмреЙрдп" рдСрд▓рдореИрди рдХреЗ рд▓реЗрдЦрдХ, рдкрд░рд┐рдпреЛрдЬрдирд╛
рдЬреАрдереВрдм рдкрд░ рд╣реИ ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЧреНрд░рдВрдЯ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ, рдЗрд╕рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрд╡рд░ рдХрд░реВрдВрдЧрд╛ред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдлрд┐рд▓рд╣рд╛рд▓ рдЧреНрд░рдВрдЯ рдмреАрдЯрд╛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ; рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп рд╕рдВрд╕реНрдХрд░рдг 0.3.9 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред
рд╕реНрдерд╛рдкрдирд╛
рдЧреНрд░рдиреНрдЯ рдПрдирдкреАрдПрдо (рдиреЛрдб рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░) рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдиреЛрдб.рдЬреЗрдПрд╕ рдФрд░ рдПрдирдкреАрдПрдо рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рдиреЛрдб.рдЬреЗрдПрд╕ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореИрдХ рд╣реИ, рддреЛ рд╣реЛрдордмреНрд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдлрд┐рд░ рдЖрдкрдХреЛ
npm рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдиреЛрдб рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ (рдЖрдк npm рдФрд░ рдорд╛рдгрд┐рдХ рд░рддреНрдиреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдиреЛрдб.рдЬреЗрдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
рдПрдирдкреАрдПрдо рд╢рд╛рдорд┐рд▓ рд╣реИ ред рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдЖрдкрдХреЛ npm рдХреЛ рдХреЗрд╡рд▓ рддрднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рдЖрдкрдиреЗ рд╕реНрд░реЛрдд рд╕реЗ рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реЛ рдпрд╛ рд╣реЛрдордмреНрд░реЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реЛред
рдЧреНрд░рдВрдЯ рдХреЛ рд╕реАрдзреЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╕рд░рд▓
npm install -g grunt
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
-g
рдзреНрд╡рдЬ рдХрд╛ рдЕрд░реНрде рд╣реИ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрдирд╛, рдЕрд░реНрдерд╛рддреН, рдЧреНрд░рдВрдЯ рд╣рдореЗрд╢рд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣
node_modules
рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
node_modules
ред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЧреНрд░рдВрдЯ рдХреЛ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдЙрд╕реА рдХрдорд╛рдВрдб рдХреЛ
-g
рдлреНрд▓реИрдЧ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛рдПрдВред рдПрдХ рд╕рдлрд▓ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕рдорд╛рди рдЪрд┐рддреНрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдЧреНрд░рдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╣рдо рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рд╛рд░рдВрдн
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЧреНрд░рдВрдЯ рдореЗрдВ рдХрдИ рдЖрд╕рд╛рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ
commonjs
,
commonjs
рдФрд░
node
рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ jQuery рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ рдФрд░
grunt init:jquery
рдЪрд▓рд╛рдПрдВ
grunt init:jquery
ред рдЖрдкрд╕реЗ рдХреБрдЫ рд╕рд╡рд╛рд▓ рдкреВрдЫреЗ рдЬрд╛рдПрдВрдЧреЗред рдЧреНрд░рдВрдЯ рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдПрдВрдЯрд░ рджрдмрд╛рдПрдВред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рджреЗрдЦрд╛:

рдкрд╣рд▓реА рдлрд╛рдЗрд▓ рдЬреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ, рд╡рд╣ рд╣реИ
grunt.js
(рдЬрд┐рд╕реЗ
gruntfile
рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд╕рдХрддреА рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд,
qunit
рдиреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
qunit
рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝рд╛ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ
test
рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рднреА рджрд┐рдПред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдиреНрдЪ:
watch: { files: '<config:lint.files>', tasks: 'lint qunit' }
рдпрд╣ рдХрд╛рд░реНрдп
config:lint.files
рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
config:lint.files
, рдЕрд░реНрдерд╛рдд рдпрд╣
config:lint.files
рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдХреНрд╢рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ:
lint: { files: ['grunt.js', 'src/**/*.js', 'test/**/*.js'] }
рдЬреИрд╕реЗ рд╣реА рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдлрд╛рдЗрд▓ рдмрджрд▓рддреА рд╣реИ
qunit
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
lint
рдФрд░
qunit
(рдЬреЛ рдЖрдк рдЬреИрд╕рд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рд╡реИрд╕рд╛ рд╣реА рдХрд░реЗрдЧрд╛)
qunit
ред рдмрд╣реБрдд рд╕реБрдВрджрд░! рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реВрдВрдЧрд╛ред
рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦреЗрдВ:
grunt.registerTask('default', 'lint qunit concat min');
рдпрд╣
qunit
рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдХрд┐ рдЬрдм рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ
lint
,
qunit
,
qunit
рдФрд░
min
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд▓рд╛рдВрдЪ
рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ
grunt
рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдФрд░ рдПрдВрдЯрд░ рджрдмрд╛рдПрдБред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛:
Running "lint:files" (lint) task Lint free. Running "qunit:files" (qunit) task Testing jquery.jsplayground-demo.html Running PhantomJS...ERROR
PhantomJS рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдирд┐рд░реНрджреЗрд╢
рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВред PhantomJS Javascript (
Habrред ,
рдЯрд┐рдкреНрдкрдгреА рдЕрдиреБрд╡рд╛рджрдХ рдкрд░ рдПрдХ рд▓реЗрдЦ) рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрд╕реЛрд▓ рдЗрдВрдЬрди рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдХреНрдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред PhantomJS рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЧреНрд░рдВрдЯ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛:

рддреЛ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛:
- JSLint рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╢реБрднрд╛рд░рдВрдн рдХрд┐рдпрд╛
- рдмрд┐рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреНрдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд┐рдпрд╛
- рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдорд┐рд▓рд╛рдпрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╛рдЗрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реИ)
- рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреИрд╕рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЯреАрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ!
рдЕрдЧрд░, рдХрд╣рддреЗ рд╣реИрдВ, рдореИрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдЗрди рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдмрд╕
grunt.js
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
watch
рдЕрдиреБрднрд╛рдЧ рдЦреЛрдЬреЗрдВ рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
watch: { files: '<config:lint.files>', tasks: 'lint qunit' },
рдореИрдВ рдпрд╣рд╛рдВ
concat
рдФрд░
min
рдХрд╛рд░реНрдп рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рд╣рдордиреЗ рдПрдХ
default
рдХрд╛рд░реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрджрд▓рддреЗ рд╕рдордп, рдореИрдВ рдмрд╕
default
рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ:
watch: { files: '<config:lint.files>', tasks: 'default' }
рдмреЗрд╢рдХ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рд░ рдмрд╛рд░ рдЬрдм рдмрдЪрдд рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИ, рддреЛ
concat
рдФрд░
min
рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред рдЖрдк рдХрдИ рдХрд╛рд░реНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреАрд╕рд░рд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЕрдм рдЖрдЗрдП рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдЙрд╕ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓ рдкрд░ рдЬреЛ рд╕реНрд╡рддрдГ рд╣реА
src/jquery.jsplayground-demo.js
рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдереАред рдЕрдВрджрд░ рд▓рд╛рдЗрд╕реЗрдВрд╕, рдХреЙрдкреАрд░рд╛рдЗрдЯ рдФрд░ рдЬреАрдердм рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдХрд╛ рд╕рдВрдХреЗрдд рд╣реИ - рдпрд╣ рд╕рдм рдЧреНрд░рдВрдЯ рдЗрдирд┐рдЯ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ
grunt init:jquery
рдХрдорд╛рдВрдбред рдЕрдм
watch
рдХреЛ рдПрдХреНрд╢рди рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ
watch
рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
grunt watch
ред рдЕрдм рдПрдХ рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВ: рдореИрдВ рдЕрдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЗрд╢ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ рддрд╛рдХрд┐ рд╣рдо рдПрдХ JSLint рддреНрд░реБрдЯрд┐ рджреЗрдЦреЗрдВред рдореИрдВрдиреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
some rubbish stuff
рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдмрдЪрд╛рдпрд╛ред рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдореИрдВ рдЗрд╕реЗ рдЕрдм рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ
$.fn.awesome
рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА jQuery рдХреЛрдб рднреА рд╣рдЯрд╛
$.fn.awesome
ред рдЧреНрд░рдВрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рдкрд░реАрдХреНрд╖рдг рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдЧрд┐рд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдФрд░ рдЕрдм рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреВрдВрдЧрд╛, рдФрд░ рд╕рднреА рдХрд╛рд░реНрдп рд╕рдлрд▓ рд╣реЛрдВрдЧреЗ:

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