SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Automating 
Performance Optimization 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
For the Client Side!
A pertinent question? 
Why is this giant bearded man talking to me about this 
topic? 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 2 
… Favorite tag: <canvas>
Agenda 
• Definitions 
• Background 
• Automating Performance Optimization 
– Methodology 
– Tools 
– JavaScript 
– CSS 
– Images 
– Some Manual (Code Review) Items 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
• Q & A 
• Appendices 
Page 3
Disclaimers and Caveats (Oh My) 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 4 
• Disclaimers 
– Disclaimer #1: Great performance still requires great code! 
– Disclaimer #2: Not just an asset pipeline! 
– Disclaimer #3: Of course you can’t automate all 
performance optimization… but you can automate some 
important things. 
• Caveat 
– Most premature optimization is bad! However, some can be 
good (seriously)
What is automated client performance 
optimization? 
• Answer: Reducing file size, http downloads, render 
time, improving code performance.. (dramatic music) 
automatically 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 5 
• Scope: performance-related tuning we can do by 
setting up automatic tasks in build/optimize tasks
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Why? 
Page 6 
Build (and optimize) running! 
But seriously, we can get a 
lot of value for comparatively 
little effort.
Methodology: Define 
• Think through everything you need to work through 
or that could slow your application down: 
– Lots of unused CSS rules (bootstrap, jqueryUI etc are big 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 7 
culprits here) 
– Not-so-responsive images on a responsive site 
– Multiple media query definitions 
– Un-optimized images 
– Other (we’ll get to those)
Methodology: Solve 
• Use a task automation tool to automate as much as 
possible (humans make mistakes!) 
• What can’t be done with the automation tool, include 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 8 
as part of a development process where humans 
intervene at the right places
Tools of the trade 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 9 
or
Copyright © 2014 Accenture LLP. All Rights Reserved. 
JavaScript 
Page 10 
• Use automated code quality tools, 
embedded in a grunt analyze or 
gulp analyze task 
• Embed these tools into your build / CI 
process 
• Require.js! 
• Peer review constantly, ideally with a 
tool like Phabricator, embedded into 
your dev process
CSS Preamble 
• CSS Preamble: All of this requires some pre-planning 
and structure 
– If you’re using a modular project structure, your grunt/gulp 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 11 
file will probably get a bit complex 
– Try to separate your css into logical groupings, e.g. vendor, 
common, page-specific 
• Follow a specific task order: CSS preprocessor  
Optimization Tasks  Minify & Concatenate CSS
• Inline CSS: Automatically inline uncommonly used 
CSS rules 
– Make sure those rules are in files with other uncommonly 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
CSS 
Page 12 
used rules 
• Defcon 5: Remove unused CSS with unCSS 
– Note: if you’re not careful, this will remove all the css 
applied by JS/pseudoclasses 
– Make liberal use of the ignore file 
– Include dynamically applied CSS in its own files, so you 
can ignore it
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Images 
Page 13 
• Optimize them! 
– Images run through most modern 
optimization/compression algorithms (e.g. optipng, jpgtran) 
are virtually indistinguishable from source images. 
• Not even creatives can tell the difference, honest! 
• Make responsive images automatically 
– Set sizes according to breakpoints, etc 
– Combine with Imager.js to make real magic 
• Sprites 
– For appropriate icons, create sprites or… 
– Create a Webfont from svg icons!
Code Review Items 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 14 
• Local Storage 
• HTML5 Application Cache 
• Batch API calls when possible: 
– Create an API object, e.g. 
• api.add(…) 
• api.add(…) 
• api.send(…) 
• Use 3D Animations (yay hardware acceleration) 
• Promises are your friends
Caveat to everything above… 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 15 
(old versions, 
of course)
Questions? 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 16
Appendix: Tasks 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 17 
• JavaScript 
– grunt-contrib-jshint 
– gulp-jshint 
– grunt-eslint 
– gulp-eslint 
• CSS 
– grunt-contrib-cssmin 
– gulp-cssmin 
– grunt-inline-css 
– grunt-uncss 
• Images 
– grunt-contrib-imagemin 
– gulp-imagemin 
– grunt-responsive-images 
– Imager.js 
– grunt-spritesmith 
– grunt-webfont
Appendix 2: Credits 
• Authors of all the awesome libraries and tasks used! 
Copyright © 2014 Accenture LLP. All Rights Reserved. 
Page 18

Weitere ähnliche Inhalte

Was ist angesagt?

jQuery Conference San Diego 2014 - Web Performance
jQuery Conference San Diego 2014 - Web PerformancejQuery Conference San Diego 2014 - Web Performance
jQuery Conference San Diego 2014 - Web Performance
dmethvin
 
jQuery Foundation Keynote
jQuery Foundation KeynotejQuery Foundation Keynote
jQuery Foundation Keynote
Richard Worth
 
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devicesSlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
reebalazs
 
Angular.js Talk at the November Meetup of the BerlinJS User Group
Angular.js Talk at the November Meetup of the BerlinJS User GroupAngular.js Talk at the November Meetup of the BerlinJS User Group
Angular.js Talk at the November Meetup of the BerlinJS User Group
Manuel Kießling
 

Was ist angesagt? (20)

jQuery Conference San Diego 2014 - Web Performance
jQuery Conference San Diego 2014 - Web PerformancejQuery Conference San Diego 2014 - Web Performance
jQuery Conference San Diego 2014 - Web Performance
 
jQuery Conference Austin Sept 2013
jQuery Conference Austin Sept 2013jQuery Conference Austin Sept 2013
jQuery Conference Austin Sept 2013
 
jQuery Chicago 2014 - Next-generation JavaScript Testing
jQuery Chicago 2014 - Next-generation JavaScript TestingjQuery Chicago 2014 - Next-generation JavaScript Testing
jQuery Chicago 2014 - Next-generation JavaScript Testing
 
jQuery Mobile Overview - Boston
jQuery Mobile  Overview -  BostonjQuery Mobile  Overview -  Boston
jQuery Mobile Overview - Boston
 
jQuery Foundation Keynote
jQuery Foundation KeynotejQuery Foundation Keynote
jQuery Foundation Keynote
 
JavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right ChoiceJavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right Choice
 
AngularJS vs React JS vs Node JS: Which is Best For Web Development ?
AngularJS vs React JS vs Node JS: Which is Best For Web Development ?AngularJS vs React JS vs Node JS: Which is Best For Web Development ?
AngularJS vs React JS vs Node JS: Which is Best For Web Development ?
 
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devicesSlickGrid Touch: Making complex JavaScript widgets work on mobile devices
SlickGrid Touch: Making complex JavaScript widgets work on mobile devices
 
Wulin kungfu final
Wulin kungfu finalWulin kungfu final
Wulin kungfu final
 
Angular vs React: Building modern SharePoint interfaces with SPFx
Angular vs React: Building modern SharePoint interfaces with SPFxAngular vs React: Building modern SharePoint interfaces with SPFx
Angular vs React: Building modern SharePoint interfaces with SPFx
 
AngularJS + React
AngularJS + ReactAngularJS + React
AngularJS + React
 
Atomic Design with Next.js
Atomic Design with Next.jsAtomic Design with Next.js
Atomic Design with Next.js
 
New Perspectives on Performance
New Perspectives on PerformanceNew Perspectives on Performance
New Perspectives on Performance
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angular
 
JS Framework Comparison - An infographic
JS Framework Comparison - An infographicJS Framework Comparison - An infographic
JS Framework Comparison - An infographic
 
A team 43 C
A team 43 CA team 43 C
A team 43 C
 
Spa with angular
Spa with angularSpa with angular
Spa with angular
 
Introduction to SPA with AngularJS
Introduction to SPA with AngularJSIntroduction to SPA with AngularJS
Introduction to SPA with AngularJS
 
Flexible UI Components for a Multi-Framework World
Flexible UI Components for a Multi-Framework WorldFlexible UI Components for a Multi-Framework World
Flexible UI Components for a Multi-Framework World
 
Angular.js Talk at the November Meetup of the BerlinJS User Group
Angular.js Talk at the November Meetup of the BerlinJS User GroupAngular.js Talk at the November Meetup of the BerlinJS User Group
Angular.js Talk at the November Meetup of the BerlinJS User Group
 

Ähnlich wie Automated perf optimization - jQuery Conference

5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
Acquia
 

Ähnlich wie Automated perf optimization - jQuery Conference (20)

Automated perf optimization - html5 dev conf
Automated perf optimization - html5 dev confAutomated perf optimization - html5 dev conf
Automated perf optimization - html5 dev conf
 
Minimize website page loading time – 20+ advanced SEO tips
Minimize website page loading time – 20+ advanced SEO tipsMinimize website page loading time – 20+ advanced SEO tips
Minimize website page loading time – 20+ advanced SEO tips
 
Pearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET DeveloperPearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET Developer
 
Rails Asset Pipeline - What, Why, Tips, Do's and Dont's
Rails Asset Pipeline - What, Why, Tips, Do's and Dont'sRails Asset Pipeline - What, Why, Tips, Do's and Dont's
Rails Asset Pipeline - What, Why, Tips, Do's and Dont's
 
WebHosting Performance / WordPress - Pubcon Vegas - Hendison
WebHosting Performance / WordPress  - Pubcon Vegas - HendisonWebHosting Performance / WordPress  - Pubcon Vegas - Hendison
WebHosting Performance / WordPress - Pubcon Vegas - Hendison
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
 
performance.ppt
performance.pptperformance.ppt
performance.ppt
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
 
Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb Edition
 
The Superhero’s Method of Modern HTML5 Development by RapidValue Solutions
The Superhero’s Method of Modern HTML5 Development by RapidValue SolutionsThe Superhero’s Method of Modern HTML5 Development by RapidValue Solutions
The Superhero’s Method of Modern HTML5 Development by RapidValue Solutions
 
Orlando DNN Usergroup Pres 12/06/11
Orlando DNN Usergroup Pres 12/06/11Orlando DNN Usergroup Pres 12/06/11
Orlando DNN Usergroup Pres 12/06/11
 
Office 365 Intranet
Office 365 IntranetOffice 365 Intranet
Office 365 Intranet
 
Tips tricks deliver_high_performing_secure_web_pages
Tips tricks deliver_high_performing_secure_web_pagesTips tricks deliver_high_performing_secure_web_pages
Tips tricks deliver_high_performing_secure_web_pages
 
Sahi Principles and Architecture
Sahi Principles and ArchitectureSahi Principles and Architecture
Sahi Principles and Architecture
 
Developer Night - Opticon18
Developer Night - Opticon18Developer Night - Opticon18
Developer Night - Opticon18
 
Sencha Services
Sencha ServicesSencha Services
Sencha Services
 
Famo.us - build native quality apps using html5 within a day
Famo.us - build native quality apps using html5 within a dayFamo.us - build native quality apps using html5 within a day
Famo.us - build native quality apps using html5 within a day
 
Opticon18: Developer Night
Opticon18: Developer NightOpticon18: Developer Night
Opticon18: Developer Night
 
Stc 2015 preparing legacy projects for responsive design - technical issues
Stc 2015   preparing legacy projects for responsive design - technical issuesStc 2015   preparing legacy projects for responsive design - technical issues
Stc 2015 preparing legacy projects for responsive design - technical issues
 
Benchmarking Web Application Scanners for YOUR Organization
Benchmarking Web Application Scanners for YOUR OrganizationBenchmarking Web Application Scanners for YOUR Organization
Benchmarking Web Application Scanners for YOUR Organization
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

Automated perf optimization - jQuery Conference

  • 1. Automating Performance Optimization Copyright © 2014 Accenture LLP. All Rights Reserved. For the Client Side!
  • 2. A pertinent question? Why is this giant bearded man talking to me about this topic? Copyright © 2014 Accenture LLP. All Rights Reserved. Page 2 … Favorite tag: <canvas>
  • 3. Agenda • Definitions • Background • Automating Performance Optimization – Methodology – Tools – JavaScript – CSS – Images – Some Manual (Code Review) Items Copyright © 2014 Accenture LLP. All Rights Reserved. • Q & A • Appendices Page 3
  • 4. Disclaimers and Caveats (Oh My) Copyright © 2014 Accenture LLP. All Rights Reserved. Page 4 • Disclaimers – Disclaimer #1: Great performance still requires great code! – Disclaimer #2: Not just an asset pipeline! – Disclaimer #3: Of course you can’t automate all performance optimization… but you can automate some important things. • Caveat – Most premature optimization is bad! However, some can be good (seriously)
  • 5. What is automated client performance optimization? • Answer: Reducing file size, http downloads, render time, improving code performance.. (dramatic music) automatically Copyright © 2014 Accenture LLP. All Rights Reserved. Page 5 • Scope: performance-related tuning we can do by setting up automatic tasks in build/optimize tasks
  • 6. Copyright © 2014 Accenture LLP. All Rights Reserved. Why? Page 6 Build (and optimize) running! But seriously, we can get a lot of value for comparatively little effort.
  • 7. Methodology: Define • Think through everything you need to work through or that could slow your application down: – Lots of unused CSS rules (bootstrap, jqueryUI etc are big Copyright © 2014 Accenture LLP. All Rights Reserved. Page 7 culprits here) – Not-so-responsive images on a responsive site – Multiple media query definitions – Un-optimized images – Other (we’ll get to those)
  • 8. Methodology: Solve • Use a task automation tool to automate as much as possible (humans make mistakes!) • What can’t be done with the automation tool, include Copyright © 2014 Accenture LLP. All Rights Reserved. Page 8 as part of a development process where humans intervene at the right places
  • 9. Tools of the trade Copyright © 2014 Accenture LLP. All Rights Reserved. Page 9 or
  • 10. Copyright © 2014 Accenture LLP. All Rights Reserved. JavaScript Page 10 • Use automated code quality tools, embedded in a grunt analyze or gulp analyze task • Embed these tools into your build / CI process • Require.js! • Peer review constantly, ideally with a tool like Phabricator, embedded into your dev process
  • 11. CSS Preamble • CSS Preamble: All of this requires some pre-planning and structure – If you’re using a modular project structure, your grunt/gulp Copyright © 2014 Accenture LLP. All Rights Reserved. Page 11 file will probably get a bit complex – Try to separate your css into logical groupings, e.g. vendor, common, page-specific • Follow a specific task order: CSS preprocessor  Optimization Tasks  Minify & Concatenate CSS
  • 12. • Inline CSS: Automatically inline uncommonly used CSS rules – Make sure those rules are in files with other uncommonly Copyright © 2014 Accenture LLP. All Rights Reserved. CSS Page 12 used rules • Defcon 5: Remove unused CSS with unCSS – Note: if you’re not careful, this will remove all the css applied by JS/pseudoclasses – Make liberal use of the ignore file – Include dynamically applied CSS in its own files, so you can ignore it
  • 13. Copyright © 2014 Accenture LLP. All Rights Reserved. Images Page 13 • Optimize them! – Images run through most modern optimization/compression algorithms (e.g. optipng, jpgtran) are virtually indistinguishable from source images. • Not even creatives can tell the difference, honest! • Make responsive images automatically – Set sizes according to breakpoints, etc – Combine with Imager.js to make real magic • Sprites – For appropriate icons, create sprites or… – Create a Webfont from svg icons!
  • 14. Code Review Items Copyright © 2014 Accenture LLP. All Rights Reserved. Page 14 • Local Storage • HTML5 Application Cache • Batch API calls when possible: – Create an API object, e.g. • api.add(…) • api.add(…) • api.send(…) • Use 3D Animations (yay hardware acceleration) • Promises are your friends
  • 15. Caveat to everything above… Copyright © 2014 Accenture LLP. All Rights Reserved. Page 15 (old versions, of course)
  • 16. Questions? Copyright © 2014 Accenture LLP. All Rights Reserved. Page 16
  • 17. Appendix: Tasks Copyright © 2014 Accenture LLP. All Rights Reserved. Page 17 • JavaScript – grunt-contrib-jshint – gulp-jshint – grunt-eslint – gulp-eslint • CSS – grunt-contrib-cssmin – gulp-cssmin – grunt-inline-css – grunt-uncss • Images – grunt-contrib-imagemin – gulp-imagemin – grunt-responsive-images – Imager.js – grunt-spritesmith – grunt-webfont
  • 18. Appendix 2: Credits • Authors of all the awesome libraries and tasks used! Copyright © 2014 Accenture LLP. All Rights Reserved. Page 18

Hinweis der Redaktion

  1. Hi, I’m Matt Lancaster. I want to talk to you about a topic near and dear to my heart: client side performance optimization.
  2. Sr. Technology Architect / Manager Emerging Tech Cat herding / leading large web projects / Mention AOWP Mention that we’ve created a working architecture with multiple components and have opinions on most out there Battle tested on multiple projects
  3. Disclaimer #1 – Review, Review… Friends don’t let friends (who came over from Java) do the wrong kind of OOP First rule of triage == treat severe but quickly manageable wounds first: you will never get to other worthwhile perf issues if patient dies on the table Premature Opt like… other things done premat, everyone ends up frustrated in end… everyone has bad time Greatest thing since sliced bread to add a bunch of caching layers, don’t
  4. How many of you have perf SLAs? Build complex client-side applications?
  5. grunt-contrib-jshint gulp-jshint grunt-eslint gulp-eslint
  6. grunt-contrib-cssmin gulp-cssmin grunt-inline-css grunt-uncss
  7. grunt-contrib-imagemin gulp-imagemin grunt-responsive-images Imager.js grunt-spritesmith grunt-webfont