@@ -1,4 +1,4 @@
<!DOCTYPE html><html lang=en data-version=fde6b6b><head><meta charset=utf-8><title>Step 8: Test with Karma and Jasmine | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><style>em{padding-right:2px}.highlight>pre,code.prettyprint{color:#fff}.social{margin-top:25px}.authors{font-style:italic}.keyboard{border:1px solid #ccc;border-radius:5px;padding:2px 6px;font-style:normal}.note{padding:25px}.note code,.note pre{padding:.2em .4em;border-radius:3px;border-width:0}.note.important{background:#f2dede}.note.important code,.note.important pre{background:#e2cbcb}.note.tip{background:#d2e0d2}.note.tip code,.note.tip pre{background:#bed3be}.note li,.note p{font-size:.9em}.note h2{font-size:1em;margin-top:1em}.note :first-child{margin-top:0}.note :last-child{margin-bottom:0}.mast-holder{width:100%;text-align:center}.mast-holder img{max-height:350px}.mast-intro>img{max-height:300px}@media (min-width:761px){.mast-intro>img{float:left;margin:-10px 10px 0 0;display:block}.mast-intro~h2{clear:left}}@media (min-width:761px){.side-by-side,article{overflow:auto}.side-by-side img{width:50%;float:left}}.codelab-paging{margin-top:2em;text-align:center}.codelab-paging a{font-weight:700;white-space:nowrap}.codelab-paging a:first-child{margin-right:1em}.codelab-paging a:nth-of-type(2){margin-left:1em}/*# sourceMappingURL=../static/yeoman-5808.52ec788454.map*/</style><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body class=codelab><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Step 8: Test with Karma and Jasmine</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/codelab/index.html>Let's Scaffold a Web App</a></li> <li><a href=/codelab/meet-yeoman.html>Meet Yeoman</a></li> <li><a href=/codelab/setup.html>Step 1</a></li> <li><a href=/codelab/install-generators.html>Step 2</a></li> <li><a href=/codelab/scaffold-app.html>Step 3</a></li> <li><a href=/codelab/review-generated-files.html>Step 4</a></li> <li><a href=/codelab/preview-inbrowser.html>Step 5</a></li> <li><a href=/codelab/write-app.html>Step 6</a></li> <li><a href=/codelab/install-packages.html>Step 7</a></li> <li><a href=/codelab/write-unit-tests.html class=active>Step 8</a></li> <li><a href=/codelab/prepare-production.html>Step 9</a></li> <li><a href=/codelab/local-storage.html>Step 10</a></li> <li><a href=/codelab/keep-going.html>Keep going</a></li></ul></nav><article class=main><div class=social><a href=https://twitter.com/share class=twitter-share-button data-text="Let's Scaffold A Web App With @Yeoman!" data-url="">Tweet</a><script>!function(t,e,n){var o,i=t.getElementsByTagName(e)[0],r=/^http:/.test(t.location)?'http':'https';t.getElementById(n)||(o=t.createElement(e),o.id=n,o.src=r+'://platform.twitter.com/widgets.js',i.parentNode.insertBefore(o,i))}(document,'script','twitter-wjs')//# sourceMappingURL=../static/yeoman-5809.96f514032f.map</script><script src=https://apis.google.com/js/plusone.js></script><g:plus action=share></g:plus></div><section class=content-chunk><p>For those unfamiliar with <a href=http://karma-runner.github.io>Karma</a>, it is a JavaScript test runner that is test framework agnostic. The Angular generator has two included test frameworks: <a href=https://code.angularjs.org/1.2.16/docs/guide/e2e-testing>ngScenario</a> and <a href="http://jasmine.github.io/">Jasmine</a>. When we ran <code>yo angular</code> earlier in this codelab the generator scaffolded a <code>test</code> directory in the root of the <code>mytodo</code> folder, created a <code>karma.conf.js</code> file, and pulled in the Node modules for Karma. We’ll be editing a Jasmine script to describe our tests soon but let’s see how we can run tests first.</p><h2>Run unit tests</h2><p>Let’s go back to the command line and kill our Grunt server using <span class=keyboard>Ctrl</span>+<span class=keyboard>C</span>. There is already a Grunt task scaffolded out in our <code>Gruntfile.js</code> for running tests. It can be run as follows:</p><div class=highlight><pre><code class=language-sh data-lang=sh>grunt <span class=nb>test</span>
<!DOCTYPE html><html lang=en data-version=6f5ee67><head><meta charset=utf-8><title>Step 8: Test with Karma and Jasmine | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><style>em{padding-right:2px}.highlight>pre,code.prettyprint{color:#fff}.social{margin-top:25px}.authors{font-style:italic}.keyboard{border:1px solid #ccc;border-radius:5px;padding:2px 6px;font-style:normal}.note{padding:25px}.note code,.note pre{padding:.2em .4em;border-radius:3px;border-width:0}.note.important{background:#f2dede}.note.important code,.note.important pre{background:#e2cbcb}.note.tip{background:#d2e0d2}.note.tip code,.note.tip pre{background:#bed3be}.note li,.note p{font-size:.9em}.note h2{font-size:1em;margin-top:1em}.note :first-child{margin-top:0}.note :last-child{margin-bottom:0}.mast-holder{width:100%;text-align:center}.mast-holder img{max-height:350px}.mast-intro>img{max-height:300px}@media (min-width:761px){.mast-intro>img{float:left;margin:-10px 10px 0 0;display:block}.mast-intro~h2{clear:left}}@media (min-width:761px){.side-by-side,article{overflow:auto}.side-by-side img{width:50%;float:left}}.codelab-paging{margin-top:2em;text-align:center}.codelab-paging a{font-weight:700;white-space:nowrap}.codelab-paging a:first-child{margin-right:1em}.codelab-paging a:nth-of-type(2){margin-left:1em}/*# sourceMappingURL=../static/yeoman-5808.52ec788454.map*/</style><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body class=codelab><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Step 8: Test with Karma and Jasmine</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/codelab/index.html>Let's Scaffold a Web App</a></li> <li><a href=/codelab/meet-yeoman.html>Meet Yeoman</a></li> <li><a href=/codelab/setup.html>Step 1</a></li> <li><a href=/codelab/install-generators.html>Step 2</a></li> <li><a href=/codelab/scaffold-app.html>Step 3</a></li> <li><a href=/codelab/review-generated-files.html>Step 4</a></li> <li><a href=/codelab/preview-inbrowser.html>Step 5</a></li> <li><a href=/codelab/write-app.html>Step 6</a></li> <li><a href=/codelab/install-packages.html>Step 7</a></li> <li><a href=/codelab/write-unit-tests.html class=active>Step 8</a></li> <li><a href=/codelab/prepare-production.html>Step 9</a></li> <li><a href=/codelab/local-storage.html>Step 10</a></li> <li><a href=/codelab/keep-going.html>Keep going</a></li></ul></nav><article class=main><div class=social><a href=https://twitter.com/share class=twitter-share-button data-text="Let's Scaffold A Web App With @Yeoman!" data-url="">Tweet</a><script>!function(t,e,n){var o,i=t.getElementsByTagName(e)[0],r=/^http:/.test(t.location)?'http':'https';t.getElementById(n)||(o=t.createElement(e),o.id=n,o.src=r+'://platform.twitter.com/widgets.js',i.parentNode.insertBefore(o,i))}(document,'script','twitter-wjs')//# sourceMappingURL=../static/yeoman-5809.96f514032f.map</script><script src=https://apis.google.com/js/plusone.js></script><g:plus action=share></g:plus></div><section class=content-chunk><p>For those unfamiliar with <a href=http://karma-runner.github.io>Karma</a>, it is a JavaScript test runner that is test framework agnostic. The Angular generator has two included test frameworks: <a href=https://code.angularjs.org/1.2.16/docs/guide/e2e-testing>ngScenario</a> and <a href="http://jasmine.github.io/">Jasmine</a>. When we ran <code>yo angular</code> earlier in this codelab the generator scaffolded a <code>test</code> directory in the root of the <code>mytodo</code> folder, created a <code>karma.conf.js</code> file, and pulled in the Node modules for Karma. We’ll be editing a Jasmine script to describe our tests soon but let’s see how we can run tests first.</p><h2>Run unit tests</h2><p>Let’s go back to the command line and kill our Grunt server using <span class=keyboard>Ctrl</span>+<span class=keyboard>C</span>. There is already a Grunt task scaffolded out in our <code>Gruntfile.js</code> for running tests. It can be run as follows:</p><div class=highlight><pre><code class=language-sh data-lang=sh>grunt <span class=nb>test</span>
</code></pre></div><p>When you run <code>grunt test</code>, you'll see some warnings in the Yeoman console. Don’t worry, that’s to be expected right now since our tests are currently failing for two reasons. Let's fix that.</p><h2>Update Karma configuration</h2><p>First, we need to check the Karma configuration to see if it is loading the new Bower components we installed in <a href=install-packages.html#install>Step 7</a>.</p><p>Open <code>karma.conf.js</code>. Currently the <code>files</code> array should look like this:</p><div class=highlight><pre><code class=language-js data-lang=js> <span class=nx>files</span><span class=o>:</span> <span class=p>[</span>
<span class=c1>// bower:js</span>
<span class=s1>'bower_components/jquery/dist/jquery.js'</span><span class=p>,</span>

Large diffs are not rendered by default.

@@ -1,3 +1,3 @@
<!DOCTYPE html><html lang=en data-version=fde6b6b><head><meta charset=utf-8><title>How to open an helpful issue | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href=/contributing/ class=active>Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html class=active>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>How to open an helpful issue</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html class=active>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></nav><article class=main><section class=content-chunk><p>In order for us to help you please check that you've completed the following steps:</p><ul><li>Made sure you're on the latest version <code>npm update -g yo</code></li> <li>Used the search feature to ensure that the bug hasn't been reported before</li> <li>Included as much information about the bug as possible, including any output you've received, what OS and version you're on, etc.</li> <li>Shared the output from running the following command in your project root as this can also help track down the issue.</li></ul><p>Unix:</p><div class=highlight><pre><code class=language-text data-lang=text>yo --version &amp;&amp; echo $PATH $NODE_PATH &amp;&amp; node -e 'console.log(process.platform, process.versions)' &amp;&amp; cat Gruntfile.js
<!DOCTYPE html><html lang=en data-version=6f5ee67><head><meta charset=utf-8><title>How to open an helpful issue | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href=/contributing/ class=active>Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html class=active>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>How to open an helpful issue</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html class=active>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></nav><article class=main><section class=content-chunk><p>In order for us to help you please check that you've completed the following steps:</p><ul><li>Made sure you're on the latest version <code>npm update -g yo</code></li> <li>Used the search feature to ensure that the bug hasn't been reported before</li> <li>Included as much information about the bug as possible, including any output you've received, what OS and version you're on, etc.</li> <li>Shared the output from running the following command in your project root as this can also help track down the issue.</li></ul><p>Unix:</p><div class=highlight><pre><code class=language-text data-lang=text>yo --version &amp;&amp; echo $PATH $NODE_PATH &amp;&amp; node -e 'console.log(process.platform, process.versions)' &amp;&amp; cat Gruntfile.js
</code></pre></div><p>Windows:</p><div class=highlight><pre><code class=language-text data-lang=text>yo --version &amp;&amp; echo %PATH% %NODE_PATH% &amp;&amp; node -e "console.log(process.platform, process.versions)" &amp;&amp; type Gruntfile.js
</code></pre></div><p>Then submit your issue on the relevant repository</p><ul><li><a href=https://github.com/yeoman/yeoman/issues/new>General concerns on the project</a></li> <li><a href=https://github.com/yeoman/yo/issues/new>Issues with <code>yo</code></a></li> <li><a href=https://github.com/yeoman/generator/issues/new>Issues when writing a generator</a></li></ul><p>For any issues related to a particular generator (<code>grunt build</code> not working, you'd like a new feature, etc), then search on github for the relevant repository. They're usually named <code>generator-X</code>.</p></section></article></div></div><footer class=SiteFooter><div class=SiteFooter-donation><div class=Donation><div class=Donation-sticker-clipping><img src=/static/yeoman-character-sticker.51cef7e007.png class=Donation-sticker width=190 height=294 alt=Stickers!></div><div class=Donation-text><a href=https://www.stickermule.com/user/1070704235/stickers>Show your love for <strong>Yeoman</strong>,<br> wear our <strong>sticker</strong>!</a></div></div></div><ul class=SiteFooter-links><li><a href=https://plus.google.com/101063139999404044459/posts class=icon><img src=/static/social-gplus.cdac08228d.svg class=SiteFooter-icon alt=Google+></a></li> <li><a href=https://twitter.com/yeoman class=icon><img src=/static/social-twitter.5b4b6063b9.svg class=SiteFooter-icon alt=Twitter></a></li> <li><a href=https://github.com/yeoman/yeoman class=icon><img src=/static/social-github.767995ad17.svg class=SiteFooter-icon alt=Github></a></li> <li><a href=/blog/atom.xml class=icon><img src=/static/social-feed.c635057faf.svg class=SiteFooter-icon alt=Feed></a></li> <li class=mobile-ln></li> <li><a href=http://yeoman.io/generator/ class="SiteFooter-button SiteFooter-button--light">API</a></li> <li><a href=https://github.com/yeoman/yeoman.github.io/blob/source/app/contributing/opening-issues.md class=SiteFooter-button title="Edit this page on Github to help improve the site">Improve this page</a></li></ul></footer><script src=//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js></script><script src=/static/bundle-5659.dd18c65bd5.js async></script><script>!function(n,t,e){'undefined'!=typeof e.module&&e.module.exports?e.module.exports=t():'undefined'!=typeof e.define&&'function'==e.define&&e.define.amd?define(n,t):e[n]=t()}('$script',function(){function n(n,t){for(var e=0,o=n.length;o>e;++e)if(!t(n[e]))return l;return 1}function t(t,e){n(t,function(n){return!e(n)})}function e(r,c,l){function p(n){return n.call?n():u[n]}function g(){if(!--j){u[y]=1,v&&v();for(var e in s)n(e.split('|'),p)&&!t(s[e],p)&&(s[e]=[])}}r=r[m]?r:[r];var h=c&&c.call,v=h?c:l,y=h?r.join(''):c,j=r.length;return setTimeout(function(){t(r,function(n){return d[n]?(y&&(f[y]=1),2==d[n]&&g()):(d[n]=1,y&&(f[y]=1),o(!a.test(n)&&i?i+n+'.js':n,g),void 0)})},0),e}function o(n,t){var e=r.createElement('script'),o=l;e.onload=e.onerror=e[v]=function(){e[g]&&!/^c|loade/.test(e[g])||o||(e.onload=e[v]=null,o=1,d[n]=2,t())},e.async=1,e.src=n,c.insertBefore(e,c.firstChild)}var i,r=document,c=r.getElementsByTagName('head')[0],a=/^https?:\/\//,u={},f={},s={},d={},l=!1,m='push',p='DOMContentLoaded',g='readyState',h='addEventListener',v='onreadystatechange';return!r[g]&&r[h]&&(r[h](p,function y(){r.removeEventListener(p,y,l),r[g]='complete'},l),r[g]='loading'),e.get=o,e.order=function(n,t,o){!function i(r){r=n.shift(),n.length?e(r,i):e(r,t,o)}()},e.path=function(n){i=n},e.ready=function(o,i,r){o=o[m]?o:[o];var c=[];return!t(o,function(n){u[n]||c[m](n)})&&n(o,function(n){return u[n]})?i():!function(n){s[n]=s[n]||[],s[n][m](i),r&&r(c)}(o.join('|')),e},e},this);var _gaq=[['_setAccount','UA-32956520-1'],['_setDomainName','.yeoman.io'],['_trackPageview'],['_trackPageLoadTime']];$script('http://www.google-analytics.com/ga.js'),$script('https://apis.google.com/js/plusone.js'),$script('//platform.twitter.com/widgets.js')//# sourceMappingURL=../static/yeoman-5812.3d3928805d.map</script></div></body></html>

Large diffs are not rendered by default.

@@ -1,3 +1,3 @@
<!DOCTYPE html><html lang=en data-version=fde6b6b><head><meta charset=utf-8><title>Style guide | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href=/contributing/ class=active>Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html class=active>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Style guide</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html class=active>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></nav><article class=main><section class=content-chunk><p>This project uses single-quotes, two space indentation, multiple var statements and whitespace around arguments. Use a single space after keywords like <code>function</code>. Ex:</p><div class=highlight><pre><code class=language-js data-lang=js><span class=kd>function</span> <span class=p>()</span> <span class=p>{</span> <span class=p>...</span> <span class=p>}</span>
<!DOCTYPE html><html lang=en data-version=6f5ee67><head><meta charset=utf-8><title>Style guide | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href=/contributing/ class=active>Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html class=active>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Style guide</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html class=active>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></nav><article class=main><section class=content-chunk><p>This project uses single-quotes, two space indentation, multiple var statements and whitespace around arguments. Use a single space after keywords like <code>function</code>. Ex:</p><div class=highlight><pre><code class=language-js data-lang=js><span class=kd>function</span> <span class=p>()</span> <span class=p>{</span> <span class=p>...</span> <span class=p>}</span>
<span class=kd>function</span> <span class=nx>foo</span><span class=p>()</span> <span class=p>{</span> <span class=p>...</span> <span class=p>}</span>
</code></pre></div><p>Please ensure any pull requests follow this closely. If you notice existing code which doesn't follow these practices, feel free to shout and we will address this.</p></section></article></div></div><footer class=SiteFooter><div class=SiteFooter-donation><div class=Donation><div class=Donation-sticker-clipping><img src=/static/yeoman-character-sticker.51cef7e007.png class=Donation-sticker width=190 height=294 alt=Stickers!></div><div class=Donation-text><a href=https://www.stickermule.com/user/1070704235/stickers>Show your love for <strong>Yeoman</strong>,<br> wear our <strong>sticker</strong>!</a></div></div></div><ul class=SiteFooter-links><li><a href=https://plus.google.com/101063139999404044459/posts class=icon><img src=/static/social-gplus.cdac08228d.svg class=SiteFooter-icon alt=Google+></a></li> <li><a href=https://twitter.com/yeoman class=icon><img src=/static/social-twitter.5b4b6063b9.svg class=SiteFooter-icon alt=Twitter></a></li> <li><a href=https://github.com/yeoman/yeoman class=icon><img src=/static/social-github.767995ad17.svg class=SiteFooter-icon alt=Github></a></li> <li><a href=/blog/atom.xml class=icon><img src=/static/social-feed.c635057faf.svg class=SiteFooter-icon alt=Feed></a></li> <li class=mobile-ln></li> <li><a href=http://yeoman.io/generator/ class="SiteFooter-button SiteFooter-button--light">API</a></li> <li><a href=https://github.com/yeoman/yeoman.github.io/blob/source/app/contributing/style-guide.md class=SiteFooter-button title="Edit this page on Github to help improve the site">Improve this page</a></li></ul></footer><script src=//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js></script><script src=/static/bundle-5659.dd18c65bd5.js async></script><script>!function(n,t,e){'undefined'!=typeof e.module&&e.module.exports?e.module.exports=t():'undefined'!=typeof e.define&&'function'==e.define&&e.define.amd?define(n,t):e[n]=t()}('$script',function(){function n(n,t){for(var e=0,o=n.length;o>e;++e)if(!t(n[e]))return l;return 1}function t(t,e){n(t,function(n){return!e(n)})}function e(r,c,l){function p(n){return n.call?n():u[n]}function g(){if(!--j){u[y]=1,v&&v();for(var e in s)n(e.split('|'),p)&&!t(s[e],p)&&(s[e]=[])}}r=r[m]?r:[r];var h=c&&c.call,v=h?c:l,y=h?r.join(''):c,j=r.length;return setTimeout(function(){t(r,function(n){return d[n]?(y&&(f[y]=1),2==d[n]&&g()):(d[n]=1,y&&(f[y]=1),o(!a.test(n)&&i?i+n+'.js':n,g),void 0)})},0),e}function o(n,t){var e=r.createElement('script'),o=l;e.onload=e.onerror=e[v]=function(){e[g]&&!/^c|loade/.test(e[g])||o||(e.onload=e[v]=null,o=1,d[n]=2,t())},e.async=1,e.src=n,c.insertBefore(e,c.firstChild)}var i,r=document,c=r.getElementsByTagName('head')[0],a=/^https?:\/\//,u={},f={},s={},d={},l=!1,m='push',p='DOMContentLoaded',g='readyState',h='addEventListener',v='onreadystatechange';return!r[g]&&r[h]&&(r[h](p,function y(){r.removeEventListener(p,y,l),r[g]='complete'},l),r[g]='loading'),e.get=o,e.order=function(n,t,o){!function i(r){r=n.shift(),n.length?e(r,i):e(r,t,o)}()},e.path=function(n){i=n},e.ready=function(o,i,r){o=o[m]?o:[o];var c=[];return!t(o,function(n){u[n]||c[m](n)})&&n(o,function(n){return u[n]})?i():!function(n){s[n]=s[n]||[],s[n][m](i),r&&r(c)}(o.join('|')),e},e},this);var _gaq=[['_setAccount','UA-32956520-1'],['_setDomainName','.yeoman.io'],['_trackPageview'],['_trackPageLoadTime']];$script('http://www.google-analytics.com/ga.js'),$script('https://apis.google.com/js/plusone.js'),$script('//platform.twitter.com/widgets.js')//# sourceMappingURL=../static/yeoman-5814.3d3928805d.map</script></div></body></html>
@@ -1,4 +1,4 @@
<!DOCTYPE html><html lang=en data-version=fde6b6b><head><meta charset=utf-8><title>Testing Guidelines | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href=/contributing/ class=active>Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html class=active>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Testing Guidelines</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html class=active>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></nav><article class=main><section class=content-chunk><p>This testing guide is based on Mocha BDD interface (<code>describe</code> / <code>it</code>).</p><h2>Main principles</h2><h4>Tests must start with a clean state</h4><p>This means prefer <code>beforeEach</code> to <code>before</code>. Re-instantiate objects before running each <code>it</code> blocks. Create every file required by a test in a <code>beforeEach</code> (or commit them in <code>fixtures/</code>). Reset any side effects done on the test environment after each test.</p><h4>Tests must be runnable in isolation</h4><p>Each test must pass if they're run alone. You can run a single test by using <code>mocha test.js --grep 'test name'</code>.</p><h4>Stub most performance heavy operation</h4><p>When possible, always stub networks or other long operations.</p><p>We use <a href="http://sinonjs.org/">sinon.js</a> for most stubbing needs.</p><h2>Naming convention</h2><p><code>describe</code> blocks should cover three types of information: Object to be tested, method/property, circumstantial group (basically, "when <em>this</em>").</p><p><code>it</code> blocks cover assertions. They should use as few lines of code as possible. There should be as many <code>it</code> block as there is assertion on a method effect.</p><p>Instance methods and properties should be prefixed by a bang sign (<code>#find()</code>). Static methods and properties should be prefixed by a dot (<code>.exclude()</code>).</p><div class=highlight><pre><code class=language-javascript data-lang=javascript><span class=c1>// Given this object</span>
<!DOCTYPE html><html lang=en data-version=6f5ee67><head><meta charset=utf-8><title>Testing Guidelines | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href=/contributing/ class=active>Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html class=active>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Testing Guidelines</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html class=active>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></nav><article class=main><section class=content-chunk><p>This testing guide is based on Mocha BDD interface (<code>describe</code> / <code>it</code>).</p><h2>Main principles</h2><h4>Tests must start with a clean state</h4><p>This means prefer <code>beforeEach</code> to <code>before</code>. Re-instantiate objects before running each <code>it</code> blocks. Create every file required by a test in a <code>beforeEach</code> (or commit them in <code>fixtures/</code>). Reset any side effects done on the test environment after each test.</p><h4>Tests must be runnable in isolation</h4><p>Each test must pass if they're run alone. You can run a single test by using <code>mocha test.js --grep 'test name'</code>.</p><h4>Stub most performance heavy operation</h4><p>When possible, always stub networks or other long operations.</p><p>We use <a href="http://sinonjs.org/">sinon.js</a> for most stubbing needs.</p><h2>Naming convention</h2><p><code>describe</code> blocks should cover three types of information: Object to be tested, method/property, circumstantial group (basically, "when <em>this</em>").</p><p><code>it</code> blocks cover assertions. They should use as few lines of code as possible. There should be as many <code>it</code> block as there is assertion on a method effect.</p><p>Instance methods and properties should be prefixed by a bang sign (<code>#find()</code>). Static methods and properties should be prefixed by a dot (<code>.exclude()</code>).</p><div class=highlight><pre><code class=language-javascript data-lang=javascript><span class=c1>// Given this object</span>
<span class=kd>function</span> <span class=nx>Class</span><span class=p>()</span> <span class=p>{</span>
<span class=k>this</span><span class=p>.</span><span class=nx>args</span> <span class=o>=</span> <span class=nx>nopt</span><span class=p>();</span>
<span class=p>};</span>

Large diffs are not rendered by default.

@@ -1,4 +1,4 @@
<!DOCTYPE html><html lang=en data-version=fde6b6b><head><meta charset=utf-8><title>Generators | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body class=discovery-page><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href=/generators/ class=active>Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Generators</span></h2><div class="container clearfix"><article class=main><section class=content-chunk><section class=main><a id=instructions-toggle>How to add your generator »</a><div id=instructions style=display:none><p> Your generator will automatically show up in the list if it meets the following criteria. The list is populated every hour.</p><ul><li>Be published on the npmjs.org repository</li> <li>Have the following in the module's <code>package.json</code> file:<ul> <li>The name should be <code>generator-your-unique-name</code>. This means it should begin with `generator-` and be followed by a unique (to npm) name. Scoped name support is coming in the future.</li> <li><code>yeoman-generator</code> in the keyword property.</li> <li>A good description. If you forked the generator, it should describe what is different and why it was forked.</li></ul></li><li>It'd be nice if it also had the following information:<ul> <li>Author information including name and link to your homepage.</li> <li>Generator documention link as its website.</li> <li>Github link in its repository field. <strong>Note: If your Github repo is no longer available, your generator will not show up in the list until you remove or update the repo field.</strong></li></ul></li></ul><p>If you don't follow these guidelines, your generator may get added to the <a href=#linkneeded>blacklist</a>. If your generator is on there, please fix the issues we notified you about and then submit a PR to remove the entry from the blacklist.</p></div><hr><div id=plugins-all><p>Loading generators...</p></div><div class=message id=search-notfound>No matching generator found. Try something else.</div></section><script type=text/template id=plugins-all-template><table class="table">
<!DOCTYPE html><html lang=en data-version=6f5ee67><head><meta charset=utf-8><title>Generators | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body class=discovery-page><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href=/generators/ class=active>Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Generators</span></h2><div class="container clearfix"><article class=main><section class=content-chunk><section class=main><a id=instructions-toggle>How to add your generator »</a><div id=instructions style=display:none><p> Your generator will automatically show up in the list if it meets the following criteria. The list is populated every hour.</p><ul><li>Be published on the npmjs.org repository</li> <li>Have the following in the module's <code>package.json</code> file:<ul> <li>The name should be <code>generator-your-unique-name</code>. This means it should begin with `generator-` and be followed by a unique (to npm) name. Scoped name support is coming in the future.</li> <li><code>yeoman-generator</code> in the keyword property.</li> <li>A good description. If you forked the generator, it should describe what is different and why it was forked.</li></ul></li><li>It'd be nice if it also had the following information:<ul> <li>Author information including name and link to your homepage.</li> <li>Generator documention link as its website.</li> <li>Github link in its repository field. <strong>Note: If your Github repo is no longer available, your generator will not show up in the list until you remove or update the repo field.</strong></li></ul></li></ul><p>If you don't follow these guidelines, your generator may get added to the <a href=#linkneeded>blacklist</a>. If your generator is on there, please fix the issues we notified you about and then submit a PR to remove the entry from the blacklist.</p></div><hr><div id=plugins-all><p>Loading generators...</p></div><div class=message id=search-notfound>No matching generator found. Try something else.</div></section><script type=text/template id=plugins-all-template><table class="table">
<caption>
<input class="search input-medium search-query" type="search" placeholder="Search in <%= it.modules.length %> generators..." autofocus>
</caption>

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -1,4 +1,4 @@
<!DOCTYPE html><html lang=en data-version=fde6b6b><head><meta charset=utf-8><title>Getting started with Yeoman | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href=/learning/ class=active>Using Yeoman</a><ul> <li><a href=/learning/index.html class=active>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Getting started with Yeoman</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/learning/index.html class=active>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></nav><article class=main><section class=content-chunk><p>Yeoman is a generic scaffolding system allowing the creation of any kind of app. It allows for rapidly getting started on new projects and streamlines the maintenance of existing projects.</p><p>Yeoman is language agnostic. It can generate projects in any language (Web, Java, Python, C#, etc.)</p><p>Yeoman by itself doesn't make any decisions. Every decision is made by <em>generators</em> which are basically plugins in the Yeoman environment. There's a <a href="/generators/">lot of publicly available generators</a> and its easy to <a href="/authoring/">create a new one</a> to match any workflow. Yeoman is always the right choice for your scaffolding needs.</p><p>Here are some common use cases:</p><ul><li>Rapidly create a new project</li> <li>Create new sections of a project, like a new controller with unit tests</li> <li>Create modules or packages</li> <li>Bootstrapping new services</li> <li>Enforcing standards, best practices and style guides</li> <li>Promote new projects by letting users get started with a sample app</li> <li>Etc, etc</li></ul><h2>Getting started</h2><p><code>yo</code> is the Yeoman command line utility allowing the creation of projects utilizing scaffolding templates (referred to as generators). Yo and the generators used are installed using <a href=http://npmjs.org>npm</a>.</p><h3>Installing yo and some generators</h3><p>First thing is to install <code>yo</code> using <code>npm</code>:</p><div class=highlight><pre><code class=language-sh data-lang=sh>npm install -g yo
<!DOCTYPE html><html lang=en data-version=6f5ee67><head><meta charset=utf-8><title>Getting started with Yeoman | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href=/learning/ class=active>Using Yeoman</a><ul> <li><a href=/learning/index.html class=active>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Getting started with Yeoman</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/learning/index.html class=active>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></nav><article class=main><section class=content-chunk><p>Yeoman is a generic scaffolding system allowing the creation of any kind of app. It allows for rapidly getting started on new projects and streamlines the maintenance of existing projects.</p><p>Yeoman is language agnostic. It can generate projects in any language (Web, Java, Python, C#, etc.)</p><p>Yeoman by itself doesn't make any decisions. Every decision is made by <em>generators</em> which are basically plugins in the Yeoman environment. There's a <a href="/generators/">lot of publicly available generators</a> and its easy to <a href="/authoring/">create a new one</a> to match any workflow. Yeoman is always the right choice for your scaffolding needs.</p><p>Here are some common use cases:</p><ul><li>Rapidly create a new project</li> <li>Create new sections of a project, like a new controller with unit tests</li> <li>Create modules or packages</li> <li>Bootstrapping new services</li> <li>Enforcing standards, best practices and style guides</li> <li>Promote new projects by letting users get started with a sample app</li> <li>Etc, etc</li></ul><h2>Getting started</h2><p><code>yo</code> is the Yeoman command line utility allowing the creation of projects utilizing scaffolding templates (referred to as generators). Yo and the generators used are installed using <a href=http://npmjs.org>npm</a>.</p><h3>Installing yo and some generators</h3><p>First thing is to install <code>yo</code> using <code>npm</code>:</p><div class=highlight><pre><code class=language-sh data-lang=sh>npm install -g yo
</code></pre></div><p>Then install the needed generator(s). Generators are npm packages named <code>generator-XYZ</code>. Search for them on <a href="/generators/">our website</a> or by selecting "install a generator" menu option while running <code>yo</code>. To install the <code>webapp</code> generator:</p><div class=highlight><pre><code class=language-text data-lang=text>npm install -g generator-webapp
</code></pre></div><p>New Node and npm users might runs into permissions issues. These issues shows up in the form of <code>EACCESS</code> errors during installation. Refer to the <a href=https://docs.npmjs.com/getting-started/fixing-npm-permissions>npm guide to fix permissions</a> if this happens to you.</p><p><em>npm is the package manager for <a href="https://nodejs.org/">Node.js</a> and comes bundled with it.</em></p><p><em>On Windows, we suggest using a better command line tool such as <a href="http://cmder.net/"><code>cmder</code></a> or PowerShell to improve the experience.</em></p><h3>Basic scaffolding</h3><p>We'll use <code>generator-webapp</code> in our examples below. Replace <code>webapp</code> with the name of your generator for the same result.</p><p>To scaffold a new project, run:</p><div class=highlight><pre><code class=language-sh data-lang=sh>yo webapp
</code></pre></div><p>Most generators will ask a series of questions to customize the new project. To see which options are available, use the <code>help</code> command:</p><div class=highlight><pre><code class=language-sh data-lang=sh>yo webapp --help

Large diffs are not rendered by default.

@@ -1,4 +1,4 @@
<!DOCTYPE html><html lang=en data-version=fde6b6b><head><meta charset=utf-8><title>Support | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href=/learning/ class=active>Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html class=active>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Support</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html class=active>Support</a></li></ul></nav><article class=main><section class=content-chunk><h2>First step</h2><p>The first step should always be to run <code>yo doctor</code>. This command will troubleshoot your environment and find most installation/configuration error.</p><h2>Getting Support</h2><p>Yeoman provides an optimized <strong>scaffolding</strong> and workflow experience for creating compelling web applications. Developers use Yeoman together with build tools, for <strong>building</strong> their projects and Bower for <strong>package management</strong>. A typical workflow between this trinity of tools might look like:</p><div class=highlight><pre><code class=language-sh data-lang=sh>yo webapp
<!DOCTYPE html><html lang=en data-version=6f5ee67><head><meta charset=utf-8><title>Support | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href=/learning/ class=active>Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html class=active>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Support</span></h2><div class="container clearfix has-sidebar"><nav class=context-nav><ul><li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html class=active>Support</a></li></ul></nav><article class=main><section class=content-chunk><h2>First step</h2><p>The first step should always be to run <code>yo doctor</code>. This command will troubleshoot your environment and find most installation/configuration error.</p><h2>Getting Support</h2><p>Yeoman provides an optimized <strong>scaffolding</strong> and workflow experience for creating compelling web applications. Developers use Yeoman together with build tools, for <strong>building</strong> their projects and Bower for <strong>package management</strong>. A typical workflow between this trinity of tools might look like:</p><div class=highlight><pre><code class=language-sh data-lang=sh>yo webapp
<span class=nv>$ </span>yo angular
<span class=nv>$ </span>bower install angular-directives
<span class=nv>$ </span>grunt

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -1 +1 @@
<!DOCTYPE html><html lang=en data-version=fde6b6b><head><meta charset=utf-8><title>Yeoman Weekly Team Meeting Notes | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Yeoman Weekly Team Meeting Notes</span></h2><div class="container clearfix"><article class=main><section class=content-chunk><p>The Yeoman core team mets each week to discuss what we've been working on and the direction of the project. We've been using Google Docs for our meeting notes over the past year, but are experimenting with using the site for this. It improves openness and can be referenced more easily &lt;3</p><ul><li><a href=/meeting-notes/2014-01-22.html>January 22, 2014</a></li> <li><a href=/meeting-notes/2014-01-15.html>January 15, 2014</a></li></ul></section></article></div></div><footer class=SiteFooter><div class=SiteFooter-donation><div class=Donation><div class=Donation-sticker-clipping><img src=/static/yeoman-character-sticker.51cef7e007.png class=Donation-sticker width=190 height=294 alt=Stickers!></div><div class=Donation-text><a href=https://www.stickermule.com/user/1070704235/stickers>Show your love for <strong>Yeoman</strong>,<br> wear our <strong>sticker</strong>!</a></div></div></div><ul class=SiteFooter-links><li><a href=https://plus.google.com/101063139999404044459/posts class=icon><img src=/static/social-gplus.cdac08228d.svg class=SiteFooter-icon alt=Google+></a></li> <li><a href=https://twitter.com/yeoman class=icon><img src=/static/social-twitter.5b4b6063b9.svg class=SiteFooter-icon alt=Twitter></a></li> <li><a href=https://github.com/yeoman/yeoman class=icon><img src=/static/social-github.767995ad17.svg class=SiteFooter-icon alt=Github></a></li> <li><a href=/blog/atom.xml class=icon><img src=/static/social-feed.c635057faf.svg class=SiteFooter-icon alt=Feed></a></li> <li class=mobile-ln></li> <li><a href=http://yeoman.io/generator/ class="SiteFooter-button SiteFooter-button--light">API</a></li> <li><a href=https://github.com/yeoman/yeoman.github.io/blob/source/app/meeting-notes/index.md class=SiteFooter-button title="Edit this page on Github to help improve the site">Improve this page</a></li></ul></footer><script src=//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js></script><script src=/static/bundle-5659.dd18c65bd5.js async></script><script>!function(n,t,e){'undefined'!=typeof e.module&&e.module.exports?e.module.exports=t():'undefined'!=typeof e.define&&'function'==e.define&&e.define.amd?define(n,t):e[n]=t()}('$script',function(){function n(n,t){for(var e=0,o=n.length;o>e;++e)if(!t(n[e]))return l;return 1}function t(t,e){n(t,function(n){return!e(n)})}function e(r,c,l){function p(n){return n.call?n():u[n]}function g(){if(!--j){u[y]=1,v&&v();for(var e in s)n(e.split('|'),p)&&!t(s[e],p)&&(s[e]=[])}}r=r[m]?r:[r];var h=c&&c.call,v=h?c:l,y=h?r.join(''):c,j=r.length;return setTimeout(function(){t(r,function(n){return d[n]?(y&&(f[y]=1),2==d[n]&&g()):(d[n]=1,y&&(f[y]=1),o(!a.test(n)&&i?i+n+'.js':n,g),void 0)})},0),e}function o(n,t){var e=r.createElement('script'),o=l;e.onload=e.onerror=e[v]=function(){e[g]&&!/^c|loade/.test(e[g])||o||(e.onload=e[v]=null,o=1,d[n]=2,t())},e.async=1,e.src=n,c.insertBefore(e,c.firstChild)}var i,r=document,c=r.getElementsByTagName('head')[0],a=/^https?:\/\//,u={},f={},s={},d={},l=!1,m='push',p='DOMContentLoaded',g='readyState',h='addEventListener',v='onreadystatechange';return!r[g]&&r[h]&&(r[h](p,function y(){r.removeEventListener(p,y,l),r[g]='complete'},l),r[g]='loading'),e.get=o,e.order=function(n,t,o){!function i(r){r=n.shift(),n.length?e(r,i):e(r,t,o)}()},e.path=function(n){i=n},e.ready=function(o,i,r){o=o[m]?o:[o];var c=[];return!t(o,function(n){u[n]||c[m](n)})&&n(o,function(n){return u[n]})?i():!function(n){s[n]=s[n]||[],s[n][m](i),r&&r(c)}(o.join('|')),e},e},this);var _gaq=[['_setAccount','UA-32956520-1'],['_setDomainName','.yeoman.io'],['_trackPageview'],['_trackPageLoadTime']];$script('http://www.google-analytics.com/ga.js'),$script('https://apis.google.com/js/plusone.js'),$script('//platform.twitter.com/widgets.js')//# sourceMappingURL=../static/yeoman-5825.3d3928805d.map</script></div></body></html>
<!DOCTYPE html><html lang=en data-version=6f5ee67><head><meta charset=utf-8><title>Yeoman Weekly Team Meeting Notes | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Yeoman Weekly Team Meeting Notes</span></h2><div class="container clearfix"><article class=main><section class=content-chunk><p>The Yeoman core team mets each week to discuss what we've been working on and the direction of the project. We've been using Google Docs for our meeting notes over the past year, but are experimenting with using the site for this. It improves openness and can be referenced more easily &lt;3</p><ul><li><a href=/meeting-notes/2014-01-22.html>January 22, 2014</a></li> <li><a href=/meeting-notes/2014-01-15.html>January 15, 2014</a></li></ul></section></article></div></div><footer class=SiteFooter><div class=SiteFooter-donation><div class=Donation><div class=Donation-sticker-clipping><img src=/static/yeoman-character-sticker.51cef7e007.png class=Donation-sticker width=190 height=294 alt=Stickers!></div><div class=Donation-text><a href=https://www.stickermule.com/user/1070704235/stickers>Show your love for <strong>Yeoman</strong>,<br> wear our <strong>sticker</strong>!</a></div></div></div><ul class=SiteFooter-links><li><a href=https://plus.google.com/101063139999404044459/posts class=icon><img src=/static/social-gplus.cdac08228d.svg class=SiteFooter-icon alt=Google+></a></li> <li><a href=https://twitter.com/yeoman class=icon><img src=/static/social-twitter.5b4b6063b9.svg class=SiteFooter-icon alt=Twitter></a></li> <li><a href=https://github.com/yeoman/yeoman class=icon><img src=/static/social-github.767995ad17.svg class=SiteFooter-icon alt=Github></a></li> <li><a href=/blog/atom.xml class=icon><img src=/static/social-feed.c635057faf.svg class=SiteFooter-icon alt=Feed></a></li> <li class=mobile-ln></li> <li><a href=http://yeoman.io/generator/ class="SiteFooter-button SiteFooter-button--light">API</a></li> <li><a href=https://github.com/yeoman/yeoman.github.io/blob/source/app/meeting-notes/index.md class=SiteFooter-button title="Edit this page on Github to help improve the site">Improve this page</a></li></ul></footer><script src=//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js></script><script src=/static/bundle-5659.dd18c65bd5.js async></script><script>!function(n,t,e){'undefined'!=typeof e.module&&e.module.exports?e.module.exports=t():'undefined'!=typeof e.define&&'function'==e.define&&e.define.amd?define(n,t):e[n]=t()}('$script',function(){function n(n,t){for(var e=0,o=n.length;o>e;++e)if(!t(n[e]))return l;return 1}function t(t,e){n(t,function(n){return!e(n)})}function e(r,c,l){function p(n){return n.call?n():u[n]}function g(){if(!--j){u[y]=1,v&&v();for(var e in s)n(e.split('|'),p)&&!t(s[e],p)&&(s[e]=[])}}r=r[m]?r:[r];var h=c&&c.call,v=h?c:l,y=h?r.join(''):c,j=r.length;return setTimeout(function(){t(r,function(n){return d[n]?(y&&(f[y]=1),2==d[n]&&g()):(d[n]=1,y&&(f[y]=1),o(!a.test(n)&&i?i+n+'.js':n,g),void 0)})},0),e}function o(n,t){var e=r.createElement('script'),o=l;e.onload=e.onerror=e[v]=function(){e[g]&&!/^c|loade/.test(e[g])||o||(e.onload=e[v]=null,o=1,d[n]=2,t())},e.async=1,e.src=n,c.insertBefore(e,c.firstChild)}var i,r=document,c=r.getElementsByTagName('head')[0],a=/^https?:\/\//,u={},f={},s={},d={},l=!1,m='push',p='DOMContentLoaded',g='readyState',h='addEventListener',v='onreadystatechange';return!r[g]&&r[h]&&(r[h](p,function y(){r.removeEventListener(p,y,l),r[g]='complete'},l),r[g]='loading'),e.get=o,e.order=function(n,t,o){!function i(r){r=n.shift(),n.length?e(r,i):e(r,t,o)}()},e.path=function(n){i=n},e.ready=function(o,i,r){o=o[m]?o:[o];var c=[];return!t(o,function(n){u[n]||c[m](n)})&&n(o,function(n){return u[n]})?i():!function(n){s[n]=s[n]||[],s[n][m](i),r&&r(c)}(o.join('|')),e},e},this);var _gaq=[['_setAccount','UA-32956520-1'],['_setDomainName','.yeoman.io'],['_trackPageview'],['_trackPageLoadTime']];$script('http://www.google-analytics.com/ga.js'),$script('https://apis.google.com/js/plusone.js'),$script('//platform.twitter.com/widgets.js')//# sourceMappingURL=../static/yeoman-5825.3d3928805d.map</script></div></body></html>
@@ -1,2 +1,2 @@
<!DOCTYPE html><html lang=en data-version=fde6b6b><head><meta charset=utf-8><title>Migrate Yeoman | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Migrate Yeoman</span></h2><div class="container clearfix"><article class=main><section class=content-chunk><p>Hi there, time traveler.</p><p>The package named <code>yeoman</code> was deprecated several years ago. It is now called <code>yo</code>. To install, run:</p><div class=highlight><pre><code class=language-sh data-lang=sh>npm -g install yo
<!DOCTYPE html><html lang=en data-version=6f5ee67><head><meta charset=utf-8><title>Migrate Yeoman | Yeoman</title><meta name=viewport content="width=device-width"><link rel=icon type=image/x-icon href=/static/favicon.b25e58c4b8.ico><meta name=google-site-verification content=fBQRJ6h7MV7_TJ7grbgq4P-d-07NRfDWPe4pqEEoH5w><link href="//fonts.googleapis.com/css?family=Roboto+Slab:400,700%7CRoboto:400,700,700italic,400italic" rel=stylesheet><link rel=stylesheet href=/static/bundle-5594.4dbe0c3199.css><link href=/blog/atom.xml type=application/atom+xml rel=alternate title="Yeoman Blog Atom Feed"></head><body><header class=page-header><div class=container><div class=mobile-bar><h1 class=logo><a href="/"><img src=/static/logo.2a54d87108.png alt=Yeoman></a></h1><button class="mobile-menu-toggle ir">open</button></div><nav class=main-menu><ul class=main-nav><li><a href="/learning/">Using Yeoman</a><ul> <li><a href=/learning/index.html>Getting started</a></li> <li><a href=/codelab/index.html>Tutorial (codelab)</a></li> <li><a href=/learning/resources.html>Resources</a></li> <li><a href=/learning/deployment.html>Deployment</a></li> <li><a href=/learning/faq.html>FAQ</a></li> <li><a href=/learning/support.html>Support</a></li></ul></li><li><a href="/generators/">Discovering generators</a></li> <li><a href="/authoring/">Creating a generator</a><ul> <li><a href=/authoring/index.html>Getting started</a></li> <li><a href=/authoring/running-context.html>Running Context</a></li> <li><a href=/authoring/user-interactions.html>User Interactions</a></li> <li><a href=/authoring/composability.html>Composability</a></li> <li><a href=/authoring/dependencies.html>Managing Dependencies</a></li> <li><a href=/authoring/file-system.html>Interacting with the file system</a></li> <li><a href=/authoring/gruntfile.html>Creating a Gruntfile</a></li> <li><a href=/authoring/storage.html>Storing user configs</a></li> <li><a href=/authoring/testing.html>Unit testing</a></li> <li><a href=/authoring/debugging.html>Debugging Generators</a></li> <li><a href=/authoring/integrating-yeoman.html>Integrating Yeoman in other tools</a></li> <li><a href="http://yeoman.io/generator/">Full API documentation</a></li></ul></li><li><a href="/blog/">Blog</a></li> <li><a href="/contributing/">Contributing</a><ul> <li><a href=/contributing/index.html>Contributing</a></li> <li><a href=/contributing/opening-issues.html>How to open an issue</a></li> <li><a href=/contributing/pull-request.html>How to submit a PR</a></li> <li><a href=/contributing/style-guide.html>Style Guide</a></li> <li><a href=/contributing/testing-guidelines.html>Testing Guidelines</a></li> <li><a href=/contributing/ticketing.html>Issue system overview</a></li></ul></li></ul></nav></div></header><div class=SiteWrapper><div id=content><h2 class=page-title><span class=container>Migrate Yeoman</span></h2><div class="container clearfix"><article class=main><section class=content-chunk><p>Hi there, time traveler.</p><p>The package named <code>yeoman</code> was deprecated several years ago. It is now called <code>yo</code>. To install, run:</p><div class=highlight><pre><code class=language-sh data-lang=sh>npm -g install yo
</code></pre></div><p>It is probably a good idea to refer to our <a href=http://yeoman.io>official website</a> for up to date documentation.</p></section></article></div></div><footer class=SiteFooter><div class=SiteFooter-donation><div class=Donation><div class=Donation-sticker-clipping><img src=/static/yeoman-character-sticker.51cef7e007.png class=Donation-sticker width=190 height=294 alt=Stickers!></div><div class=Donation-text><a href=https://www.stickermule.com/user/1070704235/stickers>Show your love for <strong>Yeoman</strong>,<br> wear our <strong>sticker</strong>!</a></div></div></div><ul class=SiteFooter-links><li><a href=https://plus.google.com/101063139999404044459/posts class=icon><img src=/static/social-gplus.cdac08228d.svg class=SiteFooter-icon alt=Google+></a></li> <li><a href=https://twitter.com/yeoman class=icon><img src=/static/social-twitter.5b4b6063b9.svg class=SiteFooter-icon alt=Twitter></a></li> <li><a href=https://github.com/yeoman/yeoman class=icon><img src=/static/social-github.767995ad17.svg class=SiteFooter-icon alt=Github></a></li> <li><a href=/blog/atom.xml class=icon><img src=/static/social-feed.c635057faf.svg class=SiteFooter-icon alt=Feed></a></li> <li class=mobile-ln></li> <li><a href=http://yeoman.io/generator/ class="SiteFooter-button SiteFooter-button--light">API</a></li> <li><a href=https://github.com/yeoman/yeoman.github.io/blob/source/app/migrate.md class=SiteFooter-button title="Edit this page on Github to help improve the site">Improve this page</a></li></ul></footer><script src=//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js></script><script src=/static/bundle-5659.dd18c65bd5.js async></script><script>!function(n,t,e){'undefined'!=typeof e.module&&e.module.exports?e.module.exports=t():'undefined'!=typeof e.define&&'function'==e.define&&e.define.amd?define(n,t):e[n]=t()}('$script',function(){function n(n,t){for(var e=0,o=n.length;o>e;++e)if(!t(n[e]))return l;return 1}function t(t,e){n(t,function(n){return!e(n)})}function e(r,c,l){function p(n){return n.call?n():u[n]}function g(){if(!--j){u[y]=1,v&&v();for(var e in s)n(e.split('|'),p)&&!t(s[e],p)&&(s[e]=[])}}r=r[m]?r:[r];var h=c&&c.call,v=h?c:l,y=h?r.join(''):c,j=r.length;return setTimeout(function(){t(r,function(n){return d[n]?(y&&(f[y]=1),2==d[n]&&g()):(d[n]=1,y&&(f[y]=1),o(!a.test(n)&&i?i+n+'.js':n,g),void 0)})},0),e}function o(n,t){var e=r.createElement('script'),o=l;e.onload=e.onerror=e[v]=function(){e[g]&&!/^c|loade/.test(e[g])||o||(e.onload=e[v]=null,o=1,d[n]=2,t())},e.async=1,e.src=n,c.insertBefore(e,c.firstChild)}var i,r=document,c=r.getElementsByTagName('head')[0],a=/^https?:\/\//,u={},f={},s={},d={},l=!1,m='push',p='DOMContentLoaded',g='readyState',h='addEventListener',v='onreadystatechange';return!r[g]&&r[h]&&(r[h](p,function y(){r.removeEventListener(p,y,l),r[g]='complete'},l),r[g]='loading'),e.get=o,e.order=function(n,t,o){!function i(r){r=n.shift(),n.length?e(r,i):e(r,t,o)}()},e.path=function(n){i=n},e.ready=function(o,i,r){o=o[m]?o:[o];var c=[];return!t(o,function(n){u[n]||c[m](n)})&&n(o,function(n){return u[n]})?i():!function(n){s[n]=s[n]||[],s[n][m](i),r&&r(c)}(o.join('|')),e},e},this);var _gaq=[['_setAccount','UA-32956520-1'],['_setDomainName','.yeoman.io'],['_trackPageview'],['_trackPageLoadTime']];$script('http://www.google-analytics.com/ga.js'),$script('https://apis.google.com/js/plusone.js'),$script('//platform.twitter.com/widgets.js')//# sourceMappingURL=static/yeoman-5731.3d3928805d.map</script></div></body></html>