SlideShare a Scribd company logo
Kickstarting Node.js Projects with 
patrickbuergin.com 
2014-12-04
xkcd.com/910 
2
It Can Be Hard to Get Started 
‣ Naming things 
‣ Searching for best practices 
‣ Settling for a project structure 
‣ Setting up build scripts 
‣ Managing dependencies 
‣ Writing boilerplate code 
… 
No Consensus 
TL; DR 
3
Yeoman 
Overview 
yeoman.io 
Yeoman helps you kickstart new 
projects, prescribing best practices 
and tools to help you stay productive. 
Weekly #downloads @ npm 
4
Yeoman 
It’s a Workflow… 
Scaffolding Package Management Build System 
yo Bower & npm Grunt / Gulp 
5
Yeoman 
…and an Ecosystem of Generators 
6
Yeoman 
…and an Ecosystem of Generators 
6
Front-End Example 
Launching a Generator 
$ npm install -g yo 
$ npm install -g generator-webapp 
7
Front-End Example 
Generator Output 
+ Minification, Testing, Linting, … 
$ grunt serve 
8
Front-End Example 
Workflow 
Scaffolding Package Management Build System 
yo Bower & npm Grunt 
9
Yeoman Isn’t Limited to Front-End 
10
Yeoman Isn’t Limited to Front-End 
10
Some Related Concepts 
Express Generator Archetypes 
Eclipse (Java) 
& 
new 
& 
generate 
11
Popular Node Generators 
express 
kraken 
node 
Weekly #downloads @ npm 
“based on the express command line tool” 
builds upon Express and enables 
environment-aware, dynamic configuration, 
advanced middleware capabilities, security, 
and app lifecycle events. 
12
Demo 
generator-node + generator-express 
Let’s create a small node module with the help of generator-node…
Demo 
generator-node + generator-express 
After a number of questions, it initializes a suitable project structure
Demo 
generator-node + generator-express 
After a couple of seconds we’re ready to go.
Demo 
generator-node + generator-express 
Among other things, it created a README template, as well as a build 
script that runs a linter (JSHint) and tests (Mocha)
Demo 
generator-node + generator-express 
This is where you would add the module functions…
Demo 
generator-node + generator-express 
…and this is the corresponding test
Demo 
generator-node + generator-express 
For the sake of demonstration, let’s implement a module function that 
generates fancy job titles — just like this page does
Demo 
generator-node + generator-express 
Let’s adapt the test accordingly…
Demo 
generator-node + generator-express 
…and implement a suitable generate function
Demo 
generator-node + generator-express 
We’re good to go. 
Let’s run the build script and pack the module
Demo 
generator-node + generator-express 
Let’s use this opportunity to check out generator-express as well. 
I choose the most basic options…
Demo 
generator-node + generator-express 
This, again, only takes a couple of seconds and initializes a basic express 
project structure for us
Demo 
generator-node + generator-express 
By default, the build script starts the server and will automatically restart it 
whenever you change the code
Demo 
generator-node + generator-express 
This is what the server returns by default
Demo 
generator-node + generator-express 
Let’s stop the server and integrate the node module we’ve just created…
Demo 
generator-node + generator-express 
Here you see the generated project structure, as well as the app.js file.
Demo 
generator-node + generator-express 
Let’s edit the index page, so that it returns a list of fancy job titles. 
The corresponding files are just where you would expect them
Demo 
generator-node + generator-express 
That should do.
Demo 
generator-node + generator-express 
And here’s the result. This example was kinda far from practice, but 
I guess you got the idea of what Yeoman generators can do for you.
The MEAN Stack 
Node.js + Express 
REST API socket.io 
Angular.js 
HTML / CSS 
server 
client 
MongoDB Wire 
Mongoose ODM 
32
The MEAN Stack 
Node.js + Express 
REST API socket.io 
Angular.js 
HTML / CSS 
server 
client 
MongoDB Wire 
Mongoose ODM 
+ Testing, Authentication, Preprocessors, … 
32
Popular MEAN Generators 
angular-fullstack 
meanjs 
mean-seed 
meanstack 
Weekly #downloads @ npm 
33
Demo 
generator-meanjs 
You know the deal…
Demo 
generator-meanjs 
After we answer a number of questions, the generator initializes a fairly 
complex project structure
Demo 
generator-meanjs 
Let’s start a MongoDB server so that we can check out the application…
Demo 
generator-meanjs 
…then run grunt to build and start it
Demo 
generator-meanjs 
This is the default page. As you can see on the upper right, the scaffold already 
includes some basic user management functionality
Demo 
generator-meanjs 
Let’s register a new user. In order to use an external identity provider, we would 
have to add API keys and host the server on the internet (callbacks).
Demo 
generator-meanjs 
After logging in, you can find some menu items to manage your profile
Demo 
generator-meanjs 
The generated code is structured in a comprehensible manner. In the 
foreground, you see a part of the default schema for users (Mongoose)
Demo 
generator-meanjs 
The generated code is structured in a comprehensible manner. In the 
foreground, you see a part of the default schema for users (Mongoose) 
/app (back-end) 
Express components, Mongoose Schemas 
/config (back-end) 
Authentication Strategies, API Keys, Addresses, … 
/public (front-end) 
AngularJS modules, view templates, …
Demo 
generator-meanjs 
generator-meanjs also offers a number sub-generators in order to speed up your 
development — for example :crud-module
Demo 
generator-meanjs 
It creates both AngularJS and Express files, supporting full CRUD (create, read, update, 
delete) functionality, as well as basic test generation (Karma & Mocha).
Demo 
generator-meanjs 
This is what our new CRUD module looks like in the front-end
Demo 
generator-meanjs 
As promised, there is a list view, a detail view and views for adding/editing objects
Demo 
generator-meanjs 
Let’s add a new job…
Demo 
generator-meanjs 
There it is — it has also been written to our database by means of a POST request 
to the corresponding API endpoint provided by Express
Demo 
generator-meanjs 
Here is an excerpt of the generated code — a great starting point
Other Back-End Generators 
jhipster 
skinny 
Total #downloads ’14 @ npm Weekly #downloads @ npm 
“Skinny framework’s concept is Scala on Rails” 
49
Using Yeoman to Help Others Get Started 
50 
As we looked for a way to help the community 
build and deploy production level MEAN 
applications, we decided to go with a Yeoman 
generator. […] provides a powerful, easy to 
maintain, and open solution for scaffolding 
applications.
Building Generators 
51 
Well documented @ yeoman.io/authoring 
…and there is a generator for that :)
Discussion 
Bloat 
Outdated Generators 
Doesn’t fit your needs 
Agility 
Inspiration 
Focus on issue at hand 
Helping others 
Not invented here

More Related Content

PPTX
MongoDB Days Silicon Valley: Building Applications with the MEAN Stack
PPTX
Rapid Application Development with MEAN Stack
PPTX
Building single page applications
PDF
AngularJS Basics
PDF
The MEAN stack - SoCalCodeCamp - june 29th 2014
PPT
Get MEAN! Node.js and the MEAN stack
PPT
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
PDF
Node, express & sails
MongoDB Days Silicon Valley: Building Applications with the MEAN Stack
Rapid Application Development with MEAN Stack
Building single page applications
AngularJS Basics
The MEAN stack - SoCalCodeCamp - june 29th 2014
Get MEAN! Node.js and the MEAN stack
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
Node, express & sails

What's hot (20)

PPTX
You know what iMEAN? Using MEAN stack for application dev on Informix
PPTX
PPTX
An Overview on Nuxt.js
PPTX
Angular js introduction
PPTX
MEAN stack
PDF
The Complementarity of React and Web Components
PPTX
AngularJS vs React JS vs Node JS: Which is Best For Web Development ?
PDF
Introduction to VueJS & Vuex
PDF
Nuxt.JS Introdruction
PDF
Mean Stack - An Overview
PDF
Introduction to the MEAN stack
PDF
NodeSummit - MEAN Stack
PDF
Vue.js
PPTX
Introduction to mean stack
PPTX
Combining Angular and React Together
PPTX
Mern stack developement
PPTX
React Vs AnagularJS
PDF
Beginning MEAN Stack
PPTX
Starting from Scratch with the MEAN Stack
PPT
Beyond the MEAN Stack: Thinking Small with Node.js for the Enterprise
You know what iMEAN? Using MEAN stack for application dev on Informix
An Overview on Nuxt.js
Angular js introduction
MEAN stack
The Complementarity of React and Web Components
AngularJS vs React JS vs Node JS: Which is Best For Web Development ?
Introduction to VueJS & Vuex
Nuxt.JS Introdruction
Mean Stack - An Overview
Introduction to the MEAN stack
NodeSummit - MEAN Stack
Vue.js
Introduction to mean stack
Combining Angular and React Together
Mern stack developement
React Vs AnagularJS
Beginning MEAN Stack
Starting from Scratch with the MEAN Stack
Beyond the MEAN Stack: Thinking Small with Node.js for the Enterprise
Ad

Viewers also liked (6)

PDF
Rest api webinar(3)
PDF
Continuous Delivery with NetflixOSS
PDF
Front end workflow with yeoman
PDF
Create a RESTful API with NodeJS, Express and MongoDB
PDF
Yeoman AngularJS and D3 - A solid stack for web apps
PPTX
Yeoman generator
Rest api webinar(3)
Continuous Delivery with NetflixOSS
Front end workflow with yeoman
Create a RESTful API with NodeJS, Express and MongoDB
Yeoman AngularJS and D3 - A solid stack for web apps
Yeoman generator
Ad

Similar to Kickstarting Node.js Projects with Yeoman (20)

KEY
A nodejs application
PPT
Node js
PDF
What is Node.js? (ICON UK)
PDF
Express Generator.pdf
PPTX
Introduction to node.js
PPTX
Modern Development Tools
PDF
Node js first look - 2016
PDF
Intro to Node.js
PDF
MEAN Stack WeNode Barcelona Workshop
KEY
nodecalgary1
PPTX
Meanstack overview
PDF
An introduction to Node.js
PDF
Node js introduction
PDF
Node.js Tools Ecosystem
KEY
Practical Use of MongoDB for Node.js
PDF
Rapidly scaffold your frontend with yeoman
PPTX
JavaScript code generator with Yeoman
PDF
The MEAN Stack
PPTX
Getting Started with MEAN Stack
PDF
Node.js - async for the rest of us.
A nodejs application
Node js
What is Node.js? (ICON UK)
Express Generator.pdf
Introduction to node.js
Modern Development Tools
Node js first look - 2016
Intro to Node.js
MEAN Stack WeNode Barcelona Workshop
nodecalgary1
Meanstack overview
An introduction to Node.js
Node js introduction
Node.js Tools Ecosystem
Practical Use of MongoDB for Node.js
Rapidly scaffold your frontend with yeoman
JavaScript code generator with Yeoman
The MEAN Stack
Getting Started with MEAN Stack
Node.js - async for the rest of us.

Recently uploaded (20)

PPTX
ai tools demonstartion for schools and inter college
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Digital Strategies for Manufacturing Companies
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
medical staffing services at VALiNTRY
PDF
System and Network Administration Chapter 2
PDF
System and Network Administraation Chapter 3
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
Transform Your Business with a Software ERP System
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Online Work Permit System for Fast Permit Processing
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
ai tools demonstartion for schools and inter college
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Digital Strategies for Manufacturing Companies
Operating system designcfffgfgggggggvggggggggg
medical staffing services at VALiNTRY
System and Network Administration Chapter 2
System and Network Administraation Chapter 3
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Upgrade and Innovation Strategies for SAP ERP Customers
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Navsoft: AI-Powered Business Solutions & Custom Software Development
Transform Your Business with a Software ERP System
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PTS Company Brochure 2025 (1).pdf.......
ISO 45001 Occupational Health and Safety Management System
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Online Work Permit System for Fast Permit Processing
Wondershare Filmora 15 Crack With Activation Key [2025
Internet Downloader Manager (IDM) Crack 6.42 Build 41

Kickstarting Node.js Projects with Yeoman

  • 1. Kickstarting Node.js Projects with patrickbuergin.com 2014-12-04
  • 3. It Can Be Hard to Get Started ‣ Naming things ‣ Searching for best practices ‣ Settling for a project structure ‣ Setting up build scripts ‣ Managing dependencies ‣ Writing boilerplate code … No Consensus TL; DR 3
  • 4. Yeoman Overview yeoman.io Yeoman helps you kickstart new projects, prescribing best practices and tools to help you stay productive. Weekly #downloads @ npm 4
  • 5. Yeoman It’s a Workflow… Scaffolding Package Management Build System yo Bower & npm Grunt / Gulp 5
  • 6. Yeoman …and an Ecosystem of Generators 6
  • 7. Yeoman …and an Ecosystem of Generators 6
  • 8. Front-End Example Launching a Generator $ npm install -g yo $ npm install -g generator-webapp 7
  • 9. Front-End Example Generator Output + Minification, Testing, Linting, … $ grunt serve 8
  • 10. Front-End Example Workflow Scaffolding Package Management Build System yo Bower & npm Grunt 9
  • 11. Yeoman Isn’t Limited to Front-End 10
  • 12. Yeoman Isn’t Limited to Front-End 10
  • 13. Some Related Concepts Express Generator Archetypes Eclipse (Java) & new & generate 11
  • 14. Popular Node Generators express kraken node Weekly #downloads @ npm “based on the express command line tool” builds upon Express and enables environment-aware, dynamic configuration, advanced middleware capabilities, security, and app lifecycle events. 12
  • 15. Demo generator-node + generator-express Let’s create a small node module with the help of generator-node…
  • 16. Demo generator-node + generator-express After a number of questions, it initializes a suitable project structure
  • 17. Demo generator-node + generator-express After a couple of seconds we’re ready to go.
  • 18. Demo generator-node + generator-express Among other things, it created a README template, as well as a build script that runs a linter (JSHint) and tests (Mocha)
  • 19. Demo generator-node + generator-express This is where you would add the module functions…
  • 20. Demo generator-node + generator-express …and this is the corresponding test
  • 21. Demo generator-node + generator-express For the sake of demonstration, let’s implement a module function that generates fancy job titles — just like this page does
  • 22. Demo generator-node + generator-express Let’s adapt the test accordingly…
  • 23. Demo generator-node + generator-express …and implement a suitable generate function
  • 24. Demo generator-node + generator-express We’re good to go. Let’s run the build script and pack the module
  • 25. Demo generator-node + generator-express Let’s use this opportunity to check out generator-express as well. I choose the most basic options…
  • 26. Demo generator-node + generator-express This, again, only takes a couple of seconds and initializes a basic express project structure for us
  • 27. Demo generator-node + generator-express By default, the build script starts the server and will automatically restart it whenever you change the code
  • 28. Demo generator-node + generator-express This is what the server returns by default
  • 29. Demo generator-node + generator-express Let’s stop the server and integrate the node module we’ve just created…
  • 30. Demo generator-node + generator-express Here you see the generated project structure, as well as the app.js file.
  • 31. Demo generator-node + generator-express Let’s edit the index page, so that it returns a list of fancy job titles. The corresponding files are just where you would expect them
  • 32. Demo generator-node + generator-express That should do.
  • 33. Demo generator-node + generator-express And here’s the result. This example was kinda far from practice, but I guess you got the idea of what Yeoman generators can do for you.
  • 34. The MEAN Stack Node.js + Express REST API socket.io Angular.js HTML / CSS server client MongoDB Wire Mongoose ODM 32
  • 35. The MEAN Stack Node.js + Express REST API socket.io Angular.js HTML / CSS server client MongoDB Wire Mongoose ODM + Testing, Authentication, Preprocessors, … 32
  • 36. Popular MEAN Generators angular-fullstack meanjs mean-seed meanstack Weekly #downloads @ npm 33
  • 37. Demo generator-meanjs You know the deal…
  • 38. Demo generator-meanjs After we answer a number of questions, the generator initializes a fairly complex project structure
  • 39. Demo generator-meanjs Let’s start a MongoDB server so that we can check out the application…
  • 40. Demo generator-meanjs …then run grunt to build and start it
  • 41. Demo generator-meanjs This is the default page. As you can see on the upper right, the scaffold already includes some basic user management functionality
  • 42. Demo generator-meanjs Let’s register a new user. In order to use an external identity provider, we would have to add API keys and host the server on the internet (callbacks).
  • 43. Demo generator-meanjs After logging in, you can find some menu items to manage your profile
  • 44. Demo generator-meanjs The generated code is structured in a comprehensible manner. In the foreground, you see a part of the default schema for users (Mongoose)
  • 45. Demo generator-meanjs The generated code is structured in a comprehensible manner. In the foreground, you see a part of the default schema for users (Mongoose) /app (back-end) Express components, Mongoose Schemas /config (back-end) Authentication Strategies, API Keys, Addresses, … /public (front-end) AngularJS modules, view templates, …
  • 46. Demo generator-meanjs generator-meanjs also offers a number sub-generators in order to speed up your development — for example :crud-module
  • 47. Demo generator-meanjs It creates both AngularJS and Express files, supporting full CRUD (create, read, update, delete) functionality, as well as basic test generation (Karma & Mocha).
  • 48. Demo generator-meanjs This is what our new CRUD module looks like in the front-end
  • 49. Demo generator-meanjs As promised, there is a list view, a detail view and views for adding/editing objects
  • 50. Demo generator-meanjs Let’s add a new job…
  • 51. Demo generator-meanjs There it is — it has also been written to our database by means of a POST request to the corresponding API endpoint provided by Express
  • 52. Demo generator-meanjs Here is an excerpt of the generated code — a great starting point
  • 53. Other Back-End Generators jhipster skinny Total #downloads ’14 @ npm Weekly #downloads @ npm “Skinny framework’s concept is Scala on Rails” 49
  • 54. Using Yeoman to Help Others Get Started 50 As we looked for a way to help the community build and deploy production level MEAN applications, we decided to go with a Yeoman generator. […] provides a powerful, easy to maintain, and open solution for scaffolding applications.
  • 55. Building Generators 51 Well documented @ yeoman.io/authoring …and there is a generator for that :)
  • 56. Discussion Bloat Outdated Generators Doesn’t fit your needs Agility Inspiration Focus on issue at hand Helping others Not invented here