SlideShare a Scribd company logo
TECHNOLOGY | INNOVATION | SOLUTIONS
Yeoman: Workflows for Fun and Profit
Tim Doherty
TECHNOLOGY | INNOVATION | SOLUTIONS
The Problem
???
TECHNOLOGY | INNOVATION | SOLUTIONS
The Problem
• Wide selection of front-end tools and libraries
• Learning how to use them together is difficult
• There are lots of ways to do the same thing
• Even if you know how, configuration is tedious
• Common tasks must be repeated manually
• Lots of boilerplate to bootstrap a new app
• Lots of boilerplate to add new features to an app
TECHNOLOGY | INNOVATION | SOLUTIONS
Enter Yeoman
Workflow comprised of 3 Node-based tools:
Yo: scaffold applications and files
Bower: manage client-side dependencies
*Grunt: JavaScript task runner
*Gulp is also supported
TECHNOLOGY | INNOVATION | SOLUTIONS
• Command-line tool to scaffold applications/files
• Invokes Yeoman Generators to do the heavy lifting
$ yo <generator name>
TECHNOLOGY | INNOVATION | SOLUTIONS
Yeoman Generators
• Node packages invoked by the Yo tool
• Blueprints for scaffolding applications/files
• Official Yeoman generators
• Community Yeoman generators
• Custom Yeoman generators
TECHNOLOGY | INNOVATION | SOLUTIONS
Generators
Once, to generate basic app structure
$ yo <generator name> <options> --<flags>
• Creates directory structure
• Creates boilerplate application files from templates
• Creates Grunt config, Node and Bower manifests
• Installs Node and Bower dependencies
TECHNOLOGY | INNOVATION | SOLUTIONS
Sub-Generators
Any time you need a new source file(s)
$ yo <generator>:<sub-generator> …
• Creates new file(s) from template(s)
• JavaScript source file
• Unit test
• HTML template
• Etc.
• Bonus: sub-generators can manage script tags
• Automatically insert/remove tags in index.html
TECHNOLOGY | INNOVATION | SOLUTIONS
Custom Generators
Can’t find the right official/community generator?
• Extend base Yeoman generator
• Do stuff exactly the way you want
• Up-front cost
• Maintenance cost
TECHNOLOGY | INNOVATION | SOLUTIONS
Why use Yeoman Generators?
• Increase productivity / reduce boilerplate
• Pre-configure automation tools and tasks
• Improve consistency and quality
• Impose application structure
• Help enforce code style
TECHNOLOGY | INNOVATION | SOLUTIONS
Bower
Client-side package manager from Twitter
• Install/remove scripts & assets from command line
• Packages can be installed from:
• Public registry
• Private registry
• Git / Subversion endpoint
• Local folder
• Url
• Symlink
TECHNOLOGY | INNOVATION | SOLUTIONS
Bower
• $ bower search angular
• $ bower install jquery
• $ bower uninstall underscore
• $ bower install git://my.git.com/myComponent
• $ bower install ~/source/myComponent
• $ bower link <myComponent>
TECHNOLOGY | INNOVATION | SOLUTIONS
Why Use Bower?
• Simplified script/asset management
• Installs transitive dependencies
• Versioning of components
• Author your own reusable components
• Dependency manifest for automated installation
• Yeoman generators create manifest for you
TECHNOLOGY | INNOVATION | SOLUTIONS
Grunt
JavaScript task runner on Node
• Command line interface + local Grunt instance
• Configuration file + plugins (node packages)
• Chain tasks to create new “meta” tasks
TECHNOLOGY | INNOVATION | SOLUTIONS
Grunt Tasks
$ grunt <task name>
• Spawn a development server
• Lint source code
• Spawn unit & e2e test runners
• CSS preprocessing (Sass/Less/Stylus)
• Concatenate JavaScript and CSS files
• Minify concatenated files
…and much more
TECHNOLOGY | INNOVATION | SOLUTIONS
Why Use Grunt?
• Write and configure automation tasks in JavaScript
• Grunt ecosystem is huge, with hundreds of plugins
• Can’t find the right plugin? Write one yourself
• Yeoman generators setup grunt for you
• Install local grunt
• Scaffold your Gruntfile
• Install plugins
TECHNOLOGY | INNOVATION | SOLUTIONS
Putting it all Together
Yo: Creates your app structure. Configures Bower and Grunt for you. Installs
Bower and Grunt (Node) dependencies. Creates new files on-demand.
Bower: Installs / removes scripts and assets via command line. Installs /
removes transitive dependencies. Simplifies version management.
Grunt: Runs tasks that comprise your workflow. Tasks can run granularly, i.e.,
“grunt test” or in batch, i.e., “grunt build”
TECHNOLOGY | INNOVATION | SOLUTIONS
Summary
• Yeoman increases productivity and quality
• Modular, extensible architecture
• The “Yeoman workflow” is an opinionated track
intended provide a robust starting point for web apps
• Similar toolsets include Brunch and Lineman, but
Yeoman has the widest adoption
TECHNOLOGY | INNOVATION | SOLUTIONS
Common Objections
“I don’t need all that cruft”
Maybe not, but how are you doing it now? Is it easier?
“Bower downloads a bunch of crap I don’t need”
Poor manifest, contact the author. Still, who cares? Bandwidth and
storage are cheap in exchange for Bower’s functionality.
“This is way too complicated, I don’t need it for my simple app”
Maybe, but chances are your app will grow, and so will your team.
Automating your workflow early on will make your life a lot easier.
“I don’t understand what all these Grunt tasks do”
Spend some time learning each. Yeoman generators help shorten the
learning curve with working, preconfigured examples.
TECHNOLOGY | INNOVATION | SOLUTIONS
Questions?
TECHNOLOGY | INNOVATION | SOLUTIONS
Yeoman FTW!!!

More Related Content

What's hot

Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneciberkleid
 
Perfecting Your Development Tools: Updates to the Helix Plugin for Jenkins
Perfecting Your Development Tools: Updates to the Helix Plugin for JenkinsPerfecting Your Development Tools: Updates to the Helix Plugin for Jenkins
Perfecting Your Development Tools: Updates to the Helix Plugin for JenkinsPerforce
 
An Ops Primer to Productionalizing Datameer
An Ops Primer to Productionalizing DatameerAn Ops Primer to Productionalizing Datameer
An Ops Primer to Productionalizing DatameerColin Brown
 
Java Application Servers Are Dead!
Java Application Servers Are Dead!Java Application Servers Are Dead!
Java Application Servers Are Dead!Eberhard Wolff
 
Android pro tips trilogy
Android  pro tips trilogyAndroid  pro tips trilogy
Android pro tips trilogyVitali Pekelis
 
ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...
ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...
ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...Anand Bhojan
 
The Day of the Updates
The Day of the UpdatesThe Day of the Updates
The Day of the UpdatesItzik Kotler
 
Software Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliverySoftware Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliveryEberhard Wolff
 
Chef for DevOps - an Introduction
Chef for DevOps - an IntroductionChef for DevOps - an Introduction
Chef for DevOps - an IntroductionSanjeev Sharma
 
Task runners + theming automating your workflow
Task runners + theming  automating your workflowTask runners + theming  automating your workflow
Task runners + theming automating your workflowJoshua Gilmer
 
Puppet Camp Melbourne 2014:
Puppet Camp Melbourne 2014: Puppet Camp Melbourne 2014:
Puppet Camp Melbourne 2014: Puppet
 
Solano vs Jenkins
Solano vs JenkinsSolano vs Jenkins
Solano vs JenkinsChu Xu
 
Micro Services - Smaller is Better?
Micro Services - Smaller is Better?Micro Services - Smaller is Better?
Micro Services - Smaller is Better?Eberhard Wolff
 
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...The Linux Foundation
 
iOS 7 URL Session & Motion FX APIs
iOS 7 URL Session & Motion FX APIsiOS 7 URL Session & Motion FX APIs
iOS 7 URL Session & Motion FX APIsrsebbe
 
CloudBees Continuous Integration and Test with Appvance PerformanceCloud
CloudBees Continuous Integration and Test with Appvance PerformanceCloudCloudBees Continuous Integration and Test with Appvance PerformanceCloud
CloudBees Continuous Integration and Test with Appvance PerformanceCloudClever Moe
 
Intro to Electron - Creating Desktop Applications with HTML5
Intro to Electron - Creating Desktop Applications with HTML5Intro to Electron - Creating Desktop Applications with HTML5
Intro to Electron - Creating Desktop Applications with HTML5Felicia O'Garro
 

What's hot (20)

Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
 
Perfecting Your Development Tools: Updates to the Helix Plugin for Jenkins
Perfecting Your Development Tools: Updates to the Helix Plugin for JenkinsPerfecting Your Development Tools: Updates to the Helix Plugin for Jenkins
Perfecting Your Development Tools: Updates to the Helix Plugin for Jenkins
 
An Ops Primer to Productionalizing Datameer
An Ops Primer to Productionalizing DatameerAn Ops Primer to Productionalizing Datameer
An Ops Primer to Productionalizing Datameer
 
Java Application Servers Are Dead!
Java Application Servers Are Dead!Java Application Servers Are Dead!
Java Application Servers Are Dead!
 
Android pro tips trilogy
Android  pro tips trilogyAndroid  pro tips trilogy
Android pro tips trilogy
 
Heroku
HerokuHeroku
Heroku
 
ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...
ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...
ShowNTell: An easy-to-use tool for answering students’ questions with voice-o...
 
The Day of the Updates
The Day of the UpdatesThe Day of the Updates
The Day of the Updates
 
Software Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliverySoftware Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous Delivery
 
Chef for DevOps - an Introduction
Chef for DevOps - an IntroductionChef for DevOps - an Introduction
Chef for DevOps - an Introduction
 
Task runners + theming automating your workflow
Task runners + theming  automating your workflowTask runners + theming  automating your workflow
Task runners + theming automating your workflow
 
Puppet Camp Melbourne 2014:
Puppet Camp Melbourne 2014: Puppet Camp Melbourne 2014:
Puppet Camp Melbourne 2014:
 
Lick my Lollipop
Lick my LollipopLick my Lollipop
Lick my Lollipop
 
Solano vs Jenkins
Solano vs JenkinsSolano vs Jenkins
Solano vs Jenkins
 
Micro Services - Smaller is Better?
Micro Services - Smaller is Better?Micro Services - Smaller is Better?
Micro Services - Smaller is Better?
 
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
 
iOS 7 URL Session & Motion FX APIs
iOS 7 URL Session & Motion FX APIsiOS 7 URL Session & Motion FX APIs
iOS 7 URL Session & Motion FX APIs
 
CloudBees Continuous Integration and Test with Appvance PerformanceCloud
CloudBees Continuous Integration and Test with Appvance PerformanceCloudCloudBees Continuous Integration and Test with Appvance PerformanceCloud
CloudBees Continuous Integration and Test with Appvance PerformanceCloud
 
Intro to Electron - Creating Desktop Applications with HTML5
Intro to Electron - Creating Desktop Applications with HTML5Intro to Electron - Creating Desktop Applications with HTML5
Intro to Electron - Creating Desktop Applications with HTML5
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 

Viewers also liked (20)

стор 1 8
стор 1 8стор 1 8
стор 1 8
 
стор 1 8 1
стор 1 8 1стор 1 8 1
стор 1 8 1
 
Addsub poly
Addsub polyAddsub poly
Addsub poly
 
Estatuto social
Estatuto socialEstatuto social
Estatuto social
 
山师大附小
山师大附小山师大附小
山师大附小
 
Sara medina guide
Sara medina guideSara medina guide
Sara medina guide
 
стор 1 8 1
стор 1 8 1стор 1 8 1
стор 1 8 1
 
стор 1 7 1
стор 1 7 1стор 1 7 1
стор 1 7 1
 
стор 12
стор 12стор 12
стор 12
 
стор 1 8
стор 1 8стор 1 8
стор 1 8
 
Clodine's Deliverables - Axis DM Case Study
Clodine's Deliverables - Axis DM Case StudyClodine's Deliverables - Axis DM Case Study
Clodine's Deliverables - Axis DM Case Study
 
стор 1 8
стор 1 8стор 1 8
стор 1 8
 
Rencana kinerja tahunan 2012
Rencana kinerja tahunan 2012Rencana kinerja tahunan 2012
Rencana kinerja tahunan 2012
 
стор 1 16 1
стор 1 16 1стор 1 16 1
стор 1 16 1
 
стор 1 8 1
стор 1 8 1стор 1 8 1
стор 1 8 1
 
Conference call 4 q12 versão final
Conference call 4 q12 versão finalConference call 4 q12 versão final
Conference call 4 q12 versão final
 
Spec2006
Spec2006Spec2006
Spec2006
 
стор 1 12 1
стор 1 12 1стор 1 12 1
стор 1 12 1
 
Lakip tahun 2012
Lakip   tahun 2012Lakip   tahun 2012
Lakip tahun 2012
 
стор 1 12
стор 1 12стор 1 12
стор 1 12
 

Similar to Yeoman - Santa Barbara JavaScript Meetup

The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud RoadGert Drapers
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchHoward Greenberg
 
Development Processes and Tooling
Development Processes and ToolingDevelopment Processes and Tooling
Development Processes and ToolingBora Bilgin
 
Advanced dev ops governance with terraform
Advanced dev ops governance with terraformAdvanced dev ops governance with terraform
Advanced dev ops governance with terraformJames Counts
 
Application Deployment Patterns in the Cloud - NOVA Cloud and Software Engine...
Application Deployment Patterns in the Cloud - NOVA Cloud and Software Engine...Application Deployment Patterns in the Cloud - NOVA Cloud and Software Engine...
Application Deployment Patterns in the Cloud - NOVA Cloud and Software Engine...Derek Ashmore
 
Performance testing with 100,000 concurrent users in AWS
Performance testing with 100,000 concurrent users in AWSPerformance testing with 100,000 concurrent users in AWS
Performance testing with 100,000 concurrent users in AWSMatthias Matook
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentDave Ward
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2Docker, Inc.
 
Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Mandi Walls
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Lean IT Consulting
 
PhoneGap Day EU 2017: Hybrid Ember Apps
PhoneGap Day EU 2017: Hybrid Ember AppsPhoneGap Day EU 2017: Hybrid Ember Apps
PhoneGap Day EU 2017: Hybrid Ember AppsAlex Blom
 
Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDavide Benvegnù
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVaidik Kapoor
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsMichael Lihs
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Marcin Grzejszczak
 
Custom Tile Generation in PCF
Custom Tile Generation in PCFCustom Tile Generation in PCF
Custom Tile Generation in PCFDustin Ruehle
 
Azug BE Session Nov 2018 Wim Van den Broeck
Azug BE Session Nov 2018 Wim Van den BroeckAzug BE Session Nov 2018 Wim Van den Broeck
Azug BE Session Nov 2018 Wim Van den BroeckWim Van den Broeck
 

Similar to Yeoman - Santa Barbara JavaScript Meetup (20)

Devops
DevopsDevops
Devops
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Development Processes and Tooling
Development Processes and ToolingDevelopment Processes and Tooling
Development Processes and Tooling
 
Advanced dev ops governance with terraform
Advanced dev ops governance with terraformAdvanced dev ops governance with terraform
Advanced dev ops governance with terraform
 
Application Deployment Patterns in the Cloud - NOVA Cloud and Software Engine...
Application Deployment Patterns in the Cloud - NOVA Cloud and Software Engine...Application Deployment Patterns in the Cloud - NOVA Cloud and Software Engine...
Application Deployment Patterns in the Cloud - NOVA Cloud and Software Engine...
 
Performance testing with 100,000 concurrent users in AWS
Performance testing with 100,000 concurrent users in AWSPerformance testing with 100,000 concurrent users in AWS
Performance testing with 100,000 concurrent users in AWS
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deployment
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 
Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
Automated Browser Testing
Automated Browser TestingAutomated Browser Testing
Automated Browser Testing
 
PhoneGap Day EU 2017: Hybrid Ember Apps
PhoneGap Day EU 2017: Hybrid Ember AppsPhoneGap Day EU 2017: Hybrid Ember Apps
PhoneGap Day EU 2017: Hybrid Ember Apps
 
Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps world
 
Yeoman
YeomanYeoman
Yeoman
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps Culture
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017
 
Custom Tile Generation in PCF
Custom Tile Generation in PCFCustom Tile Generation in PCF
Custom Tile Generation in PCF
 
Azug BE Session Nov 2018 Wim Van den Broeck
Azug BE Session Nov 2018 Wim Van den BroeckAzug BE Session Nov 2018 Wim Van den Broeck
Azug BE Session Nov 2018 Wim Van den Broeck
 

Recently uploaded

UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Thierry Lestable
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsExpeed Software
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaRTTS
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupCatarinaPereira64715
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Product School
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀DianaGray10
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Product School
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2DianaGray10
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomCzechDreamin
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 

Yeoman - Santa Barbara JavaScript Meetup

  • 1. TECHNOLOGY | INNOVATION | SOLUTIONS Yeoman: Workflows for Fun and Profit Tim Doherty
  • 2. TECHNOLOGY | INNOVATION | SOLUTIONS The Problem ???
  • 3. TECHNOLOGY | INNOVATION | SOLUTIONS The Problem • Wide selection of front-end tools and libraries • Learning how to use them together is difficult • There are lots of ways to do the same thing • Even if you know how, configuration is tedious • Common tasks must be repeated manually • Lots of boilerplate to bootstrap a new app • Lots of boilerplate to add new features to an app
  • 4. TECHNOLOGY | INNOVATION | SOLUTIONS Enter Yeoman Workflow comprised of 3 Node-based tools: Yo: scaffold applications and files Bower: manage client-side dependencies *Grunt: JavaScript task runner *Gulp is also supported
  • 5. TECHNOLOGY | INNOVATION | SOLUTIONS • Command-line tool to scaffold applications/files • Invokes Yeoman Generators to do the heavy lifting $ yo <generator name>
  • 6. TECHNOLOGY | INNOVATION | SOLUTIONS Yeoman Generators • Node packages invoked by the Yo tool • Blueprints for scaffolding applications/files • Official Yeoman generators • Community Yeoman generators • Custom Yeoman generators
  • 7. TECHNOLOGY | INNOVATION | SOLUTIONS Generators Once, to generate basic app structure $ yo <generator name> <options> --<flags> • Creates directory structure • Creates boilerplate application files from templates • Creates Grunt config, Node and Bower manifests • Installs Node and Bower dependencies
  • 8. TECHNOLOGY | INNOVATION | SOLUTIONS Sub-Generators Any time you need a new source file(s) $ yo <generator>:<sub-generator> … • Creates new file(s) from template(s) • JavaScript source file • Unit test • HTML template • Etc. • Bonus: sub-generators can manage script tags • Automatically insert/remove tags in index.html
  • 9. TECHNOLOGY | INNOVATION | SOLUTIONS Custom Generators Can’t find the right official/community generator? • Extend base Yeoman generator • Do stuff exactly the way you want • Up-front cost • Maintenance cost
  • 10. TECHNOLOGY | INNOVATION | SOLUTIONS Why use Yeoman Generators? • Increase productivity / reduce boilerplate • Pre-configure automation tools and tasks • Improve consistency and quality • Impose application structure • Help enforce code style
  • 11. TECHNOLOGY | INNOVATION | SOLUTIONS Bower Client-side package manager from Twitter • Install/remove scripts & assets from command line • Packages can be installed from: • Public registry • Private registry • Git / Subversion endpoint • Local folder • Url • Symlink
  • 12. TECHNOLOGY | INNOVATION | SOLUTIONS Bower • $ bower search angular • $ bower install jquery • $ bower uninstall underscore • $ bower install git://my.git.com/myComponent • $ bower install ~/source/myComponent • $ bower link <myComponent>
  • 13. TECHNOLOGY | INNOVATION | SOLUTIONS Why Use Bower? • Simplified script/asset management • Installs transitive dependencies • Versioning of components • Author your own reusable components • Dependency manifest for automated installation • Yeoman generators create manifest for you
  • 14. TECHNOLOGY | INNOVATION | SOLUTIONS Grunt JavaScript task runner on Node • Command line interface + local Grunt instance • Configuration file + plugins (node packages) • Chain tasks to create new “meta” tasks
  • 15. TECHNOLOGY | INNOVATION | SOLUTIONS Grunt Tasks $ grunt <task name> • Spawn a development server • Lint source code • Spawn unit & e2e test runners • CSS preprocessing (Sass/Less/Stylus) • Concatenate JavaScript and CSS files • Minify concatenated files …and much more
  • 16. TECHNOLOGY | INNOVATION | SOLUTIONS Why Use Grunt? • Write and configure automation tasks in JavaScript • Grunt ecosystem is huge, with hundreds of plugins • Can’t find the right plugin? Write one yourself • Yeoman generators setup grunt for you • Install local grunt • Scaffold your Gruntfile • Install plugins
  • 17. TECHNOLOGY | INNOVATION | SOLUTIONS Putting it all Together Yo: Creates your app structure. Configures Bower and Grunt for you. Installs Bower and Grunt (Node) dependencies. Creates new files on-demand. Bower: Installs / removes scripts and assets via command line. Installs / removes transitive dependencies. Simplifies version management. Grunt: Runs tasks that comprise your workflow. Tasks can run granularly, i.e., “grunt test” or in batch, i.e., “grunt build”
  • 18. TECHNOLOGY | INNOVATION | SOLUTIONS Summary • Yeoman increases productivity and quality • Modular, extensible architecture • The “Yeoman workflow” is an opinionated track intended provide a robust starting point for web apps • Similar toolsets include Brunch and Lineman, but Yeoman has the widest adoption
  • 19. TECHNOLOGY | INNOVATION | SOLUTIONS Common Objections “I don’t need all that cruft” Maybe not, but how are you doing it now? Is it easier? “Bower downloads a bunch of crap I don’t need” Poor manifest, contact the author. Still, who cares? Bandwidth and storage are cheap in exchange for Bower’s functionality. “This is way too complicated, I don’t need it for my simple app” Maybe, but chances are your app will grow, and so will your team. Automating your workflow early on will make your life a lot easier. “I don’t understand what all these Grunt tasks do” Spend some time learning each. Yeoman generators help shorten the learning curve with working, preconfigured examples.
  • 20. TECHNOLOGY | INNOVATION | SOLUTIONS Questions?
  • 21. TECHNOLOGY | INNOVATION | SOLUTIONS Yeoman FTW!!!