рдЧреНрд░рдиреНрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд╛рд╕ v0.4

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


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

рдпрд╣ рдЖрд▓реЗрдЦ рдЕрдиреБрджрд╛рди v0.3.9 рд╕реЗ рдЬрд╛рд░реА v0.4.0 рддрдХ рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рдкреНрд░рд╡рд╛рд╕ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг рдЕрд╕рдВрдЧрдд рд╣реИрдВ рдФрд░ рдЪрд▓рдирд╛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛ рдЬрд┐рддрдирд╛ рдХрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рдерд╛ред рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдкреВрд░реНрдг рдкреНрд░рд╡рд╛рд╕ рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдБ рд╣реИрдВ , рдпрд╣ рдореЗрд░реЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╣реИред

рдореИрдВ рдЧреНрд░рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ


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



рдПрдХ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдпреЗ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓реЗрдХрд┐рди рдЙрдмрд╛рдК рдХрд╛рд░реНрдп рдХрд┐рдП рдЧрдП рдереЗ:

тЖТ grunt Running "stylus:compile" (stylus) task File 'css/styles.css' created. Running "concat:js" (concat) task File "project.js" created. Running "lint:files" (lint) task Lint free. Running "min:js" (min) task File "project.min.js" created. Uncompressed size: 130468 bytes. Compressed size: 20937 bytes gzipped (74246 bytes minified). Running "qunit:all" (qunit) task Testing index.html...............OK >> 95 assertions passed (594ms) Running "watch" task Waiting... 

рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрджрд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: grunt.jsред рдЙрдкрд░реНрдпреБрдХреНрдд рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 module.exports = function(grunt) { grunt.initConfig({ stylus: { //  Stylus  CSS compile: { options: { 'compress': true, 'paths': ['css/styl/'] }, files: { 'css/styles.css': 'css/styles.styl' } } }, concat: { //  js- js: { src: [ /*     */ ], dest: 'project.js' } }, min: { //  js: { src: ['<config:concat.js.dest>'], dest: 'project.min.js' } }, jshint: { options: { smarttabs: true } }, lint: { //   files: ['<config:concat.js.dest>'] }, watch: { //     styl- stylus: { files: ['css/styl/*.styl'], tasks: 'stylus' }, //     lint    js- js: { files: ['src/*.js'], tasks: 'concat lint' } }, qunit: { //   qUnit- all: ['../test/index.html'] } }); //      grunt.loadNpmTasks('grunt-stylus'); //   grunt.registerTask('default', 'stylus concat:js lint min:js qunit watch'); grunt.registerTask('test', 'qunit'); }; 

рдореИрдВ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛, рдХреЛрдб рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рд╡рд╛рд╕


рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЧреНрд░рдВрдЯ рдореЙрдбреНрдпреВрд▓ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреЛ npm uninstall -g grunt : npm uninstall -g grunt

рдФрд░ рдЧреНрд░рд╛рдВрдЯ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЙрдбреНрдпреВрд▓ npm install -g grunt-cli : npm install -g grunt-cli

рдЧреНрд░рдВрдЯ рд╕реНрд╡рдпрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдм рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ npm install grunt : npm install grunt

рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

 тЖТ grunt --version grunt-cli v0.1.6 grunt v0.4.0 

рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЧреНрд░рдВрдЯ-рдЗрдирд┐рдЯ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ node.js> = 0.8.0 рдХрд╛ рд╕рдВрд╕реНрдХрд░рдгред

рдЕрдиреБрджрд╛рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ

 mv grunt.js Gruntfile.js 

рдкреБрд░рд╛рдиреЗ рдирд╛рдо рд╡рд╛рд▓реА рдЕрдиреБрджрд╛рди рдлрд╝рд╛рдЗрд▓ рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдмрд┐рдирд╛ рдирд╛рдо рдмрджрд▓реЗ рд╣рдо рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдЦреЗрдВрдЧреЗ:

Fatal error: Unable to find Gruntfile.

рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЕрдиреБрджрд╛рди рдлрд╝рд╛рдЗрд▓ рдХреЛ CoffeeScript : Gruntfile.cfish рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрдирд╛

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


рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЧреНрд░рд╛рдВрдЯ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЧреНрд░рдВрдЯ-рдХрдВрдЯреНрд░реАрдм рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ-
рд╕реЗрдЯ рдХрд░реЗрдВ:

 тЖТ npm install grunt-contrib-concat тЖТ npm install grunt-contrib-jshint тЖТ npm install grunt-contrib-uglify тЖТ npm install grunt-contrib-qunit тЖТ npm install grunt-contrib-watch тЖТ npm install grunt-contrib-stylus 

рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк --save-dev рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реНрдерд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдирд┐рд░реНрднрд░ рд╣реЛ рдЬрд╛рдПрдБред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдо рдЕрдиреБрджрд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ:

 grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-qunit'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-stylus'); 

рдЧреНрд░рд╛рдВрдЯ рдлрд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡

рд░рдЬрд┐рд╕реНрдЯрд░рдЯреИрд╕реНрдХ рд╡рд┐рдзрд┐ рдЕрдм рд╡рд┐рднрд╛рдЬрдХ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИред рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдп рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ: grunt.registerTask('test', 'qunit');

рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 grunt.registerTask('default', ['stylus', 'concat:js', 'jshint', 'min:js', 'qunit', 'watch']); 

рдкреНрд░рдкрддреНрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдмрдЬрд╛рдп <config:concat.js.dest> рдЕрдм <config:concat.js.dest> рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: <%= concat.js.dest %> ред

Jshint рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдЯ рдХрд╛рд░реНрдп рдЕрдм jshint рдХрд╛рд░реНрдп рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдЖрдк рддреБрд░рдВрдд рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 jshint: { options: { smarttabs: true }, js: ['project.js'] } 

рдмрджрд╕реВрд░рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рдирдЯ рдХрд╛рд░реНрдп рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред Src / dest рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 uglify: { js: { files: { 'project.min.js': ['<%= concat.js.dest %>'] } } } 

рдШрдбрд╝реА рдХреЗ рдХрд╛рд░реНрдп рдореЗрдВ, рд╣рдо рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ:

 watch: { js: { files: ['src/*.js'], tasks: ['concat', 'lint'] } } 

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

 module.exports = function(grunt) { grunt.initConfig({ //  Stylus  CSS stylus: { compile: { options: { 'compress': true, 'paths': ['css/styl/'] }, files: { 'css/styles.css': 'css/styles.styl' } } }, concat: { //  js- js: { src: [ /*     */ ], dest: 'project.js' } }, uglify: { //  js: { files: { 'project.min.js': ['<%= concat.js.dest %>'] } } }, jshint: { //   options: { smarttabs: true }, js: ['<%= concat.js.dest %>'] }, watch: { //     styl- stylus: { files: ['css/styl/*.styl'], tasks: 'stylus' }, //     lint    js- js: { files: ['src/*.js'], tasks: ['concat', 'lint'] } }, qunit: { //   qUnit- all: ['../test/index.html'] } }); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-qunit'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-stylus'); //   grunt.registerTask('default', ['stylus', 'concat:js', 'jshint', 'uglify:js', 'qunit', 'watch']); grunt.registerTask('test', 'qunit'); }; 


рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдордЧреНрд░реА

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


All Articles