We are installing Node.js on a Mac El Capitan, Version 10.11.2
We began doing so thinking we could achieve contact with Stellar.org's
platform using Rails. Turns out, we cannot at this time do so, to our
knowledge. That means this Gist has been misnamed twice in one name.
There is no Rails anything here, and there is no ruby-stellar-sdk
here,
either. What is here is everything I used to go from a Rails mindset to
Node.js learnings, so that we can write an app capable of working with
the Stellar platform.
The instructions that follow have our system up and running.
I am still cleaning up this instructional material, fine tuning the Gist
so no question is unanswered, no resource unlinked, this day 20160225.
I can recommend to you how to read this document, being the one who authored it.
I can tell you to give it a first gentle read, knowing ahead of time that every
name and term and reference you do not know will be defined and its best source
link given. This means the document will make more sense if you keep reading,
knowing the answers to your questions and definitions of unknown terms or names
will be answered and defined. Don't stop to look up every new term, don't visit
the links on your first read. Your second read through will have fewer questions,
and the links will be there to then answer them.
Yes, give this a relaxed reading all the way through and then come back here
and begin. You will see all is revealed and defined and referenced as you go
along, with sidebars and nuances shared where they are useful.
One more note .. I first arrived at a working app with gulp
.
I have begun writing those instructions in a new Gist.
I am currently following Heroku's Your First Heroku Node Program !
Wow, Heroku made it crystal clear easy peasy lemon squeezey.
As I went along doing the installations, the uninstalls, verifying every command
in order more than once while writing this Gist, I began collecting useful commands
and relationships such as what is required and what installs what.
I presume you have Homebrew and .git
in place here: ~/
.
How will you know if you do ?
Simple as opening a new Terminal and running this:
cd ~/
ls -aux
: you will see the .git
directory.
brew
is presumed installed
brew-cask
is installed by brew
and we do so here
node
is installed by brew
, updated by brew-cask
node
is Node.js installed as node
: update notices will show in brew update
nvm
is installed by brew
and required to install npm
nvm
is a Node Version Manager
npm
is a Node Package Manager
npm
is bundled with Node, npm
is rich with easily installed tools
npm
is updated with npm install --global npm@latest
anytime after install
npm
is used to install others, such as yo
, the full name being Yeoman
gulp
is a compiling, streaming, testing workflow space
yo
is short for Yeoman, requires node
be installed, and is creator of gulp
As I finish writing these instructions, it appears our work flow will be using
node
yo
gulp
trilogy, empowering the webapp creator space with gulp
using
the crowning-creator-jewel in the yeoman/generator-webapp repository.
Yeoman is a generator that scaffolds out a front-end web app using gulp for the build process.
To find definitions, descriptions and uses of the commands we will be using below,
search this file using the entire command. By the time this Gist is done, all of
these commands will work. This is a list of commands I needed or wanted to know the
proofs and results as this **homebrew
homebrew-cask
nvm
npm
yo
gulp
and its generator-webapp
)
By the time we are done, these and many more commands will return a result:
echo $HOME
echo $NVM_PATH
brew help
brew home
brew outdated
brew update
brew upgrade
brew upgrade ruby
: upgrades named app
brew cleanup
brew doctor
: Check your system for potential problems
brew desc ruby
brew info
brew info nvm
brew info ruby
brew list
brew log --oneline nvm
brew log --oneline ruby
brew missing
: check all installed brews for missimg dependencies
brew --version
: must be >= 0.9.5 to install Cask
brew install < name >
: to install command line tools
brew install brew-cask
: installs Homebrew's Cask
brew remove brew-cask
brew cask install < name >
to install GUI apps
brew tap
: list all installed taps
brew tap caskroom/cask
: a tap is a download location for information to install programs using Homebrew
brew cask
: displays Cask commands
brew cask list
: shows installed casks
brew cask search
: shows the entire list of GUI apps available
brew cask search chrome
: searches for anything with chrome in it
brew cask search google-chrome
brew cask install google-chrome
ls /opt/homebrew-cask/Caskroom
# result is google-chrome
brew cask uninstall google-chrome
ls /opt/homebrew-cask/Caskroom
# result is google-chrome is gone
brew cask create my-cask
brew tap caskroom/cask
brew tap-info tap
: Display information about tap
For definitions of any command, and to find actual usage
and results of these commands, screen-search this page for
the full command, including back-ticks.
I leave this next first command for you to learn by your own net search ..
brew cask alfred
: search this command on this page for explanation and results
brew cask home
brew cask ls | list
: shows installed casks
brew cask doctor
: makes sure your brew is raring to go
brew cask search
brew cask search node
brew cask search ruby
brew cask info go
brew cask info node
brew cask outdated
: always good to check
brew cask update
: always good to do
brew cask cleanup
brew cask install node
brew cask update node
brew cask home node
brew search nvm
brew search node
brew search go
brew install nvm
brew install node
brew install go
brew uninstall nvm
brew uninstall node
brew uninstall go
nvm install v5.6.0
nvm use 5.6
: without this, many of the below will not work, later we set it as default
nvm alias default node
: sets the node
version in use as default when opening a new shell
nvm update -g package-name
nvm version
: is not the same as next
nvm --version
nvm which 5.6
nvm current
: current version in use
nvm version
: base version
nvm --version
: not the same as above
node --version
nvm --version && node --version
node --version && npm --version
nvm --version && node --version && npm --version
nvm which 5
nvm which 5.6
which node
which node 5.6
which npm
npm -h --help
npm config -h
: or ..
npm help config
npm help search < text >
npm info
: run after you install npm
, see what you see : search 201602171620 for our result
npm -l
: displays full usage info, a valuable resource indeed
npm --version
npm list
: same as next
npm ls
: want to know version of lodash
or yo
etc.
nvm ls-remote
npm help install
npm help outdated
npm help shrinkwrap
npm help 7 registry
npm help 5 folders
npm help ls
npm install -g yo
: the -g
switch is short for --global
npm install --global yo
npm rm --global yo
npm install -g gulp
npm install --global gulp
npm rm --global gulp
npm install --global gulp-cli
npm install --save-dev gulp
: Install gulp
in the project devDependencies
npm rm --global gulp-cli
Name Change : these two have been changed as of 20160214 or 15
npm install --global yo generator-gulp-webapp
npm rm --global yo generator-gulp-webapp
The new commands are:
npm install --global yo generator-webapp
npm rm --global yo generator-webapp
"Now you can scaffold your very own web app:
mkdir my-webapp
cd my-webapp
yo webapp
"
We choose to name our new directory as yo-stellar
because that is what it will become:
mkdir yo-stellar
cd yo-stellar
yo stellar
: this command generates our webapp
To start developing, run:
gulp serve
: fires up two local servers and two external servers
First time you see this system fire up, it is a sight to see.
Make sure you visit all four browser addresses, e.g. http://localhost:9000
gulp serve:test
gulp
: alone will make a production-ready build of the app
gulp serve:dist
: to preview the production-ready build to check if everything is ok
gulp tasks
: search this command without backticks to see our first result of running it
gulp --tasks
: is not the same command as above : search without backticks to see results
Next, the moment we have been working towards,
these three commands create our first continuous-development-and-testing app ..
cd ~/
mkdir yo-stellar
cd yo-stellar
gulp serve
When we arrived at this point, our app fired right up.
Sweet success, look at that beautiful output! gulp serve to see it.
Having arrived at this point, we are onto developing this app.
LATE NOTE: We have built different apps now, using different tools.
DO NOT MISS THIS TOOL: Your First Heroku Node Program !
The beauty of this Heroku tool is it gives you everything you need, and
it is crystal clear.
End of Commands section.
Notes along the way:
TODO: 20160215
AFTER: next node
version update, currently we are at 5.6.0
CLARIFY how node
will be updated after brew update
gives notice of new version.
CLARIFICATION : 201602?? 201603??
Description: The Homebrew install command for nvm
is: brew install nvm
.
Simple as that.
TODO: 20160215 : Just noticed the ~/.nvmrc
file is not mentioned nor defined
Done: 20160215 : The npm -l
mentions this file and how to set configs.
Done: 20160215 : The ~/.nvmrc
has been created with this content : 5.6.0 : nothing else
TODO: MAKE List of brew installs and nvm installs and npm installs.
QUESTION : 20160211 : VERIFY WE USE brew install node
or brew install cask node
Answer: 20160213 : I search brew search node
and brew cask search node
and I see this:
First reference: showing brew install node
Second reference: showing brew cask install node
because it is a Cask token.
Further research is needed, obviously. Meanwhile, I did run both when the time was right.
will-i-am:~ William$ brew search node
homebrew/versions/node010 leafnode
homebrew/versions/node012 node
homebrew/versions/node04 node-build
homebrew/versions/node06 nodebrew
homebrew/versions/node08 nodeenv
homebrew/versions/node4-lts nodenv
Caskroom/cask/mindnode-pro Caskroom/cask/nodeclipse
Caskroom/cask/node-profiler Caskroom/cask/printnode
Caskroom/cask/node Caskroom/cask/soundnode
Caskroom/cask/nodebox
will-i-am:~ William$ brew cask search node
==> Exact match
node
==> Partial matches
mindnode-pro nodebox printnode
node-profiler nodeclipse soundnode
will-i-am:~ William$
We will be installing node
with brew install node
and then
We will see if Cask knows about it and what to do with it. Later,
We will then uninstall it then install it with brew cask install node
.
We shall then see the difference.
QUESTION: Are all npm install
commands followed by the -g
switch ?
QUESTION: Are all npm rm -g
the same?
Answer : If you install with -g
, yes, you uninstall with it too.
Answer : The -g
switch is part of the command, explained by npmjs docs:
"The -g or --global argument will cause npm to install the package globally
rather than locally. See npm-folders."
Also from that reference, this quote:
"Global install (with -g): puts stuff in /usr/local or wherever node is installed."
Therefore the npm rm -g
or --global
argument will cause npm to remove / uninstall
the package globally.
These two commands are the same to install gulp
globally:
npm install -g gulp-cli
npm install --global gulp-cli
The commands above and below are from the gulp Getting Started docs.
Here, the --save-dev
switch installs gulp
in your project devDependencies:
npm install --save-dev gulp
"Create a gulpfile.js at the root of your project:"
var gulp = require('gulp');
gulp.task('default', function() {
// place code for your default task here
});
Run
gulp
:$
gulp
: search gulp results to see resultThe default task will run and do nothing.
To run individual tasks,
use gulp <task> <othertask>
.Where do I go now?
You have an empty gulpfile and everything is installed.
How do you REALLY get started? Check out the recipes and
the list of articles for more information.
.src
,.watch
,.dest
, CLI args - How do I use these things?For API specific documentation you can check out the documentation for that.
Define API : Application Programming Interface
A very good explanation from MailChimp :
"API stands for application programming interface.
It can be helpful to think of the API as a way for different apps to talk to one another.
For many users, the main interaction with the API will be through API keys, which allow
other apps to access your account without you giving out your password."
Never run commands in the indented areas. I leave this for now to show how the name of
a package changed midstream of my writing these instructions, resulting in command not working.
Also, I have changed all names to the current name and address. What was once generator-gulp-webapp
is now generator-webapp
:
Now we will add the 'coup de grace' with the yeoman/generator-gulp-webapp.
From the gulp README.md file:
If you haven't already, install yo and this generator by running:
$
npm install --global yo generator-gulp-webapp
TODO: MISMATCH : command first shown in the previous use also shows creating the gulp.js file.
FIX THIS : 20160215 : what happened ?
Fixed : on 20160217 this command:
$
npm install --global yo generator-gulp-webapp
was renamed to this command:
$npm install --global yo generator-webapp
and is the command to run:
npm install --global yo generator-webapp
Now you can scaffold your very own web app:
mkdir my-webapp
cd my-webapp
yo webapp
Watch the magic.
To start developing, run:
gulp serve
This will fire up a local web server, open http://localhost:9000 in your default
browser and watch files for changes, reloading the browser automatically via LiveReload.
To run the tests in the browser, run:
gulp serve:test
You will need to study the yeoman/generator-webappreference before we do the actual install,
and then again before you go into production, for more commands to do so.
For example:
Tasks
To get the list of available tasks, run:
gulp --tasks
The yeoman/generator-webapp
generator uses Bower and keeps
bower_components in the project root.
The link explains why.
There is a bit more to know, so make sure you read the
yeoman/generator-webapp Getting Started file.
For example:
While
gulp serve
is running, installing Bower components will usually be as easy as ..
Open new Terminal:
$bower install --save jquery
HOWEVER : 20160218 : this didn't work.TODO: 20160218 : Why did it not work and ..
QUESTION: Can jQuery be installed by into this project bybrew
,brew-cask
ornpm
?
Answer : 2016021? : don't know yet. Not working it on for now. Answer : 20160225 :
gulp tasks
: search this command one more time w/o backticks to see our first result of running it
gulp --tasks
: is not the same command as above : search without backticks to see results
One more important reference is the generator-webapp/docs/bower.md file.
Reading this will explain how and why bower_components are served as if located in the app
,
when they are in fact kept in the project root.
End of The Commands Used
End of gulp
instructions.
It has taken me a good bit of study to feel like I know where to start with
developing our app with the Stellar.org platform.
First thing I am certain of is we have to install nvm
and its many tools
to make use of the Stellar platform. This is unequivocal in Feb 2016,
because .. the js-stellar-sdk is functioning, while the ruby-stellar-sdk
is not. If we want to use our Ruby on Rails app in any way with the tools we are
installing, we will need to first begin with the stellar-core and the js-stellar-sdk.
What are they, you ask ? I answer now with, these are new terms soon to be defined
and links given to learn more. Meanwhile, what the heck does sdk stand for ?
Define SDK
Answer : -sdk at the end of names means Software Development Kit.
A software development kit (SDK or "devkit") is typically a set of software
development tools that allows the creation of applications for a certain software
package, software framework, hardware platform, computer system, video game
console, operating system, or similar development platform.
**Late note : Having just recently learned of Homebrew-Cask, You will not find
it mentionded in these beginning notes. After we found Homebrew-Cask, all the quirks
and oddities we were going to have to deal with are gone. I leave some of those
notes in place, for now, while I adjust the full Gist to show the new reality of
how easy it is to work with Homebrew and Homebrew-Cask to install all that is needed
to work with the Stellar.org platform. That is the goal here, and all below is what
is needed to arrive with our system 'roaring to go
stellar.'
Homebrew-Cask, Caskroom, Taps, Casks and other terms will be defined as
we go along. Yo, gulp and others will also be defined.
I have arrived at the decision to use yo
and gulp
and their generator-webapp
.
I have removed the go
and go-start
instructions.
I have removed the grunt
and gb
instructions.
I have added the Getting Started with Node.js on Heroku materials,
the clearest on the net, app included.
Thank you, Heroku, for the easy walk through.
In the Installation Instructions, and
In the Installation Commands and Results I describe the steps,
commands and results, to arrive at being able to, I believe, begin using
the Stellar Developer Materials.
All the commands we have used to complete this install have been distilled
without notes or references, and placed above these overview paragraphs,
for your easy Homebrew installation of nvm
and yo
and gulp
and
beyond. For explanations and references for each of these commands, please see
the Installation Instructions below the commands. Don't go yet.
Define keg-only
keg-only means a brew formula is not symlinked into/usr/local
. An example of a notice you will see in the Install Instructions below:
"This formula is keg-only, which means it was not symlinked into /usr/local."
Three days into writing these instructions and running and verifying
commands, I just found Homebrew Cask, and my question is ..
QUESTION: Will Homebrew-Cask change anything, once we install it ?
Answer : Yes, Homebrew-Cask simplifies the install and updates with
its Casks,
including node
.
What is it ?
As npm is to nvm, cask is to homebrew, both are 'package manager' systems.
Why install it ?
I will answer these two questions right now:
QUESTION: What is a 'CLI workflow'
Answer : Command Line Interface workflow
It is always an excellent idea to set up your .gitignore file(s) BEFORE you
begin committing. Below is a list of .gitignore
file addtions we will be
using, and, before we are done, we will be showing the complete .gitignore
file we have assembled from these resources, ready for you to use:
Do not make a first commit without first ensuring your .gitignore file is set.
.gitignore manual
Best .gitignore files resource
Global OSX.gitignore
GitBook.gitignore
gulp-gitignore
Heroku's Getting Started with Node.js
Heroku's Best Practices for Node.js Development
Node.gitignore
Rails.gitignore
Ruby.gitignore
Sass.gitignore
Yeoman.gitignore
WordPress.gitignore : an example we won't be using
We are going to keep this next one as the last .gitignore
file to enter,
and the reason is, this one adds two items, both of which may be already
included in the above additions.
# Grunt ignore created by https://www.gitignore.io/api/grunt # Grunt usually compiles files inside this directory dist/ # Grunt usually preprocesses files such as coffeescript, compass... inside the .tmp directory .tmp/
End of Configuration and Ignore Files
We are using Homebrew and Homebrew-Cask.
If you are curious, this is how we Installed Homebrew-Cask.
End of Homebrew-Cask
Open new Terminal, get ready, gulp ..
The following will be a full installation of all that is required to work
with Node.js and its supporting tools to build websites and
API's. We are building this because we want to be able to make use of
the js-stellar-sdk
from Stellar.org.
I have removed all further mention of the Stellar.org materials into
a new Gist as yet incomplete, doing so for clarity and simplicity in this Gist.
You do not need to care about using the Stellar platform to use these
instructions to easily install your tools, just ignore the Stellar mentions.
Make use of the Commands and Their Results after being run, as
you install because more explanations are in that area. After we install nvm
and npm
and yo
and others, all installations are extremely easy ..
This all begins with the complete instructions for how to install nvm
, with
Homebrew's lovely brew install
command. Also, we found Homebrew-Cask while
doing this, so we bring that wonderful tool into the mix, too.
Why my team uses npm instead of bower will sway you to choose
npm
and the reason for me is, Bower adds its own complexities to keeping
everything in sync. Late note: I have now written into the instructions
how we will be installingnvm
andnode
, both installed by Homebrew using
Homebrew-Cask. Bower will be used as a tool of other installations, perhaps
managing jQuery and Bookstrap. I do not know yet, but I do know we will be
installing Bower as part of another installation, and we will be using
nvm
andnpm
as our prime package manager first, not Bower.
Also, in my studies I came across the name, CommonJS.
My understanding right now is nvm
is our path, and CommonJS is used
internally by other parts of the build process, we will not be installing
CommonJs directly.
As Rails developer, my study of Stellar so far leads me to see the need to
install nvm
and npm
, and gulp
, not grunt.
May I recommend you read this article, Gulp vs Grunt. Why one? Why the Other?.
It appears it is a case ofgulp
orgrunt
. That being said, while we will be
usinggulp
, other parts of the build process do usegrunt
.
Regarding npm
: npm software wiki, a quote:
"npm, the Node Package Manager, is the default package manager
for the JavaScript runtime environment Node.js."
Another quote from the same source:
Overview:
As of Node.js version 0.6.3,npm
is bundled and installed automatically
with the environment.npm
runs through the command line and manages
dependencies for an application. It also allows users to install Node.js
applications that are available on thenpm
registry.npm
is written
entirely in JavaScript and was developed by Isaac Z. Schlueter as a result
of the frustrations he had experienced while working with CommonJS . . .
That one line catches my eye ..
'npm
allows users to install Node.js applications
that are available on the npm
registry.'
Our tools so far definitely include nvm
and npm
and node
, and yo
and git
and gulp
ready to generate web apps with yo webapp
.
What is nvm : Node Version Manager
What is npm : Node Package Manager.
What is Yo : Yo is the tool to use for running Yeoman generators.
Yeoman
Now that we have Node.js installed on our machine, we are now ready to
install Yeoman. Yeoman is using 3 core tools. These core tools are composed
by Yo, Grunt, and Bower. So we will install them one by one usingnpm
which
came with Node.js when we installednode
.
What is gb.
What is grunt : grunt is the task-manager. See a great explanation a bit further below.
What is Bower : Bower is a package manager.
A note about Yo from their link:
"We now have the core tools needed for Yeoman to work, but there is one more
thing we need to do. That is to install the generator we want to use. If you want
to create a basic webapp, you just need to runnpm install -g generator-webapp
or if you want to work on AngularJS, just runnpm install -g generator-angular
.
(Do not run the command yet.)
We now have all the things needed, and you can now kickstart your project by
running yo webapp
or yo angular
.
To install Yo, we will run: npm install -g yo
.
To install gulp, we will run: npm install -g gulp
io.js
"is a fork of Joyent's Node.js"
We will not be usingio.js
and that quote is from:
Install Node.js or io.js with nvm, by Fernan Morales : 03 Feb 2015.
Another quote:
"... everything written here is also clearly explained by Creationix
in the Readme from the NVM repo. Also, executingnvm
alone ornvm help
will
display a comprehensive list of all the commands along with a brief description.
Good to know.
A great explanation of Grunt from Treehouse.com:
" . . because Node.js can be used on your desktop computer, programmers have
created useful Node-based tools that help with the process of building web sites.
For example, Grunt is a popular tool used to automate common tasks like compiling
Sass files to CSS, making JavaScript files smaller so they load in less time, and
compressing images to smaller file size. While these tools run through the
Node.js environment, you’ll use another tool, NPM, to install them.
NPM is what’s called a “package manager.”
NPM makes installing a tool like Grunt
easy asnpm install -g grunt
followed bynpm install -g grunt-cli
.
Other tools you may run across:
gulp : A streaming build system, the g is capitalized only in the gulp logo.
gulp faq
gulp js
generator-webapp
The install gulp instructions are simple:
installing Gulp is very reminiscent of what you had to do with Grunt.
Have a package.json
npm install -g gulp
npm install --save-dev gulp
Create a gulpfile.js
gulp
At this point, the main difference with Grunt is that they didn’t take their
CLI out of core (at least not yet), which might confuse you if you don’t
understand global installs in npm.
Before heading to a sample gulpfile, let’s look at how the API looks like.
There’s five methods, and that’s all you need. That’s awesome, a concise API
really helps keep the module focused on just what it’s good at, processing
build tasks.
.src(globs[, options]) takes a glob and returns an input stream
.dest(path) takes a path and returns an output stream
.task(name[, deps], fn) defines a task
.run(tasks...[, cb]) runs tasks
.watch(glob [, opts], cb) watches the file system
AFTER we arrive at the point where gulp
and yo
are installed, we will be
installing Yeoman's generator-webapp
, their repository description is,
'A gulp.js generator for modern webapps'
We will be using Homebrew to install nvm
. You can also use the curl
command.
The Yeoman reference gives the command to install nvm
as:
curl https://raw.githubusercontent.com/creationix/nvm/v0.7.0/install.sh | sh
This script will clone the nvm
repository from Github into your ~/.nvm
directory and adds the 'source line' to your ~/.bash_profile
or ~/.profile
file. When we use Homebrew to install, we have to add that 'source line' manually.
Regarding Yeoman: it uses three main tools, composed by Yo
, Grunt
and Bower
.
I visit creationix/nvm. The description
reads as:
"Node Version Manager - Simple bash script to manage multiple active node.js versions"
Well, now I know what nvm
is and what it means and what it does.
NVM is the most basic Package Manager system for "active node.js
versions."
Note: We will be managing
node
with Homebrew-Cask.
Do we already have nvm
installed ? If so, where is it and what version ?
The creationix/nvm repository shows me the install command to use
to install nvm
and contains this note:
"The (install) script clones the nvm
repository to ~/.nvm
and adds
the source line to your profile (~/.bash_profile
, ~/.zshrc
or ~/.profile
)."
TODO : 20160206 : What is the 'source line' ?
Answer: 20160206 : Line in our ~/.profile
file telling the system where nvm
is located.
Answer: 20160206 : Our 'source line' will be generated by brew install rvm
and we will hand install what is generated into our ~/.profile
file. Again, we
are not using nvm
to install node
.
QUESTION: 20160206 : Using brew install nvm
where does it install 'source line' ?
Answer : 20160206 : We will hand-install the brew
generated 'source line'.
I open a new Terminal and type in:
cd ~/
ls -aux
I see no .nvm
in place, and so we do not have nvm
installed.
Is there another way to verify we do or do not have nvm
installed ?
Yes, there is this, from the creationix/nvm repository:
If you want to see what versions are installed:
nvm ls
If you want to see what versions are available to install:
nvm ls-remote
If these commands do not work, you do not havenvm
installed.
Regarding nvm
installation, the first thing I came across is this note:
"Homebrew installation is not supported." in the creationix/nvm repository.
Say what ? What does this mean ?
Time to search the net for 'homebrew nvm installation problems'
The Homebrew install command for nvm
is: brew install nvm
, simple as that.
I trust Homebrew, why should I not use it ? No reason I can see.
Also, three days into installing, uninstalling and wrting this Gist,
I found Homebrew-Cask, and best I understand, Cask is as an "npm
" to Homebrew.
I find this StackOverflow page on Homebrew node.js and I see
the same command to install using Homebrew, and the 'source line' to place
in any one of, .profile
, .bashrc
or .zshrc
files. This page covers more
information not mentioned right now; we know what we need to know to continue.
I believe we now know our first command to begin the install process ..
Do not run these commands yet .. consider this a dry run for learning.
TODO: 20160204 : is this correct, are we in the do not run section ? Answer is Yes, we are in the do not run section.
To see these commands without explanation, see : Installation Instructions
To see these commands with results, see : Installation Commands with Results
Do not run these commands yet .. consider this a dry run for learning.
Open new Terminal:
brew update
brew doctor
brew install nvm
Open the ~/.profile
file:
open -e ~/.profile
Enter this 'source line' in ~/.profile
file:
Template of 'source line' to add:
source $(brew --prefix nvm)/nvm.sh
TODO: 20160211 : this line is near duplicated elsewhere, are both correct ?
Answer: line 659, 1533: both are correct, one is in Install Commands, one is in the explanations.
After running brew install nvm
, Terminal will tell you to add these two
lines into the ~/.profile
file:
export NVM_DIR=~/.nvm
. $(brew --prefix nvm)/nvm.sh
Yes, that is a period followed by a space.
What happens if I try to update nvm
with brew update nvm
?
brew update nvm
This command updates brew itself, and does not take formula names.
Use `brew upgrade < formula >`.
will-i-am:~ William$
So, we now run the brew upgrade nvm
command:
brew upgrade nvm
=> Error: nvm 0.30.1 already installed
Now we install node
after we find the versions available:
nvm ls-remote
We can install any version .. using nvm
to do so, however ..
We will be using brew install node
so node
will be tracked as a Cask,
and updates and upgrades will be dealt with by Homebrew-Cask.
Template to install Node.js:
brew install version-number
Example to install Node.js:
brew install 5.0
How to switch versions:
brew use 0.12
How to remove a version:
brew uninstall 0.12
What versions of Node.js do we have installed ?
nvm ls
What is the most current stable version of Node.js ?
nvm ls-remote
Install Node.js : We will be installing v5.6.0
.
Template :
brew install cask-token
How we are installing Node.js:
brew install node
will-i-am:~ William$ brew install node
==> Downloading https://homebrew.bintray.com/bottles/node-5.6.0.el_capitan.bottle.tar.gz
Already downloaded: /Library/Caches/Homebrew/node-5.6.0.el_capitan.bottle.tar.gz
==> Pouring node-5.6.0.el_capitan.bottle.tar.gz
==> Caveats
Please note by default only English locale support is provided. If you need
full locale support you should:
`brew reinstall node --with-full-icu`
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
==> Summary
🍺 /usr/local/Cellar/node/5.6.0: 3,726 files, 35.3M
will-i-am:~ William$
The results of our installation are showing with the info
command:
will-i-am:~ William$ brew info node
node: stable 5.6.0 (bottled), HEAD
Platform built on the V8 JavaScript runtime to build network applications
https://nodejs.org/
/usr/local/Cellar/node/5.6.0 (3,726 files, 35.3M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/node.rb
==> Dependencies
Build: pkg-config ✔
Optional: openssl ✔
==> Options
--with-debug
Build with debugger hooks
--with-full-icu
Build with full-icu (all locales) instead of small-icu (English only)
--with-openssl
Build with openssl support
--without-completion
npm bash completion will not be installed
--without-npm
npm will not be installed
--HEAD
Install HEAD version
==> Caveats
Please note by default only English locale support is provided. If you need
full locale support you should:
`brew reinstall node --with-full-icu`
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
will-i-am:~ William$ brew cask info node
node: 4.3.0
Node.js
https://nodejs.org/
Not installed
https://github.com/caskroom/homebrew-cask/blob/master/Casks/node.rb
==> Contents
node-v4.3.0.pkg (pkg)
will-i-am:~ William$
I see the note 'Not installed' and so run:
brew cask install node
brew cask info node
will-i-am:~ William$ brew cask info node
node: 4.3.0
Node.js
https://nodejs.org/
Not installed
https://github.com/caskroom/homebrew-cask/blob/master/Casks/node.rb
==> Contents
node-v4.3.0.pkg (pkg)
will-i-am:~ William$ brew cask install node
==> Downloading https://nodejs.org/dist/v4.3.0/node-v4.3.0.pkg
Already downloaded: /Library/Caches/Homebrew/node-4.3.0.pkg
==> Verifying checksum for Cask node
==> Running installer for node; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
Password:
==> installer: Package name is Node.js
==> installer: Installing at base path /
==> installer: The install was successful.
🍺 node staged at '/opt/homebrew-cask/Caskroom/node/4.3.0' (12M)
will-i-am:~ William$ brew cask info node
node: 4.3.0
Node.js
https://nodejs.org/
/opt/homebrew-cask/Caskroom/node/4.3.0 (12M)
https://github.com/caskroom/homebrew-cask/blob/master/Casks/node.rb
==> Contents
node-v4.3.0.pkg (pkg)
will-i-am:~ William$
Does Homebrew-Cask know about it ?
brew cask info node
Install the Cask named, node
:
brew cask install node
Does Homebrew-Cask now know about it ?
brew cask info node
will-i-am:~ William$ brew cask info node
node: 4.3.1
Node.js
https://nodejs.org/
Not installed
https://github.com/caskroom/homebrew-cask/blob/master/Casks/node.rb
==> Contents
node-v4.3.1.pkg (pkg)
will-i-am:~ William$
brew tap
: list the taps
brew tap-info < tap name >
: Display information about tap
will-i-am:~ William$ brew tap
caskroom/cask
homebrew/dupes
homebrew/versions
will-i-am:~ William$ brew tap-info caskroom/cask
caskroom/cask: unpinned, 1 formula, 1 command
/usr/local/Library/Taps/caskroom/homebrew-cask (3,609 files, 71.1M)
From: https://github.com/caskroom/homebrew-cask
will-i-am:~ William$
Running Node.js:
nvm use version-number
: this being a new install, we have one versison.
Run:
nvm use v5.6.0
will-i-am:~ William$ nvm use 5.6
Now using node v5.6.0 (npm v3.7.2)
will-i-am:~ William$
Most excellent.
I now set this version as default when opening a new shell:
nvm alias default node
will-i-am:~ William$ nvm --version
0.30.1
will-i-am:~ William$ nvm alias default node
default -> node (-> v5.6.0)
will-i-am:~ William$
Per instructions, we install the latest npm
:
npm install -g npm@latest
will-i-am:~ William$ npm install -g npm@latest
/Users/William/.nvm/versions/node/v5.6.0/bin/npm -> /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/npm/bin/npm-cli.js
- assert-plus@0.2.0 node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus
/Users/William/.nvm/versions/node/v5.6.0/lib
└─┬ npm@3.7.2
├── graceful-fs@4.1.3
├─┬ lodash.clonedeep@4.0.4
│ └─┬ lodash._stack@4.0.2
│ └── lodash._mapcache@4.0.1
├── lodash.isarguments@3.0.6
├── lodash.keys@4.0.2
├─┬ lodash.union@4.0.2
│ ├── lodash._baseflatten@4.0.1
│ ├─┬ lodash._setcache@4.0.1
│ │ └── lodash._mapcache@4.0.1
│ └── lodash.rest@4.0.1
├─┬ lodash.uniq@4.0.2
│ └─┬ lodash._setcache@4.0.1
│ └── lodash._mapcache@4.0.1
├─┬ lodash.without@4.0.2
│ ├─┬ lodash._setcache@4.0.1
│ │ └── lodash._mapcache@4.0.1
│ └── lodash.rest@4.0.1
├─┬ node-gyp@3.2.1
│ └─┬ minimatch@1.0.0
│ └── lru-cache@2.7.3
├─┬ npm-registry-client@7.0.9
│ └── retry@0.8.0
├─┬ npmlog@2.0.2
│ ├─┬ are-we-there-yet@1.0.6
│ │ └── delegates@1.0.0
│ └─┬ gauge@1.2.5
│ ├─┬ lodash.pad@3.2.1
│ │ └── lodash.repeat@3.1.1
│ ├─┬ lodash.padleft@3.1.1
│ │ └─┬ lodash._createpadding@3.6.1
│ │ └── lodash.repeat@3.1.1
│ └─┬ lodash.padright@3.1.1
│ └─┬ lodash._createpadding@3.6.1
│ └── lodash.repeat@3.1.1
├─┬ request@2.69.0
│ ├─┬ aws4@1.2.1
│ │ └── lru-cache@2.7.3
│ ├── hawk@3.1.3
│ ├─┬ http-signature@1.1.1
│ │ └── assert-plus@0.2.0
│ └── qs@6.0.2
├── retry@0.9.0
├── rimraf@2.5.1
└─┬ which@1.2.4
└── isexe@1.1.1
will-i-am:~ William$
What command caused those results ?
will-i-am:~ William$ npm install -g npm@latest
As a note, I ran this same command a while later while
verifying install and uninstall commands, and this is
the result, nothing to update:
will-i-am:~ William$ npm install -g npm@latest
/Users/William/.nvm/versions/node/v5.6.0/bin/npm -> /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/npm/bin/npm-cli.js
/Users/William/.nvm/versions/node/v5.6.0/lib
└── npm@3.7.2
will-i-am:~ William$
We are good to go.
Homebrew-Cask now keeps its eye on npm
with every use of:
brew update
This will update itself and Homebrew-Cask, the Casks, the Taps, the Versions.
Sweet indeed. Node.js is now on automatic with Cask keeping its eye on it.
When Node.js issues a new version, a notice to that fact will appear at the
bottom of any messages given with brew update
.
Which npm
are we using:
will-i-am:~ William$ which npm
/Users/William/.nvm/versions/node/v5.6.0/bin/npm
will-i-am:~ William$
Now we run nvm ls
to see what is what:
nvm ls
Last login: Sat Feb 13 21:28:12 on ttys023
will-i-am:~ William$ nvm ls
v5.5.0
-> v5.6.0
system
node -> stable (-> v5.6.0) (default)
stable -> 5.6 (-> v5.6.0) (default)
iojs -> N/A (default)
will-i-am:~ William$
Commands to find out where we are, versions wise:
nvm ls
nvm --version
npm --version
will-i-am:~ William$ nvm ls
v5.5.0
-> v5.6.0
system
node -> stable (-> v5.6.0) (default)
stable -> 5.6 (-> v5.6.0) (default)
iojs -> N/A (default)
will-i-am:~ William$ nvm --version
0.30.1
will-i-am:~ William$ npm --version
3.7.2
will-i-am:~ William$
Perfect.
If your answers are not perfect, run this:
nvm use 5.6.0
Now we can install Yeoman.
npm install -g yo
Now we run the installation of yo
:
npm install -g yo
TODO: 20160211 : verify the above link does answer the above two questions.
ALSO: we have these warnings ..
npm WARN deprecated URIjs@1.16.1: package renamed to "urijs" (lower-case), please update accordingly
npm WARN prefer global marked@0.3.5 should be installed with -g
There is that -g
switch, again, on the global marked@0.3.5 note. npm install
with
the -g
switch means the packages are installed globally, usually /usr/local/
ALSO: we have this error, showing as repeated ..
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer
directory '/Library/Developer/CommandLineTools' is a command line tools instance
TODO: 20160211 : resolve these two warnings and one error.
Answer: 20160214 : the -g
switch : found answer, placed it twice in this material
Answer: 2016021? : deprecated URIjs@1.16.1: package renamed to "urijs" : ours reads as:
└── URIjs@1.16.1
TODO: How do we update name to 'urijs' ?
will-i-am:~ William$ npm install -g yo
npm WARN deprecated npmconf@2.1.2: this package has been reintegrated into npm and is now out of date with respect to npm
/usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/bin/yo -> /usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib/node_modules/yo/lib/cli.js
> yo@1.6.0 postinstall /usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib/node_modules/yo
> yodoctor
Yeoman Doctor
Running sanity checks on your system
✔ Global configuration file is valid
✔ NODE_PATH matches the npm root
✔ Node.js version
✔ No .bowerrc file in home directory
✔ No .yo-rc.json file in home directory
✔ npm version
Everything looks all right!
/usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib
└─┬ yo@1.6.0
├── async@1.5.2
├─┬ chalk@1.1.1
│ ├── ansi-styles@2.1.0
│ ├── escape-string-regexp@1.0.4
│ ├── has-ansi@2.0.0
│ ├── strip-ansi@3.0.0
│ └── supports-color@2.0.0
├─┬ configstore@1.4.0
│ ├── graceful-fs@4.1.3
│ ├─┬ mkdirp@0.5.1
│ │ └── minimist@0.0.8
│ ├── object-assign@4.0.1
│ ├── os-tmpdir@1.0.1
│ ├── osenv@0.1.3
│ ├── uuid@2.0.1
│ ├─┬ write-file-atomic@1.1.4
│ │ ├── imurmurhash@0.1.4
│ │ └── slide@1.1.6
│ └── xdg-basedir@2.0.0
├─┬ cross-spawn-async@2.1.8
│ ├─┬ lru-cache@4.0.0
│ │ ├── pseudomap@1.0.2
│ │ └── yallist@2.0.0
│ └─┬ which@1.2.4
│ ├─┬ is-absolute@0.1.7
│ │ └── is-relative@0.1.3
│ └── isexe@1.1.1
├── figures@1.4.0
├─┬ fullname@2.1.0
│ ├─┬ npmconf@2.1.2
│ │ ├─┬ config-chain@1.1.10
│ │ │ └── proto-list@1.2.4
│ │ ├── inherits@2.0.1
│ │ ├── ini@1.3.4
│ │ ├─┬ nopt@3.0.6
│ │ │ └── abbrev@1.0.7
│ │ ├─┬ once@1.3.3
│ │ │ └── wrappy@1.0.1
│ │ ├── semver@4.3.6
│ │ └── uid-number@0.0.5
│ ├── pify@2.3.0
│ └─┬ pinkie-promise@2.0.0
│ └── pinkie@2.0.4
├─┬ got@5.4.1
│ ├─┬ create-error-class@2.0.1
│ │ └── capture-stack-trace@1.0.0
│ ├── duplexer2@0.1.4
│ ├── is-plain-obj@1.1.0
│ ├── is-redirect@1.0.0
│ ├── is-retry-allowed@1.0.0
│ ├── is-stream@1.0.1
│ ├── lowercase-keys@1.0.0
│ ├── node-status-codes@1.0.0
│ ├─┬ parse-json@2.2.0
│ │ └─┬ error-ex@1.3.0
│ │ └── is-arrayish@0.2.1
│ ├── read-all-stream@3.1.0
│ ├─┬ readable-stream@2.0.5
│ │ ├── core-util-is@1.0.2
│ │ ├── isarray@0.0.1
│ │ ├── process-nextick-args@1.0.6
│ │ ├── string_decoder@0.10.31
│ │ └── util-deprecate@1.0.2
│ ├── timed-out@2.0.0
│ ├── unzip-response@1.0.0
│ └─┬ url-parse-lax@1.0.0
│ └── prepend-http@1.0.3
├─┬ humanize-string@1.0.1
│ └── decamelize@1.1.2
├─┬ inquirer@0.11.4
│ ├── ansi-escapes@1.1.1
│ ├── ansi-regex@2.0.0
│ ├─┬ cli-cursor@1.0.2
│ │ └─┬ restore-cursor@1.0.1
│ │ └── exit-hook@1.1.1
│ ├── cli-width@1.1.1
│ ├─┬ readline2@1.0.1
│ │ ├── code-point-at@1.0.0
│ │ ├── is-fullwidth-code-point@1.0.0
│ │ └── mute-stream@0.0.5
│ ├── run-async@0.1.0
│ ├── rx-lite@3.1.2
│ ├── string-width@1.0.1
│ └── through@2.3.8
├─┬ insight@0.7.0
│ ├── inquirer@0.10.1
│ ├─┬ lodash.debounce@3.1.1
│ │ └── lodash._getnative@3.9.1
│ ├─┬ os-name@1.0.3
│ │ ├─┬ osx-release@1.1.0
│ │ │ └── minimist@1.2.0
│ │ └─┬ win-release@1.1.1
│ │ └── semver@5.1.0
│ ├─┬ request@2.69.0
│ │ ├── aws-sign2@0.6.0
│ │ ├─┬ aws4@1.2.1
│ │ │ └── lru-cache@2.7.3
│ │ ├── bl@1.0.2
│ │ ├── caseless@0.11.0
│ │ ├─┬ combined-stream@1.0.5
│ │ │ └── delayed-stream@1.0.0
│ │ ├── extend@3.0.0
│ │ ├── forever-agent@0.6.1
│ │ ├── form-data@1.0.0-rc3
│ │ ├─┬ har-validator@2.0.6
│ │ │ ├─┬ commander@2.9.0
│ │ │ │ └── graceful-readlink@1.0.1
│ │ │ └─┬ is-my-json-valid@2.12.4
│ │ │ ├── generate-function@2.0.0
│ │ │ ├─┬ generate-object-property@1.2.0
│ │ │ │ └── is-property@1.0.2
│ │ │ └── jsonpointer@2.0.0
│ │ ├─┬ hawk@3.1.3
│ │ │ ├── boom@2.10.1
│ │ │ ├── cryptiles@2.0.5
│ │ │ ├── hoek@2.16.3
│ │ │ └── sntp@1.0.9
│ │ ├─┬ http-signature@1.1.1
│ │ │ ├── assert-plus@0.2.0
│ │ │ ├─┬ jsprim@1.2.2
│ │ │ │ ├── extsprintf@1.0.2
│ │ │ │ ├── json-schema@0.2.2
│ │ │ │ └── verror@1.3.6
│ │ │ └─┬ sshpk@1.7.3
│ │ │ ├── asn1@0.2.3
│ │ │ ├── dashdash@1.12.2
│ │ │ ├── ecc-jsbn@0.1.1
│ │ │ ├── jodid25519@1.0.2
│ │ │ ├── jsbn@0.1.0
│ │ │ └── tweetnacl@0.13.3
│ │ ├── is-typedarray@1.0.0
│ │ ├── isstream@0.1.2
│ │ ├── json-stringify-safe@5.0.1
│ │ ├─┬ mime-types@2.1.9
│ │ │ └── mime-db@1.21.0
│ │ ├── node-uuid@1.4.7
│ │ ├── oauth-sign@0.8.1
│ │ ├── qs@6.0.2
│ │ ├── stringstream@0.0.5
│ │ └── tunnel-agent@0.4.2
│ └── tough-cookie@2.2.1
├── lodash@3.10.1
├─┬ meow@3.7.0
│ ├─┬ camelcase-keys@2.0.0
│ │ └── camelcase@2.1.0
│ ├─┬ loud-rejection@1.2.1
│ │ ├── array-find-index@1.0.1
│ │ └── signal-exit@2.1.2
│ ├── map-obj@1.0.1
│ ├── minimist@1.2.0
│ ├─┬ normalize-package-data@2.3.5
│ │ ├── hosted-git-info@2.1.4
│ │ ├─┬ is-builtin-module@1.0.0
│ │ │ └── builtin-modules@1.1.1
│ │ └─┬ validate-npm-package-license@3.0.1
│ │ ├─┬ spdx-correct@1.0.2
│ │ │ └── spdx-license-ids@1.2.0
│ │ └─┬ spdx-expression-parse@1.0.2
│ │ └── spdx-exceptions@1.0.4
│ ├─┬ redent@1.0.0
│ │ ├── indent-string@2.1.0
│ │ └── strip-indent@1.0.1
│ └── trim-newlines@1.0.0
├─┬ npm-keyword@4.2.0
│ └── registry-url@3.0.3
├── opn@3.0.3
├─┬ package-json@2.3.0
│ ├─┬ rc@1.1.6
│ │ ├── deep-extend@0.4.1
│ │ ├── minimist@1.2.0
│ │ └── strip-json-comments@1.0.4
│ └── semver@5.1.0
├─┬ read-pkg-up@1.0.1
│ ├─┬ find-up@1.1.0
│ │ └── path-exists@2.1.0
│ └─┬ read-pkg@1.1.0
│ ├─┬ load-json-file@1.1.0
│ │ └─┬ strip-bom@2.0.0
│ │ └── is-utf8@0.2.1
│ └── path-type@1.1.0
├─┬ repeating@2.0.0
│ └─┬ is-finite@1.0.1
│ └── number-is-nan@1.0.0
├─┬ root-check@1.0.0
│ ├─┬ downgrade-root@1.1.0
│ │ ├── default-uid@1.0.0
│ │ └── is-root@1.0.0
│ └─┬ sudo-block@1.2.0
│ └── is-docker@1.0.0
├─┬ sort-on@1.2.2
│ ├── arrify@1.0.1
│ └── dot-prop@2.2.0
├── string-length@1.0.1
├── titleize@1.0.0
├─┬ update-notifier@0.6.0
│ ├── is-npm@1.0.0
│ ├── latest-version@2.0.0
│ └─┬ semver-diff@2.1.0
│ └── semver@5.1.0
├─┬ user-home@2.0.0
│ └── os-homedir@1.0.1
├─┬ yeoman-character@1.1.0
│ └─┬ supports-color@3.1.2
│ └── has-flag@1.0.0
├─┬ yeoman-doctor@2.1.0
│ ├─┬ bin-version-check@2.1.0
│ │ ├─┬ bin-version@1.0.4
│ │ │ └─┬ find-versions@1.2.1
│ │ │ └── semver-regex@1.0.0
│ │ ├── minimist@1.2.0
│ │ └─┬ semver-truncate@1.1.0
│ │ └── semver@5.1.0
│ ├─┬ each-async@1.1.1
│ │ ├── onetime@1.1.0
│ │ └── set-immediate-shim@1.0.1
│ ├── log-symbols@1.0.2
│ ├── object-values@1.0.0
│ ├── semver@5.1.0
│ └─┬ twig@0.8.7
│ ├─┬ minimatch@0.2.14
│ │ ├── lru-cache@2.7.3
│ │ └── sigmund@1.0.1
│ └─┬ walk@2.3.9
│ └── foreachasync@3.0.0
├─┬ yeoman-environment@1.5.2
│ ├─┬ debug@2.2.0
│ │ └── ms@0.7.1
│ ├── diff@2.2.1
│ ├─┬ globby@4.0.0
│ │ ├─┬ array-union@1.0.1
│ │ │ └── array-uniq@1.0.2
│ │ └─┬ glob@6.0.4
│ │ ├── inflight@1.0.4
│ │ ├─┬ minimatch@3.0.0
│ │ │ └─┬ brace-expansion@1.1.2
│ │ │ ├── balanced-match@0.3.0
│ │ │ └── concat-map@0.0.1
│ │ └── path-is-absolute@1.0.0
│ ├── grouped-queue@0.3.2
│ ├─┬ mem-fs@1.1.2
│ │ ├─┬ through2@2.0.1
│ │ │ └── xtend@4.0.1
│ │ ├─┬ vinyl@1.1.1
│ │ │ ├── clone@1.0.2
│ │ │ ├── clone-stats@0.0.1
│ │ │ └── replace-ext@0.0.1
│ │ └─┬ vinyl-file@1.3.0
│ │ └─┬ strip-bom-stream@1.0.0
│ │ └── first-chunk-stream@1.0.0
│ ├── text-table@0.2.0
│ └── untildify@2.1.0
└─┬ yosay@1.1.0
├── minimist@1.2.0
├── pad-component@0.0.1
├─┬ taketalk@1.0.0
│ ├── get-stdin@4.0.1
│ └── minimist@1.2.0
└── word-wrap@1.1.0
will-i-am:~ William$
Yo is successfully installed.
There are two notes we will want to research and attend to, possibly:
TODO: 20160211 : No .bowerrc file in home directory
TODO: 20160211 : No .yo-rc.json file in home directory
The first time I installed yo
, the response is quite long ..
Then, the second time I installed yo
is much shorter:
will-i-am:~ William$ npm install -g yo
npm WARN deprecated npmconf@2.1.2: this package has been reintegrated into npm and is now out of date with respect to npm
/usr/local/Cellar/nvm/0.30.1/versions/node/v5.5.0/bin/yo -> /usr/local/Cellar/nvm/0.30.1/versions/node/v5.5.0/lib/node_modules/yo/lib/cli.js
> yo@1.6.0 postinstall /usr/local/Cellar/nvm/0.30.1/versions/node/v5.5.0/lib/node_modules/yo
> yodoctor
Yeoman Doctor
Running sanity checks on your system
✔ Global configuration file is valid
✔ NODE_PATH matches the npm root
✔ Node.js version
✔ No .yo-rc.json file in home directory
✔ No .bowerrc file in home directory
✔ npm version
Everything looks all right!
/usr/local/Cellar/nvm/0.30.1/versions/node/v5.5.0/lib
└─┬ yo@1.6.0
├── async@1.5.2
├─┬ chalk@1.1.1
│ ├── ansi-styles@2.1.0
│ ├── escape-string-regexp@1.0.4
│ ├── has-ansi@2.0.0
│ ├── strip-ansi@3.0.0
│ └── supports-color@2.0.0
├─┬ configstore@1.4.0
│ ├── graceful-fs@4.1.3
│ ├─┬ mkdirp@0.5.1
│ │ └── minimist@0.0.8
│ ├── object-assign@4.0.1
│ ├── os-tmpdir@1.0.1
│ ├── osenv@0.1.3
│ ├── uuid@2.0.1
│ ├─┬ write-file-atomic@1.1.4
│ │ ├── imurmurhash@0.1.4
│ │ └── slide@1.1.6
│ └── xdg-basedir@2.0.0
├─┬ cross-spawn-async@2.1.8
│ ├─┬ lru-cache@4.0.0
│ │ ├── pseudomap@1.0.2
│ │ └── yallist@2.0.0
│ └─┬ which@1.2.4
│ ├─┬ is-absolute@0.1.7
│ │ └── is-relative@0.1.3
│ └── isexe@1.1.1
├── figures@1.4.0
├─┬ fullname@2.1.0
│ ├─┬ npmconf@2.1.2
│ │ ├─┬ config-chain@1.1.10
│ │ │ └── proto-list@1.2.4
│ │ ├── inherits@2.0.1
│ │ ├── ini@1.3.4
│ │ ├─┬ nopt@3.0.6
│ │ │ └── abbrev@1.0.7
│ │ ├─┬ once@1.3.3
│ │ │ └── wrappy@1.0.1
│ │ ├── semver@4.3.6
│ │ └── uid-number@0.0.5
│ ├── pify@2.3.0
│ └─┬ pinkie-promise@2.0.0
│ └── pinkie@2.0.4
├─┬ got@5.4.1
│ ├─┬ create-error-class@2.0.1
│ │ └── capture-stack-trace@1.0.0
│ ├── duplexer2@0.1.4
│ ├── is-plain-obj@1.1.0
│ ├── is-redirect@1.0.0
│ ├── is-retry-allowed@1.0.0
│ ├── is-stream@1.0.1
│ ├── lowercase-keys@1.0.0
│ ├── node-status-codes@1.0.0
│ ├─┬ parse-json@2.2.0
│ │ └─┬ error-ex@1.3.0
│ │ └── is-arrayish@0.2.1
│ ├── read-all-stream@3.1.0
│ ├─┬ readable-stream@2.0.5
│ │ ├── core-util-is@1.0.2
│ │ ├── isarray@0.0.1
│ │ ├── process-nextick-args@1.0.6
│ │ ├── string_decoder@0.10.31
│ │ └── util-deprecate@1.0.2
│ ├── timed-out@2.0.0
│ ├── unzip-response@1.0.0
│ └─┬ url-parse-lax@1.0.0
│ └── prepend-http@1.0.3
├─┬ humanize-string@1.0.1
│ └── decamelize@1.1.2
├─┬ inquirer@0.11.4
│ ├── ansi-escapes@1.1.1
│ ├── ansi-regex@2.0.0
│ ├─┬ cli-cursor@1.0.2
│ │ └─┬ restore-cursor@1.0.1
│ │ └── exit-hook@1.1.1
│ ├── cli-width@1.1.1
│ ├─┬ readline2@1.0.1
│ │ ├── code-point-at@1.0.0
│ │ ├── is-fullwidth-code-point@1.0.0
│ │ └── mute-stream@0.0.5
│ ├── run-async@0.1.0
│ ├── rx-lite@3.1.2
│ ├── string-width@1.0.1
│ └── through@2.3.8
├─┬ insight@0.7.0
│ ├── inquirer@0.10.1
│ ├─┬ lodash.debounce@3.1.1
│ │ └── lodash._getnative@3.9.1
│ ├─┬ os-name@1.0.3
│ │ ├─┬ osx-release@1.1.0
│ │ │ └── minimist@1.2.0
│ │ └─┬ win-release@1.1.1
│ │ └── semver@5.1.0
│ ├─┬ request@2.69.0
│ │ ├── aws-sign2@0.6.0
│ │ ├─┬ aws4@1.2.1
│ │ │ └── lru-cache@2.7.3
│ │ ├── bl@1.0.2
│ │ ├── caseless@0.11.0
│ │ ├─┬ combined-stream@1.0.5
│ │ │ └── delayed-stream@1.0.0
│ │ ├── extend@3.0.0
│ │ ├── forever-agent@0.6.1
│ │ ├── form-data@1.0.0-rc3
│ │ ├─┬ har-validator@2.0.6
│ │ │ ├─┬ commander@2.9.0
│ │ │ │ └── graceful-readlink@1.0.1
│ │ │ └─┬ is-my-json-valid@2.12.4
│ │ │ ├── generate-function@2.0.0
│ │ │ ├─┬ generate-object-property@1.2.0
│ │ │ │ └── is-property@1.0.2
│ │ │ └── jsonpointer@2.0.0
│ │ ├─┬ hawk@3.1.3
│ │ │ ├── boom@2.10.1
│ │ │ ├── cryptiles@2.0.5
│ │ │ ├── hoek@2.16.3
│ │ │ └── sntp@1.0.9
│ │ ├─┬ http-signature@1.1.1
│ │ │ ├── assert-plus@0.2.0
│ │ │ ├─┬ jsprim@1.2.2
│ │ │ │ ├── extsprintf@1.0.2
│ │ │ │ ├── json-schema@0.2.2
│ │ │ │ └── verror@1.3.6
│ │ │ └─┬ sshpk@1.7.3
│ │ │ ├── asn1@0.2.3
│ │ │ ├── dashdash@1.12.2
│ │ │ ├── ecc-jsbn@0.1.1
│ │ │ ├── jodid25519@1.0.2
│ │ │ ├── jsbn@0.1.0
│ │ │ └── tweetnacl@0.13.3
│ │ ├── is-typedarray@1.0.0
│ │ ├── isstream@0.1.2
│ │ ├── json-stringify-safe@5.0.1
│ │ ├─┬ mime-types@2.1.9
│ │ │ └── mime-db@1.21.0
│ │ ├── node-uuid@1.4.7
│ │ ├── oauth-sign@0.8.1
│ │ ├── qs@6.0.2
│ │ ├── stringstream@0.0.5
│ │ └── tunnel-agent@0.4.2
│ └── tough-cookie@2.2.1
├── lodash@3.10.1
├─┬ meow@3.7.0
│ ├─┬ camelcase-keys@2.0.0
│ │ └── camelcase@2.1.0
│ ├─┬ loud-rejection@1.2.1
│ │ ├── array-find-index@1.0.1
│ │ └── signal-exit@2.1.2
│ ├── map-obj@1.0.1
│ ├── minimist@1.2.0
│ ├─┬ normalize-package-data@2.3.5
│ │ ├── hosted-git-info@2.1.4
│ │ ├─┬ is-builtin-module@1.0.0
│ │ │ └── builtin-modules@1.1.1
│ │ └─┬ validate-npm-package-license@3.0.1
│ │ ├─┬ spdx-correct@1.0.2
│ │ │ └── spdx-license-ids@1.2.0
│ │ └─┬ spdx-expression-parse@1.0.2
│ │ └── spdx-exceptions@1.0.4
│ ├─┬ redent@1.0.0
│ │ ├── indent-string@2.1.0
│ │ └── strip-indent@1.0.1
│ └── trim-newlines@1.0.0
├─┬ npm-keyword@4.2.0
│ └── registry-url@3.0.3
├── opn@3.0.3
├─┬ package-json@2.3.0
│ ├─┬ rc@1.1.6
│ │ ├── deep-extend@0.4.1
│ │ ├── minimist@1.2.0
│ │ └── strip-json-comments@1.0.4
│ └── semver@5.1.0
├─┬ read-pkg-up@1.0.1
│ ├─┬ find-up@1.1.0
│ │ └── path-exists@2.1.0
│ └─┬ read-pkg@1.1.0
│ ├─┬ load-json-file@1.1.0
│ │ └─┬ strip-bom@2.0.0
│ │ └── is-utf8@0.2.1
│ └── path-type@1.1.0
├─┬ repeating@2.0.0
│ └─┬ is-finite@1.0.1
│ └── number-is-nan@1.0.0
├─┬ root-check@1.0.0
│ ├─┬ downgrade-root@1.1.0
│ │ ├── default-uid@1.0.0
│ │ └── is-root@1.0.0
│ └─┬ sudo-block@1.2.0
│ └── is-docker@1.0.0
├─┬ sort-on@1.2.2
│ ├── arrify@1.0.1
│ └── dot-prop@2.2.0
├── string-length@1.0.1
├── titleize@1.0.0
├─┬ update-notifier@0.6.0
│ ├── is-npm@1.0.0
│ ├── latest-version@2.0.0
│ └─┬ semver-diff@2.1.0
│ └── semver@5.1.0
├─┬ user-home@2.0.0
│ └── os-homedir@1.0.1
├─┬ yeoman-character@1.1.0
│ └─┬ supports-color@3.1.2
│ └── has-flag@1.0.0
├─┬ yeoman-doctor@2.1.0
│ ├─┬ bin-version-check@2.1.0
│ │ ├─┬ bin-version@1.0.4
│ │ │ └─┬ find-versions@1.2.1
│ │ │ └── semver-regex@1.0.0
│ │ ├── minimist@1.2.0
│ │ └─┬ semver-truncate@1.1.0
│ │ └── semver@5.1.0
│ ├─┬ each-async@1.1.1
│ │ ├── onetime@1.1.0
│ │ └── set-immediate-shim@1.0.1
│ ├── log-symbols@1.0.2
│ ├── object-values@1.0.0
│ ├── semver@5.1.0
│ └─┬ twig@0.8.7
│ ├─┬ minimatch@0.2.14
│ │ ├── lru-cache@2.7.3
│ │ └── sigmund@1.0.1
│ └─┬ walk@2.3.9
│ └── foreachasync@3.0.0
├─┬ yeoman-environment@1.5.2
│ ├─┬ debug@2.2.0
│ │ └── ms@0.7.1
│ ├── diff@2.2.1
│ ├─┬ globby@4.0.0
│ │ ├─┬ array-union@1.0.1
│ │ │ └── array-uniq@1.0.2
│ │ └─┬ glob@6.0.4
│ │ ├── inflight@1.0.4
│ │ ├─┬ minimatch@3.0.0
│ │ │ └─┬ brace-expansion@1.1.2
│ │ │ ├── balanced-match@0.3.0
│ │ │ └── concat-map@0.0.1
│ │ └── path-is-absolute@1.0.0
│ ├── grouped-queue@0.3.2
│ ├─┬ mem-fs@1.1.2
│ │ ├─┬ through2@2.0.1
│ │ │ └── xtend@4.0.1
│ │ ├─┬ vinyl@1.1.1
│ │ │ ├── clone@1.0.2
│ │ │ ├── clone-stats@0.0.1
│ │ │ └── replace-ext@0.0.1
│ │ └─┬ vinyl-file@1.3.0
│ │ └─┬ strip-bom-stream@1.0.0
│ │ └── first-chunk-stream@1.0.0
│ ├── text-table@0.2.0
│ └── untildify@2.1.0
└─┬ yosay@1.1.0
├── minimist@1.2.0
├── pad-component@0.0.1
├─┬ taketalk@1.0.0
│ ├── get-stdin@4.0.1
│ └── minimist@1.2.0
└── word-wrap@1.1.0
will-i-am:~ William$
The second time I installed it:
will-i-am:~ William$ npm install yo
npm WARN deprecated npmconf@2.1.2: this package has been reintegrated into npm and is now out of date with respect to npm
> yo@1.6.0 postinstall /Users/William/node_modules/yo
> yodoctor
Yeoman Doctor
Running sanity checks on your system
✔ Global configuration file is valid
✔ NODE_PATH matches the npm root
✔ Node.js version
✔ No .bowerrc file in home directory
✔ No .yo-rc.json file in home directory
✔ npm version
Everything looks all right!
nvm@0.30.2 /Users/William
├── grunt@0.4.5 extraneous
├─┬ stellar-sdk@0.4.1
│ ├── lodash@3.10.1
│ └─┬ stellar-base@0.5.1
│ └── lodash@3.10.1
└── yo@1.6.0 extraneous
will-i-am:~ William$
End of Installation Commands
Here we list out the commands we will be using, in order.
We are using Homebrew, so we begin with ..
Open a new Terminal:
brew update
brew doctor
References:
nvm
npm
yo
go : we are using gulp
not go
gb. : we are using gulp
not gb
grunt : we are using gulp
not grunt
gulp : we are using gulp
gulp faq
gulp js
urchin : testing
yeoman :
Bower
Choices, choices:
Grunt or Gulp
Gulp vs Grunt. Why one? Why the Other?
Our decision is to use gulp with the generator-webapp.
Now, how to begin the Install process ?
Fortunately we have Homebrew installed.
brew install nvm
will-i-am:~ William$ brew install nvm
==> Downloading https://github.com/creationix/nvm/archive/v0.30.1.tar.gz
Already downloaded: /Library/Caches/Homebrew/nvm-0.30.1.tar.gz
==> Caveats
Please note that upstream has asked us to make explicit managing
nvm via Homebrew is unsupported by them and you should check any
problems against the standard nvm install method prior to reporting.
You should create NVM's working directory if it doesn't exist:
mkdir ~/.nvm
Add the following to ~/.bash_profile or your desired shell
configuration file:
export NVM_DIR=~/.nvm
. $(brew --prefix nvm)/nvm.sh
You can set $NVM_DIR to any location, but leaving it unchanged from
/usr/local/Cellar/nvm/0.30.1 will destroy any nvm-installed Node installations
upon upgrade/reinstall.
Type `nvm help` for further information.
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
==> Summary
🍺 /usr/local/Cellar/nvm/0.30.1: 6 files, 82.6K, built in 1 second
will-i-am:~ William$
nvm is installed, and gives us instructions in the Terminal:
I check to see if the ~/.nvm
exists, it does not.
ls -aux
Following instructions above I make the directory:
mkdir ~/.nvm
I open the ~/.profile
file:
open -e ~/.profile
After running brew install nvm
, Terminal tells you to install these two lines:
export NVM_DIR=~/.nvm
. $(brew --prefix nvm)/nvm.sh
Done, now how do I determine if our nvm
installation working ?
nvm ls
Response:
N/A
node -> stable (-> N/A) (default)
iojs -> N/A (default)
The above is showing N/A because we have not yet installed node
, and
the fact that this is the response shows nvm
is up and running.
Find what versions of Node.js are available:
nvm ls-remote
This produces a very long list of versions, ending this day with, v5.6.0
Install the latest version of Node.js, we will use v5.6.0
:
We are installing Node.js:
brew install node
will-i-am:~ William$ brew install node
==> Downloading https://homebrew.bintray.com/bottles/node-5.6.0.el_capitan.bottle.tar.gz
Already downloaded: /Library/Caches/Homebrew/node-5.6.0.el_capitan.bottle.tar.gz
==> Pouring node-5.6.0.el_capitan.bottle.tar.gz
==> Caveats
Please note by default only English locale support is provided. If you need
full locale support you should:
`brew reinstall node --with-full-icu`
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
==> Summary
🍺 /usr/local/Cellar/node/5.6.0: 3,726 files, 35.3M
will-i-am:~ William$
The results of our installation are showing with the info
command:
will-i-am:~ William$ brew info node
node: stable 5.6.0 (bottled), HEAD
Platform built on the V8 JavaScript runtime to build network applications
https://nodejs.org/
/usr/local/Cellar/node/5.6.0 (3,726 files, 35.3M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/node.rb
==> Dependencies
Build: pkg-config ✔
Optional: openssl ✔
==> Options
--with-debug
Build with debugger hooks
--with-full-icu
Build with full-icu (all locales) instead of small-icu (English only)
--with-openssl
Build with openssl support
--without-completion
npm bash completion will not be installed
--without-npm
npm will not be installed
--HEAD
Install HEAD version
==> Caveats
Please note by default only English locale support is provided. If you need
full locale support you should:
`brew reinstall node --with-full-icu`
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
will-i-am:~ William$ brew cask info node
node: 4.3.0
Node.js
https://nodejs.org/
Not installed
https://github.com/caskroom/homebrew-cask/blob/master/Casks/node.rb
==> Contents
node-v4.3.0.pkg (pkg)
will-i-am:~ William$
I see the note 'Not installed' and so run:
brew cask install node
==> Downloading https://github.com/creationix/nvm/archive/v0.30.1.tar.gz Already downloaded: /Library/Caches/Homebrew/nvm-0.30.1.tar.gz ==> Caveats Please note that upstream has asked us to make explicit managing nvm via Homebrew is unsupported by them and you should check any problems against the standard nvm install method prior to reporting.
You should create NVM's working directory if it doesn't exist:
mkdir ~/.nvm
Add the following to ~/.bash_profile or your desired shell configuration file:
export NVM_DIR=~/.nvm . $(brew --prefix nvm)/nvm.sh
You can set $NVM_DIR to any location, but leaving it unchanged from /usr/local/Cellar/nvm/0.30.1 will destroy any nvm-installed Node installations upon upgrade/reinstall.
Type nvm help
for further information.
Bash completion has been installed to: /usr/local/etc/bash_completion.d ==> Summary 🍺 /usr/local/Cellar/nvm/0.30.1: 6 files, 82.6K, built in 17 seconds will-i-am:.nvm William$
I check the ENV variables to see if NVM_DIR is installed.
env
will-i-am: William$ env
...
NVM_DIR=/Users/William/.nvm
...
I check to see if the ~/.nvm
exists, it does not.
ls -aux
Following instructions above I make the directory:
will-i-am:~ William$ mkdir ~/.nvm
I open ~/.profile
and install the 'source line':
open -e ~/.profile
Source line:
export NVM_DIR=~/.nvm
. $(brew --prefix nvm)/nvm.sh
Yes, that is a period on the second line.
Running Node.js, now we use it:
nvm use v5.6.0
after install.
Now that nvm
is set up, we install Node.js:
brew install node
Is it installed ?
brew info node
Does Homebrew-Cask know about it ?
brew cask info node
Install the Cask named, node
:
brew cask install node
Does Homebrew-Cask now know about it ?
brew cask info node
brew tap
: list the taps
brew tap-info caskroom/cask
: Display information about tap
Okay, we now have nvm
and node
installed.
I run nvm use 5.6.0
telling the system to now use this version:
nvm use 5.6.0
I now set this versions as default when opening a new shell:
nvm alias default node
will-i-am:~ William$ nvm --version
0.30.1
will-i-am:~ William$ nvm alias default node
default -> node (-> v5.6.0)
will-i-am:~ William$
Instructions are to bring npm
up to the latest version:
npm install -g npm@latest
Which npm
are we now using:
Per instructions from Terminal, we need to unset a prefix:
nvm use --delete-prefix v5.5.0
Now using node v5.6.0 (npm v3.7.2)
Notice npm
is installed and showing its version.
which npm 5.6
We now use npm
to install others ..
Run:
npm install -g yo
will-i-am:~ William$ npm install yo
. . truncated . .
✔ No .bowerrc file in home directory
✔ No .yo-rc.json file in home directory
✔ npm version
Everything looks all right!
From the above I note:
npm version
.yo-rc.json file in home directory
.bowerrc file in home directory
Bower Configuration
TODO: 20160213 : research those two files to see what is required, if anything.
"If you have previously installed a version of gulp globally,
please run npm rm --global gulp
to make sure your old version doesn't
collide with gulp-cli.""
npm rm --global gulp
Is gulp
gone ?
gulp --version
gulp-cli --version
Now we reinstall:
npm install --global gulp-cli
Is gulp
installed ?
gulp --version
gulp-cli --version
If you chose to use and install Grunt:
Run:
npm install -g grunt
Note: In the below response, I had to add spaces here for the formatting
code to work: @ < 3
Questions about lodash
?
Now Run:
npm install -g grunt-cli
Need a grunt
reference: http://gruntjs.com/getting-started.
Note: In the below response, I had to add spaces here for the formatting
code to work: @ < 3
will-i-am:~ William$ npm install -g grunt-cli
npm WARN deprecated lodash@2.4.2: lodash@< 3 .0.0 is no longer maintained. Upgrade to lodash@^4.0.0.
/Users/William/.nvm/versions/node/v5.6.0/bin/grunt -> /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/grunt-cli/bin/grunt
/Users/William/.nvm/versions/node/v5.6.0/lib
└─┬ grunt-cli@0.1.13
├─┬ findup-sync@0.1.3
│ ├─┬ glob@3.2.11
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.3.0
│ │ ├── lru-cache@2.7.3
│ │ └── sigmund@1.0.1
│ └── lodash@2.4.2
├─┬ nopt@1.0.10
│ └── abbrev@1.0.7
└── resolve@0.3.1
will-i-am:~ William$
QUESTION: How do I prove grunt has been installed
Answer : grunt --version
will-i-am:~ William$ grunt --version
grunt-cli v0.1.13
grunt v0.4.5
will-i-am:~ William$
QUESTION: How do I uninstall grunt
Run:
npm uninstall -g grunt-cli
npm uninstall grunt
Okay, let us do a brew cleanup
:
brew cleanup
In the results, I notice this Warning line:
will-i-am:~ William$ brew cleanup
Removing: /usr/local/Cellar/automake/1.14... (127 files, 2.5M)
Removing: /usr/local/Cellar/automake/1.14.1... (127 files, 2.5M)
Removing: /usr/local/Cellar/bash/4.2.45... (41 files, 4M)
. . truncated . .
**Warning: Skipping postgresql: most recent version 9.5.1 not installed**
. . truncated . .
Removing: /Library/Caches/Homebrew/openssl-1.0.2e_1.el_capitan.bottle.tar.gz... (3.6M)
Removing: /Library/Caches/Homebrew/postgresql-9.5.0.el_capitan.bottle.1.tar.gz... (9.9M)
Removing: /Users/William/Library/Logs/Homebrew/ack... (77B)
Removing: /Users/William/Library/Logs/Homebrew/postgresql... (1.6K)
==> This operation has freed approximately 1.3G of disk space.
will-i-am:~ William$
So, I upgrade postgres. First, is the Postgres server running ?
If it is, shut it down, we use:
pg_ctl -D /usr/local/var/postgres stop -s -m fast
will-i-am:~ William$ brew upgrade postgres
==> Upgrading 1 outdated package, with result:
postgresql 9.5.1
==> Upgrading postgresql
==> Downloading https://homebrew.bintray.com/bottles/postgresql-9.5.1.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring postgresql-9.5.1.el_capitan.bottle.tar.gz
==> Caveats
If builds of PostgreSQL 9 are failing and you have version 8.x installed,
you may need to remove the previous version first. See:
https://github.com/Homebrew/homebrew/issues/2510
To migrate existing data from a previous major version (pre-9.0) of PostgreSQL, see:
http://www.postgresql.org/docs/9.5/static/upgrading.html
To migrate existing data from a previous minor version (9.0-9.4) of PosgresSQL, see:
http://www.postgresql.org/docs/9.5/static/pgupgrade.html
You will need your previous PostgreSQL installation from brew to perform `pg_upgrade`.
Do not run `brew cleanup postgresql` until you have performed the migration.
To reload postgresql after an upgrade:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don't want/need launchctl, you can just run:
(Start:) postgres -D /usr/local/var/postgres
(Open a new Terminal, issue next command, and watch it shut down in first Terminal.)
(Stop :) pg_ctl -D /usr/local/var/postgres stop -s -m fast
==> Summary
🍺 /usr/local/Cellar/postgresql/9.5.1: 3,118 files, 35M
will-i-am:~ William$
TODO: Answer these
QUESTION : 20160213 : What does "if you don't want/need launchctl" mean, exactly ?
Answer : 2016021? : launchctl is ..
The reason you would need it is ..
The reason you would want it is ..
Now I run:
brew update
and then:
brew cleanup
where we will see postgres 9.5.0 is cleaned out.
will-i-am:~ William$ brew cleanup
Removing: /usr/local/Cellar/postgresql/9.5.0... (3,113 files, 35.0M)
==> This operation has freed approximately 35.0M of disk space.
will-i-am:~ William$
Now we install Bower:
npm install -g bower
will-i-am:~ William$ npm install -g bower
/Users/William/.nvm/versions/node/v5.6.0/bin/bower -> /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/bower/bin/bower
/Users/William/.nvm/versions/node/v5.6.0/lib
└── bower@1.7.7
We can see bower@1.7.7 is now installed
Sidetracked: I ran the command, `npm search bower' and in the results,
I came across observatory . .
let's install it and see how it looks, with these two:
npm install observatory
npm home observatory
will-i-am:~ William$ npm install observatory
> yo@1.6.0 postinstall /Users/William/node_modules/yo
> yodoctor
Yeoman Doctor
Running sanity checks on your system
✔ Global configuration file is valid
✔ NODE_PATH matches the npm root
✔ Node.js version
✔ No .bowerrc file in home directory
✔ No .yo-rc.json file in home directory
✔ npm version
Everything looks all right!
nvm@0.30.2 /Users/William
├── bower@1.7.7 extraneous
├── grunt@0.4.5 extraneous
├── observatory@1.0.0 extraneous
├─┬ stellar-sdk@0.4.1 (your response will not show this)
│ ├── lodash@3.10.1
│ └─┬ stellar-base@0.5.1 (nor this)
│ └── lodash@3.10.1
└── yo@1.6.0 extraneous
will-i-am:~ William$
I take a look:
npm home observatory
Okay, not something I need right now.
npm uninstall observatory
Easy peasy lemon squeezey.
Question: 20160213 : To make sure we are using the latest lodash
:
Answer : 20160214 : Run npm i --save lodash
npm i --save lodash
will-i-am:~ William$ npm i --save lodash
nvm@0.30.2 /Users/William
├── lodash@4.3.0
└─┬ stellar-sdk@0.4.1
├── lodash@3.10.1
└─┬ stellar-base@0.5.1
└── lodash@3.10.1
The following section contains the installation commands and their results.
To find the definition, use, and the results of the use of any command,
search the full command on this page to see each.
End of Installation Commands with Results
To see these commands without explanation, see : Installation Instructions
##### [Your First Yeoman Program](#firstyeomanprogram) TODO: 20160224 : this shoud be a link ^^^^^^^^^^^^^Now we can install gulp
TODO: I notice something, the -g
switch, what is this doing, and ..
QUESTION: Are all npm install
commands followed by the -g
switch ?
Answer : The -g
switch is part of the command, explained by npmjs docs:
"The -g or --global argument will cause npm to install the package globally
rather than locally. See npm-folders."
Also from that reference, this quote:
"Global install (with -g): puts stuff in /usr/local or wherever node is installed."
These two commands are the same to install gulp
globally:
npm install -g gulp-cli
The commands above and below are from the gulp Getting Started docs.
Here, the --save-dev
switch installs gulp
in your project devDependencies:
npm install --save-dev gulp
"Create a gulpfile.js at the root of your project:", enter these lines:
var gulp = require('gulp');
gulp.task('default', function() {
// place code for your default task here
});
Run gulp:
gulp
The default task will run and do nothing.
To run individual tasks,
use gulp <task> <othertask>
.
will-i-am:yo-stellar William$ touch gulp.js
will-i-am:yo-stellar William$ open -e gulp.js
will-i-am:yo-stellar William$ gulp
[10:58:02] Requiring external module babel-register
[10:58:02] Using gulpfile ~/yo-stellar/gulpfile.babel.js
[10:58:02] Starting 'clean'...
[10:58:02] Finished 'clean' after 9.22 ms
[10:58:02] Starting 'default'...
[10:58:02] Starting 'lint'...
[10:58:06] Starting 'styles'...
[10:58:07] Starting 'scripts'...
[10:58:07] Starting 'images'...
[10:58:10] Starting 'fonts'...
[10:58:10] Starting 'extras'...
[10:58:10] Finished 'default' after 8.07 s
[10:58:10] Finished 'images' after 3.55 s
[10:58:10] Finished 'fonts' after 22 ms
[10:58:10] Finished 'lint' after 8.17 s
[10:58:10] Finished 'styles' after 4.15 s
[10:58:10] Finished 'scripts' after 3.75 s
[10:58:10] Starting 'html'...
[10:58:14] Finished 'extras' after 3.99 s
[10:58:14] Finished 'html' after 3.79 s
[10:58:14] Starting 'build'...
[10:58:15] build all files 9.2 kB (gzipped)
[10:58:15] Finished 'build' after 254 ms
will-i-am:yo-stellar William$
Where do I go now?
You have an empty gulpfile and everything is installed.
How do you REALLY get started? Check out the recipes and
the list of articles for more information.
.src
,.watch
,.dest
, CLI args - How do I use these things?For API specific documentation you can check out the documentation for that.
Now we will add the 'coup de grace' with the yeoman/generator-webapp.
Renamed from
generator-gulp-webapp
togenerator-webapp
on 20160215.Specifically from the Getting Started file:
If you haven't already, install yo and this generator by running:
$
npm install --global yo generator-webapp
Now you can scaffold your very own web app:
$ mkdir my-webapp
$ cd my-webapp
$ yo gulp-webapp : 20160215 : Yo changed this toyo webapp
TODO: MISMATCH : command first shown in the 183 line also shows creating the gulp.js file.
THIS SAME ERROR EXISTS AT LINE 325 : 20160217
Answer: the below info to make a directory, etc., comes from the
yeoman/generator-webapp README.md file.
ALSO: on 20160215, the name of the generator was changed
from generator-gulp-webapp
to generator webapp
.
TODO: 20160217 : change all of the from commands to the to command.
Are we ready ? Run:
npm ls -g generator-webapp
To start developing, run:
$
gulp serve
This will fire up a local web server, open http://localhost:9000 in your default
browser and watch files for changes, reloading the browser automatically via LiveReload.To run the tests in the browser, run:
$ gulp serve:test
You will need to study the yeoman/generator-webappreference before we do the actual install,
and then again before you go into production, for more commands to do so.
For example:
Tasks
To get the list of available tasks, run:
$
gulp --tasks
gulp --tasks
: is not the same command as below
gulp tasks
: see results below
Last login: Thu Feb 18 09:34:03 on ttys007
will-i-am:~ William$ cd yo-stellar/
will-i-am:yo-stellar William$ gulp tasks
[10:13:07] Requiring external module babel-register
[10:13:10] Using gulpfile ~/yo-stellar/gulpfile.babel.js
[10:13:10] Task 'tasks' is not in your gulpfile
[10:13:10] Please check the documentation for proper gulpfile formatting
will-i-am:yo-stellar William$
gulp --tasks
: results below
will-i-am:yo-stellar William$ gulp --tasks
[10:37:42] Requiring external module babel-register
[10:37:43] Tasks for ~/yo-stellar/gulpfile.babel.js
[10:37:43] ├─┬ build
[10:37:43] │ ├── lint
[10:37:43] │ ├─┬ html
[10:37:43] │ │ ├── styles
[10:37:43] │ │ └── scripts
[10:37:43] │ ├── images
[10:37:43] │ ├── fonts
[10:37:43] │ └── extras
[10:37:43] ├── clean
[10:37:43] ├─┬ default
[10:37:43] │ └── clean
[10:37:43] ├── extras
[10:37:43] ├── fonts
[10:37:43] ├─┬ html
[10:37:43] │ ├── styles
[10:37:43] │ └── scripts
[10:37:43] ├── images
[10:37:43] ├── lint
[10:37:43] ├── lint:test
[10:37:43] ├── scripts
[10:37:43] ├─┬ serve
[10:37:43] │ ├── styles
[10:37:43] │ ├── scripts
[10:37:43] │ └── fonts
[10:37:43] ├── serve:dist
[10:37:43] ├─┬ serve:test
[10:37:43] │ └── scripts
[10:37:43] ├── styles
[10:37:43] └── wiredep
will-i-am:yo-stellar William$
The yeoman/generator-webapp
generator uses Bower and keeps
bower_components in the project root. The link explains why.
There is a bit more to know, so make sure you read the
yeoman/generator-webapp Getting Started file.
For example:
While
gulp serve
is running, installing Bower components will usually be as easy as:$
bower install --save jquery
The above is not working, search the command to find other notes.
End of Gulp Instructions
Remember this command ?
Last login: Thu Feb 18 12:31:03 on ttys009
will-i-am:~ William$ brew search alfred
Caskroom/cask/alfred
will-i-am:~ William$ brew cask search alfred
==> Exact match
alfred
will-i-am:~ William$ brew cask install alfred
==> Downloading https://cachefly.alfredapp.com/Alfred_2.8.2_432.zip
######################################################################## 100.0%
==> Verifying checksum for Cask alfred
==> Symlinking App 'Alfred 2.app' to '/Users/William/Applications/Alfred 2.app'
==> Enabling accessibility access
Password:
🍺 alfred staged at '/opt/homebrew-cask/Caskroom/alfred/2.8.2_432' (285 files, 9.3M)
will-i-am:~ William$
Alfred is installed. Let's look at the Alfred info:
brew cask info alfred
will-i-am:~ William$ brew cask info alfred
alfred: 2.8.2_432
Alfred
https://www.alfredapp.com/
/opt/homebrew-cask/Caskroom/alfred/2.8.2_432 (285 files, 9.3M)
https://github.com/caskroom/homebrew-cask/blob/master/Casks/alfred.rb
==> Contents
Alfred 2.app (app)
will-i-am:~ William$
This shows how we first start it ..
$ open "/opt/homebrew-cask/Caskroom/alfred/2.8.2_432/Alfred 2.app"
.. and now it is installed and will be there all the time. Where ? You ask ?
Look for the little Alfred Hat at the top of your screen, up there with the time.
You can also open it with the Alt/Option key and space bar held down at same time.
Install Grunt
We have already installed grunt and we chose to use gulp.
However other packages use grunt, so we shall leave it installed
Run:
npm install -g grunt-cli
TODO: RERUN THIS COMMAND and replace results below, now that we are reconfigured.
will-i-am:~ William$ npm install -g grunt-cli
npm WARN deprecated lodash@2.4.2: lodash@< 3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0
/usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/bin/grunt -> /usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib/node_modules/grunt-cli/bin/grunt
/usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib
└─┬ grunt-cli@0.1.13
├─┬ findup-sync@0.1.3
│ ├─┬ glob@3.2.11
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.3.0
│ │ ├── lru-cache@2.7.3
│ │ └── sigmund@1.0.1
│ └── lodash@2.4.2
├─┬ nopt@1.0.10
│ └── abbrev@1.0.7
└── resolve@0.3.1
will-i-am:~ William$
NOTE: 'npm WARN deprecated lodash@2.4.2: lodash@ < 3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0'
Source Reference : lodash/lodash repository
Run:
{sudo -H} npm i -g npm
Source Reference: https://lodash.com/
will-i-am:/ William$ sudo -H npm i -g npm
Password:
/usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/bin/npm -> /usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib/node_modules/npm/bin/npm-cli.js
/usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib
└── npm@3.7.1
will-i-am:/ William$
Run:
npm i --save lodash
will-i-am:~ William$ npm i --save lodash
nvm@0.30.2 /Users/William
├── lodash@4.3.0
└─┬ stellar-sdk@0.4.1
├── lodash@3.10.1
└─┬ stellar-base@0.5.1
└── lodash@3.10.1
will-i-am:~ William$
Run:
npm install -g grunt-cli
same as ..
npm install --global grunt-cli
will-i-am:/ William$ npm install -g grunt-cli
npm WARN deprecated lodash@2.4.2: lodash@ < 3 .0.0 is no longer maintained. Upgrade to lodash@^4.0.0
/usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/bin/grunt -> /usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib/node_modules/grunt-cli/bin/grunt
/usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib
└── grunt-cli@0.1.13
Our lodash
has been updated, we are fine.
Proof of install ?
I found the version command by first using:
npm --help
npm version
will-i-am:~ William$ npm version
{ nvm: '0.30.2',
npm: '3.7.2',
ares: '1.10.1-DEV',
http_parser: '2.6.1',
icu: '56.1',
modules: '47',
node: '5.6.0',
openssl: '1.0.2f',
uv: '1.8.0',
v8: '4.6.85.31',
zlib: '1.2.8' }
will-i-am:~ William$
An
npm
nuance:
Runnpm --help
and notice there is a correct, and an incorrect spelling
of version, also showing as verison.
Now we install bower
:
npm install -g bower
will-i-am:/ William$ npm install -g bower
/usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/bin/bower -> /usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib/node_modules/bower/bin/bower
/usr/local/Cellar/nvm/HEAD/versions/node/v5.5.0/lib
└── bower@1.7.7
will-i-am:/ William$
We now have everything installed so we can get to work.
The next command will be:
npm install -g generator-webapp
We just used the Node Package Manager to install a package of code called
the generator-webapp
.
I have installed and uninstalled many a time so, this is the first time running it.
will-i-am:~ William$ npm install -g generator-webapp
npm WARN deprecated lodash@2.4.2: lodash@ < 3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0.
> spawn-sync@1.0.15 postinstall /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/generator-webapp/node_modules/spawn-sync
> node postinstall
/Users/William/.nvm/versions/node/v5.6.0/lib
└─┬ generator-webapp@1.1.2
├─┬ chalk@1.1.1
│ ├── ansi-styles@2.1.0
│ ├── escape-string-regexp@1.0.4
│ ├── has-ansi@2.0.0
│ ├── strip-ansi@3.0.0
│ └── supports-color@2.0.0
├── generator-jasmine@0.2.2
├─┬ generator-mocha@0.2.0
│ └─┬ yeoman-generator@0.19.2
│ ├── async@0.9.2
│ ├─┬ cross-spawn@0.2.9
│ │ └── lru-cache@2.7.3
│ ├── diff@1.4.0
│ ├─┬ github-username@1.1.1
│ │ ├── get-stdin@1.0.0
│ │ └─┬ got@2.9.2
│ │ ├── infinity-agent@2.0.3
│ │ ├── nested-error-stacks@1.0.2
│ │ ├── prepend-http@1.0.3
│ │ ├── read-all-stream@2.2.0
│ │ └── statuses@1.2.1
│ ├─┬ mem-fs-editor@1.2.3
│ │ └─┬ vinyl@0.4.6
│ │ └── clone@0.2.0
│ ├─┬ pretty-bytes@1.0.4
│ │ └── get-stdin@4.0.1
│ ├── shelljs@0.4.0
│ ├─┬ through2@0.6.5
│ │ └── readable-stream@1.0.33
│ ├── user-home@1.1.1
│ ├── xdg-basedir@1.0.1
│ └─┬ yeoman-assert@1.0.0
│ ├─┬ chalk@0.5.1
│ │ ├── ansi-styles@1.1.0
│ │ ├─┬ has-ansi@0.1.0
│ │ │ └── ansi-regex@0.2.1
│ │ ├── strip-ansi@0.3.0
│ │ └── supports-color@0.2.0
│ └── lodash@2.4.2
├─┬ mkdirp@0.5.1
│ └── minimist@0.0.8
├── underscore.string@3.2.3
├─┬ wiredep@2.2.2
│ ├─┬ bower-config@0.5.2
│ │ ├── graceful-fs@2.0.3
│ │ ├── mout@0.9.1
│ │ ├─┬ optimist@0.6.1
│ │ │ ├── minimist@0.0.10
│ │ │ └── wordwrap@0.0.3
│ │ └── osenv@0.0.3
│ ├─┬ chalk@0.5.1
│ │ ├── ansi-styles@1.1.0
│ │ ├─┬ has-ansi@0.1.0
│ │ │ └── ansi-regex@0.2.1
│ │ ├── strip-ansi@0.3.0
│ │ └── supports-color@0.2.0
│ ├─┬ glob@4.5.3
│ │ ├─┬ inflight@1.0.4
│ │ │ └── wrappy@1.0.1
│ │ ├── inherits@2.0.1
│ │ ├─┬ minimatch@2.0.10
│ │ │ └─┬ brace-expansion@1.1.3
│ │ │ ├── balanced-match@0.3.0
│ │ │ └── concat-map@0.0.1
│ │ └── once@1.3.3
│ ├── lodash@2.4.2
│ ├── minimist@1.2.0
│ ├── propprop@0.3.0
│ └─┬ through2@0.6.5
│ ├─┬ readable-stream@1.0.33
│ │ ├── core-util-is@1.0.2
│ │ ├── isarray@0.0.1
│ │ └── string_decoder@0.10.31
│ └── xtend@4.0.1
├─┬ yeoman-generator@0.20.3
│ ├── async@1.5.2
│ ├─┬ class-extend@0.1.2
│ │ └── object-assign@2.1.1
│ ├─┬ cli-table@0.3.1
│ │ └── colors@1.0.3
│ ├─┬ cross-spawn@2.1.5
│ │ ├─┬ cross-spawn-async@2.1.8
│ │ │ ├─┬ lru-cache@4.0.0
│ │ │ │ ├── pseudomap@1.0.2
│ │ │ │ └── yallist@2.0.0
│ │ │ └─┬ which@1.2.4
│ │ │ ├─┬ is-absolute@0.1.7
│ │ │ │ └── is-relative@0.1.3
│ │ │ └── isexe@1.1.2
│ │ └─┬ spawn-sync@1.0.15
│ │ └── os-shim@0.1.3
│ ├─┬ dargs@4.1.0
│ │ └── number-is-nan@1.0.0
│ ├─┬ dateformat@1.0.12
│ │ ├── get-stdin@4.0.1
│ │ └─┬ meow@3.7.0
│ │ ├─┬ camelcase-keys@2.0.0
│ │ │ └── camelcase@2.1.0
│ │ ├── decamelize@1.1.2
│ │ ├─┬ loud-rejection@1.2.1
│ │ │ ├── array-find-index@1.0.1
│ │ │ └── signal-exit@2.1.2
│ │ ├── map-obj@1.0.1
│ │ ├─┬ normalize-package-data@2.3.5
│ │ │ ├── hosted-git-info@2.1.4
│ │ │ ├─┬ is-builtin-module@1.0.0
│ │ │ │ └── builtin-modules@1.1.1
│ │ │ ├── semver@5.1.0
│ │ │ └─┬ validate-npm-package-license@3.0.1
│ │ │ ├─┬ spdx-correct@1.0.2
│ │ │ │ └── spdx-license-ids@1.2.0
│ │ │ └─┬ spdx-expression-parse@1.0.2
│ │ │ └── spdx-exceptions@1.0.4
│ │ ├── object-assign@4.0.1
│ │ ├─┬ read-pkg-up@1.0.1
│ │ │ ├─┬ find-up@1.1.0
│ │ │ │ └── path-exists@2.1.0
│ │ │ └─┬ read-pkg@1.1.0
│ │ │ ├── load-json-file@1.1.0
│ │ │ └── path-type@1.1.0
│ │ ├─┬ redent@1.0.0
│ │ │ ├── indent-string@2.1.0
│ │ │ └── strip-indent@1.0.1
│ │ └── trim-newlines@1.0.0
│ ├─┬ debug@2.2.0
│ │ └── ms@0.7.1
│ ├── detect-conflict@1.0.0
│ ├── diff@2.2.1
│ ├─┬ download@4.4.3
│ │ ├─┬ caw@1.2.0
│ │ │ ├─┬ get-proxy@1.0.1
│ │ │ │ └─┬ rc@0.5.5
│ │ │ │ ├── deep-extend@0.2.11
│ │ │ │ ├── ini@1.3.4
│ │ │ │ ├── minimist@0.0.10
│ │ │ │ └── strip-json-comments@0.1.3
│ │ │ ├── is-obj@1.0.0
│ │ │ ├── object-assign@3.0.0
│ │ │ └── tunnel-agent@0.4.2
│ │ ├─┬ concat-stream@1.5.1
│ │ │ └── typedarray@0.0.6
│ │ ├─┬ each-async@1.1.1
│ │ │ ├── onetime@1.1.0
│ │ │ └── set-immediate-shim@1.0.1
│ │ ├─┬ filenamify@1.2.0
│ │ │ ├── filename-reserved-regex@1.0.0
│ │ │ ├── strip-outer@1.0.0
│ │ │ └── trim-repeated@1.0.0
│ │ ├─┬ got@5.4.1
│ │ │ ├─┬ create-error-class@2.0.1
│ │ │ │ └── capture-stack-trace@1.0.0
│ │ │ ├── duplexer2@0.1.4
│ │ │ ├── is-plain-obj@1.1.0
│ │ │ ├── is-redirect@1.0.0
│ │ │ ├── is-retry-allowed@1.0.0
│ │ │ ├── is-stream@1.0.1
│ │ │ ├── lowercase-keys@1.0.0
│ │ │ ├── node-status-codes@1.0.0
│ │ │ ├── object-assign@4.0.1
│ │ │ ├─┬ parse-json@2.2.0
│ │ │ │ └─┬ error-ex@1.3.0
│ │ │ │ └── is-arrayish@0.2.1
│ │ │ ├─┬ pinkie-promise@2.0.0
│ │ │ │ └── pinkie@2.0.4
│ │ │ ├── timed-out@2.0.0
│ │ │ ├── unzip-response@1.0.0
│ │ │ └── url-parse-lax@1.0.0
│ │ ├─┬ gulp-decompress@1.2.0
│ │ │ ├─┬ archive-type@3.2.0
│ │ │ │ └── file-type@3.7.0
│ │ │ ├─┬ decompress@3.0.0
│ │ │ │ ├─┬ buffer-to-vinyl@1.1.0
│ │ │ │ │ └── uuid@2.0.1
│ │ │ │ ├─┬ decompress-tar@3.1.0
│ │ │ │ │ ├── is-tar@1.0.0
│ │ │ │ │ ├─┬ strip-dirs@1.1.1
│ │ │ │ │ │ ├── is-natural-number@2.0.0
│ │ │ │ │ │ └── sum-up@1.0.2
│ │ │ │ │ ├─┬ tar-stream@1.3.1
│ │ │ │ │ │ ├── bl@1.1.2
│ │ │ │ │ │ └── end-of-stream@1.1.0
│ │ │ │ │ ├─┬ through2@0.6.5
│ │ │ │ │ │ └── readable-stream@1.0.33
│ │ │ │ │ └─┬ vinyl@0.4.6
│ │ │ │ │ └── clone@0.2.0
│ │ │ │ ├─┬ decompress-tarbz2@3.1.0
│ │ │ │ │ ├── is-bzip2@1.0.0
│ │ │ │ │ ├─┬ seek-bzip@1.0.5
│ │ │ │ │ │ └─┬ commander@2.8.1
│ │ │ │ │ │ └── graceful-readlink@1.0.1
│ │ │ │ │ ├─┬ through2@0.6.5
│ │ │ │ │ │ └── readable-stream@1.0.33
│ │ │ │ │ └─┬ vinyl@0.4.6
│ │ │ │ │ └── clone@0.2.0
│ │ │ │ ├─┬ decompress-targz@3.1.0
│ │ │ │ │ ├── is-gzip@1.0.0
│ │ │ │ │ ├─┬ through2@0.6.5
│ │ │ │ │ │ └── readable-stream@1.0.33
│ │ │ │ │ └─┬ vinyl@0.4.6
│ │ │ │ │ └── clone@0.2.0
│ │ │ │ ├─┬ decompress-unzip@3.4.0
│ │ │ │ │ ├── is-zip@1.0.0
│ │ │ │ │ ├── stat-mode@0.2.1
│ │ │ │ │ └─┬ yauzl@2.4.1
│ │ │ │ │ └─┬ fd-slicer@1.0.1
│ │ │ │ │ └── pend@1.2.0
│ │ │ │ └─┬ vinyl-assign@1.2.1
│ │ │ │ └── object-assign@4.0.1
│ │ │ └─┬ gulp-util@3.0.7
│ │ │ ├── array-uniq@1.0.2
│ │ │ ├── beeper@1.1.0
│ │ │ ├─┬ fancy-log@1.2.0
│ │ │ │ └── time-stamp@1.0.0
│ │ │ ├─┬ gulplog@1.0.0
│ │ │ │ └── glogg@1.0.0
│ │ │ ├─┬ has-gulplog@0.1.0
│ │ │ │ └── sparkles@1.0.0
│ │ │ ├── lodash._reescape@3.0.0
│ │ │ ├── lodash._reevaluate@3.0.0
│ │ │ ├── lodash._reinterpolate@3.0.0
│ │ │ ├─┬ lodash.template@3.6.2
│ │ │ │ ├── lodash._basecopy@3.0.1
│ │ │ │ ├── lodash._basetostring@3.0.1
│ │ │ │ ├── lodash._basevalues@3.0.0
│ │ │ │ ├── lodash._isiterateecall@3.0.9
│ │ │ │ ├─┬ lodash.escape@3.2.0
│ │ │ │ │ └── lodash._root@3.0.0
│ │ │ │ ├─┬ lodash.keys@3.1.2
│ │ │ │ │ ├── lodash._getnative@3.9.1
│ │ │ │ │ ├── lodash.isarguments@3.0.6
│ │ │ │ │ └── lodash.isarray@3.0.4
│ │ │ │ ├── lodash.restparam@3.6.1
│ │ │ │ └── lodash.templatesettings@3.1.1
│ │ │ ├─┬ multipipe@0.1.2
│ │ │ │ └─┬ duplexer2@0.0.2
│ │ │ │ └── readable-stream@1.1.13
│ │ │ ├── object-assign@3.0.0
│ │ │ └── vinyl@0.5.3
│ │ ├── gulp-rename@1.2.2
│ │ ├── is-url@1.2.1
│ │ ├── object-assign@4.0.1
│ │ ├── read-all-stream@3.1.0
│ │ ├─┬ readable-stream@2.0.5
│ │ │ ├── process-nextick-args@1.0.6
│ │ │ └── util-deprecate@1.0.2
│ │ ├── stream-combiner2@1.1.1
│ │ ├─┬ vinyl@1.1.1
│ │ │ ├── clone@1.0.2
│ │ │ ├── clone-stats@0.0.1
│ │ │ └── replace-ext@0.0.1
│ │ ├─┬ vinyl-fs@2.3.1
│ │ │ ├─┬ duplexify@3.4.2
│ │ │ │ └── end-of-stream@1.0.0
│ │ │ ├─┬ glob-stream@5.3.1
│ │ │ │ ├── extend@3.0.0
│ │ │ │ ├─┬ glob-parent@2.0.0
│ │ │ │ │ └── is-glob@2.0.1
│ │ │ │ ├─┬ micromatch@2.3.7
│ │ │ │ │ ├─┬ arr-diff@2.0.0
│ │ │ │ │ │ └── arr-flatten@1.0.1
│ │ │ │ │ ├── array-unique@0.2.1
│ │ │ │ │ ├─┬ braces@1.8.3
│ │ │ │ │ │ ├─┬ expand-range@1.8.1
│ │ │ │ │ │ │ └─┬ fill-range@2.2.3
│ │ │ │ │ │ │ ├── is-number@2.1.0
│ │ │ │ │ │ │ ├── isobject@2.0.0
│ │ │ │ │ │ │ ├── randomatic@1.1.5
│ │ │ │ │ │ │ └── repeat-string@1.5.2
│ │ │ │ │ │ ├── preserve@0.2.0
│ │ │ │ │ │ └── repeat-element@1.1.2
│ │ │ │ │ ├── expand-brackets@0.1.4
│ │ │ │ │ ├── extglob@0.3.2
│ │ │ │ │ ├── filename-regex@2.0.0
│ │ │ │ │ ├── is-extglob@1.0.0
│ │ │ │ │ ├─┬ kind-of@3.0.2
│ │ │ │ │ │ └── is-buffer@1.1.2
│ │ │ │ │ ├── normalize-path@2.0.1
│ │ │ │ │ ├─┬ object.omit@2.0.0
│ │ │ │ │ │ ├─┬ for-own@0.1.3
│ │ │ │ │ │ │ └── for-in@0.1.4
│ │ │ │ │ │ └── is-extendable@0.1.1
│ │ │ │ │ ├─┬ parse-glob@3.0.4
│ │ │ │ │ │ ├── glob-base@0.3.0
│ │ │ │ │ │ └── is-dotfile@1.0.2
│ │ │ │ │ └─┬ regex-cache@0.4.2
│ │ │ │ │ ├── is-equal-shallow@0.1.3
│ │ │ │ │ └── is-primitive@2.0.0
│ │ │ │ ├── ordered-read-streams@0.3.0
│ │ │ │ ├─┬ through2@0.6.5
│ │ │ │ │ └── readable-stream@1.0.33
│ │ │ │ ├─┬ to-absolute-glob@0.1.1
│ │ │ │ │ └── extend-shallow@2.0.1
│ │ │ │ └── unique-stream@2.2.0
│ │ │ ├── graceful-fs@4.1.3
│ │ │ ├─┬ gulp-sourcemaps@1.6.0
│ │ │ │ └── convert-source-map@1.1.3
│ │ │ ├── is-valid-glob@0.3.0
│ │ │ ├── lazystream@1.0.0
│ │ │ ├── merge-stream@1.0.0
│ │ │ ├── object-assign@4.0.1
│ │ │ ├─┬ strip-bom@2.0.0
│ │ │ │ └── is-utf8@0.2.1
│ │ │ ├─┬ strip-bom-stream@1.0.0
│ │ │ │ └── first-chunk-stream@1.0.0
│ │ │ └── through2-filter@2.0.0
│ │ └─┬ ware@1.3.0
│ │ └─┬ wrap-fn@0.1.5
│ │ └── co@3.1.0
│ ├─┬ findup-sync@0.2.1
│ │ └─┬ glob@4.3.5
│ │ └── minimatch@2.0.10
│ ├─┬ github-username@2.1.0
│ │ └─┬ gh-got@2.4.0
│ │ └── object-assign@4.0.1
│ ├─┬ glob@5.0.15
│ │ └── minimatch@3.0.0
│ ├─┬ gruntfile-editor@1.1.0
│ │ └─┬ ast-query@1.1.0
│ │ ├─┬ escodegen@1.8.0
│ │ │ ├── estraverse@1.9.3
│ │ │ ├── esutils@2.0.2
│ │ │ ├─┬ optionator@0.8.1
│ │ │ │ ├── deep-is@0.1.3
│ │ │ │ ├── fast-levenshtein@1.1.3
│ │ │ │ ├── levn@0.3.0
│ │ │ │ ├── prelude-ls@1.1.2
│ │ │ │ ├── type-check@0.3.2
│ │ │ │ └── wordwrap@1.0.0
│ │ │ └─┬ source-map@0.2.0
│ │ │ └── amdefine@1.0.0
│ │ ├── esprima@2.7.2
│ │ └── traverse@0.6.6
│ ├─┬ html-wiring@1.2.0
│ │ ├─┬ cheerio@0.19.0
│ │ │ ├─┬ css-select@1.0.0
│ │ │ │ ├── boolbase@1.0.0
│ │ │ │ ├── css-what@1.0.0
│ │ │ │ ├── domutils@1.4.3
│ │ │ │ └── nth-check@1.0.1
│ │ │ ├─┬ dom-serializer@0.1.0
│ │ │ │ └── domelementtype@1.1.3
│ │ │ ├── entities@1.1.1
│ │ │ └─┬ htmlparser2@3.8.3
│ │ │ ├── domelementtype@1.3.0
│ │ │ ├── domhandler@2.3.0
│ │ │ ├── domutils@1.5.1
│ │ │ ├── entities@1.0.0
│ │ │ └── readable-stream@1.1.13
│ │ └── detect-newline@1.0.3
│ ├─┬ inquirer@0.8.5
│ │ ├── ansi-regex@1.1.1
│ │ ├── cli-width@1.1.1
│ │ ├── figures@1.4.0
│ │ ├─┬ readline2@0.1.1
│ │ │ ├── mute-stream@0.0.4
│ │ │ └─┬ strip-ansi@2.0.1
│ │ │ └── ansi-regex@1.1.1
│ │ ├── rx@2.5.3
│ │ └── through@2.3.8
│ ├─┬ istextorbinary@1.0.2
│ │ ├── binaryextensions@1.0.0
│ │ └── textextensions@1.0.1
│ ├── lodash@3.10.1
│ ├─┬ mem-fs-editor@2.1.0
│ │ ├── commondir@1.0.1
│ │ ├── deep-extend@0.4.1
│ │ ├── ejs@2.4.1
│ │ ├── glob@6.0.4
│ │ ├─┬ globby@4.0.0
│ │ │ ├── array-union@1.0.1
│ │ │ ├── arrify@1.0.1
│ │ │ ├── glob@6.0.4
│ │ │ ├── object-assign@4.0.1
│ │ │ └── pify@2.3.0
│ │ └─┬ multimatch@2.1.0
│ │ └── array-differ@1.0.0
│ ├── mime@1.3.4
│ ├─┬ nopt@3.0.6
│ │ └── abbrev@1.0.7
│ ├── path-exists@1.0.0
│ ├── path-is-absolute@1.0.0
│ ├── pretty-bytes@2.0.1
│ ├── read-chunk@1.0.1
│ ├─┬ rimraf@2.5.2
│ │ └── glob@7.0.0
│ ├── run-async@0.1.0
│ ├── shelljs@0.5.3
│ ├─┬ sinon@1.17.3
│ │ ├── formatio@1.1.1
│ │ ├── lolex@1.3.2
│ │ ├── samsam@1.1.2
│ │ └── util@0.10.3
│ ├── text-table@0.2.0
│ ├── through2@2.0.1
│ ├─┬ user-home@2.0.0
│ │ └── os-homedir@1.0.1
│ ├── xdg-basedir@2.0.0
│ ├── yeoman-assert@2.1.1
│ ├─┬ yeoman-environment@1.5.2
│ │ ├── grouped-queue@0.3.2
│ │ ├─┬ inquirer@0.11.4
│ │ │ ├── ansi-escapes@1.1.1
│ │ │ ├─┬ cli-cursor@1.0.2
│ │ │ │ └─┬ restore-cursor@1.0.1
│ │ │ │ └── exit-hook@1.1.1
│ │ │ ├─┬ readline2@1.0.1
│ │ │ │ └── mute-stream@0.0.5
│ │ │ └── rx-lite@3.1.2
│ │ ├── log-symbols@1.0.2
│ │ ├─┬ mem-fs@1.1.2
│ │ │ └── vinyl-file@1.3.0
│ │ └── untildify@2.1.0
│ └── yeoman-welcome@1.0.1
└─┬ yosay@1.1.0
├── ansi-regex@2.0.0
├── pad-component@0.0.1
├─┬ repeating@2.0.0
│ └── is-finite@1.0.1
├─┬ string-width@1.0.1
│ ├── code-point-at@1.0.0
│ └── is-fullwidth-code-point@1.0.0
├── taketalk@1.0.0
└── word-wrap@1.1.0
will-i-am:~ William$
This command caused the above response : npm install -g generator-webapp
Question : Where will you find this code ?
Answer : Mine is here : /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/
The last time I ran the install command, it looks like this:
will-i-am:~ William$ npm install -g generator-webapp
npm WARN deprecated lodash@2.4.2: lodash@ < 3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0.
/Users/William/.nvm/versions/node/v5.6.0/lib
└── generator-webapp@1.1.2
will-i-am:~ William$
Now that you have your project installed ..
Start it with:
yo webapp
TODO: 20160214 : THIS IS NOW NOT WORKING, IT WAS BEFORE, WHAT CHANGED ?
Answer to why it was not working: while I was writing these instructions,
gulp
changed their generator name and commands to run it, as explained
from generator-gulp-webapp
to generator-webapp
.
Proof it was working :
will-i-am:~ William$ yo webapp
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== Yes
_-----_
| | .--------------------------.
|--(o)--| | 'Allo 'allo! Out of the |
`---------´ | box I include HTML5 |
( _´U`_ ) | Boilerplate, and a |
/___A___\ | Gruntfile to build your |
| ~ | | app. |
__'.___.'__ '--------------------------'
´ ` |° ´ Y `
? What more would you like? (Press < space > to select)
❯◉ Sass
◉ Bootstrap
◉ Modernizr
We choose all three, them pressed Return.
Resulting in this showing:
? Would you like to include jQuery? (Y/n)
? Would you like to include jQuery? Yes
create bower.json
conflict package.json
? Overwrite package.json? (Ynaxdh)
Answering with the letter
d
will show you the differences.
Seeing the addition to be made, I chose Y, for Yes.
Now, let's update brew:
will-i-am:~ William$ brew update
Checking out files: 100% (220/220), done.
Updated Homebrew from 468f0d9 to 6322c47.
Updated 2 taps (homebrew/dupes, homebrew/versions).
==> New Formulae
assh homebrew/versions/elasticsearch21
datetime-fortran homebrew/versions/kibana43
dlite homebrew/versions/logstash21
gitg homebrew/versions/subversion18
hledger hyperscan
homebrew/versions/cassandra21 nuxeo
==> Updated Formulae
ammonite-repl libwebsockets
atk libzip
botan logstash
carthage macvim
chromaprint mercurial
chromedriver mesos
cpanminus mm-common
cromwell monit
cvs msmtp
darcs mysql ✔
darkhttpd nettle
dependency-check node-build
dmd nspr
dnscrypt-proxy nss
dnstwist ntl
docker passenger
docker-compose passpie
docker-machine pdns
docker-swarm platypus
dropbear pod2man
dyld-headers proftpd
elasticsearch puddletag
elixir purescript
etcd pyenv
ffmpeg pyenv-virtualenv
flow rakudo-star
fontconfig rbenv-aliases
freetype redpen
fstar reposurgeon
fwup rethinkdb
fzf saltstack
gd sbcl
git ✔ shadowsocks-libev
git-credential-manager simple-tiles
git-lfs skinny
gnuradio snort
gnutls socat
goffice sonar-runner
h2o sourcekitten
hadoop src
homebrew/dupes/rsync swiftlint
homebrew/versions/elasticsearch17 sysdig
htmlcleaner tailor
icmake tbb
imagemagick telegraf
influxdb terraform
jenkins tippecanoe
jetty unrar
kapacitor vala
kibana valabind
kotlin vert.x
ldc vim
leiningen watchman
libbluray wavpack
libgit2-glib wildfly-as
libgraphqlparser wires
libgsf x265
libtermkey yaml-cpp
libtins youtube-dl
libuv zimg
libvoikko
==> Deleted Formulae
homebrew/versions/elasticsearch20 homebrew/versions/kibana42
Now we run:
brew doctor
will-i-am:~ William$ brew doctor
Your system is ready to brew.
Now that we have our work suite installed,
where do we do the work of building the apps ?
For USING gulp
's generator-webapp
, we created the yo-stellar/ directory.
/Users/William
/Users/William/yo-stellar
TODO: 2016021 : where are the gulp
steps, bring them in here
I have not begun tests yet.
will-i-am:~ William$ npm list
nvm@0.30.2 /Users/William
├── bower@1.7.7 extraneous
├── grunt@0.4.5 extraneous
├── lodash@4.3.0
├── observatory@1.0.0 extraneous
├─┬ stellar-sdk@0.4.1
│ ├── axios@0.7.0
│ ├── bluebird@2.10.2
│ ├── es6-promise@3.0.2
│ ├── event-source-polyfill@0.0.6
│ ├─┬ eventsource@0.1.6
│ │ └─┬ original@1.0.0
│ │ └─┬ url-parse@1.0.5
│ │ ├── querystringify@0.0.3
│ │ └── requires-port@1.0.0
│ ├─┬ jsdoc@3.5.0-dev (git://github.com/jsdoc3/jsdoc.git#3dbb94f157290e8a0cbc79cb3580130e8e2c4534)
│ │ ├── async@1.4.2
│ │ ├── bluebird@2.9.34
│ │ ├─┬ catharsis@0.8.7
│ │ │ └─┬ underscore-contrib@0.3.0
│ │ │ └── underscore@1.6.0
│ │ ├── escape-string-regexp@1.0.4
│ │ ├── espree@2.2.5
│ │ ├── js2xmlparser@1.0.0
│ │ ├── marked@0.3.5
│ │ ├─┬ requizzle@0.2.1
│ │ │ └── underscore@1.6.0
│ │ ├── strip-json-comments@1.0.4
│ │ ├── taffydb@2.6.2
│ │ ├── underscore@1.8.3
│ │ └── wrench@1.5.8
│ ├── lodash@3.10.1
│ ├─┬ stellar-base@0.5.1
│ │ ├─┬ babel-runtime@5.8.24
│ │ │ └── core-js@1.1.4
│ │ ├── base32.js@0.1.0
│ │ ├── bignumber.js@2.0.7
│ │ ├── crc@3.3.0
│ │ ├─┬ ed25519@0.0.4
│ │ │ ├── bindings@1.2.1
│ │ │ └── nan@2.0.9
│ │ ├─┬ js-xdr@0.0.12
│ │ │ ├─┬ babel-runtime@4.7.16
│ │ │ │ └── core-js@0.6.1
│ │ │ ├── cursor@0.1.5
│ │ │ ├── long@2.4.0
│ │ │ └── sequencify@0.0.7
│ │ ├── lodash@3.10.1
│ │ ├─┬ sha.js@2.4.4
│ │ │ └── inherits@2.0.1
│ │ └── tweetnacl@0.13.2
│ ├─┬ superagent@1.7.2
│ │ ├── component-emitter@1.2.0
│ │ ├── cookiejar@2.0.6
│ │ ├─┬ debug@2.2.0
│ │ │ └── ms@0.7.1
│ │ ├── extend@3.0.0
│ │ ├─┬ form-data@0.2.0
│ │ │ ├── async@0.9.2
│ │ │ ├─┬ combined-stream@0.0.7
│ │ │ │ └── delayed-stream@0.0.5
│ │ │ └─┬ mime-types@2.0.14
│ │ │ └── mime-db@1.12.0
│ │ ├── formidable@1.0.17
│ │ ├── methods@1.1.2
│ │ ├── mime@1.3.4
│ │ ├── qs@2.3.3
│ │ ├─┬ readable-stream@1.0.27-1
│ │ │ ├── core-util-is@1.0.2
│ │ │ ├── inherits@2.0.1
│ │ │ ├── isarray@0.0.1
│ │ │ └── string_decoder@0.10.31
│ │ └── reduce-component@1.0.1
│ ├── toml@2.3.0
│ └── URIjs@1.16.1
└── yo@1.6.0 extraneous
npm ERR! extraneous: bower@1.7.7 /Users/William/node_modules/bower
npm ERR! extraneous: grunt@0.4.5 /Users/William/node_modules/grunt
npm ERR! extraneous: observatory@1.0.0 /Users/William/node_modules/observatory
npm ERR! extraneous: yo@1.6.0 /Users/William/node_modules/yo
will-i-am:~ William$
end of npm list
TODO: Two things to further research and resolve:
-
URIjs@1.16.1 is deprecated and we need to change it to urijs@1.16.1
QUESTION: 20160213 : How do we change this ?
Answer : 2016021? : -
What do these, npm ERR! extraneous: errors mean ?
QUESTION: 20160213 : stated above
Answer : 2016021? :
a JSON to CSS Resource
JSON to StyleSheet compiler :
JSS is a higher level abstraction over CSS.
It allows you to describe styles in JSON and leverage the power
of JavaScript. It generates style sheets at runtime or server-side
and solves a number of CSS issues. You can use JSS with React,
or with any other js library. It is small, modular and extensible via
plugins API.
JSS Documentation
Index:Solved CSS issues
JSS vs. ... ?
JSON API
JavaScript API
Plugins
Server-side rendering
Performance
Now that I have this system installed, and am nearly done with these
instructions of how to do these installations, as I learn how to work
with it, I will add resources below the JSS above.
- Further research on these two commands, begin with
nvm help
:
nvm deactivate
: Undo effects ofnvm
on current shell
nvm unload
: Unloadnvm
from shell : what is difference
First problem is we have two definings of nvm deactivate
:
From nvm help
I see this:
nvm deactivate
: To restore your PATH, you can deactivate it.
and .. from https://github.com/creationix/nvmnvm deactivate
: Undo effects ofnvm
on current shell
CAUTION : While visiting the above link, do not forget we install with
brew
notnvm
.
You can see what the nvm deactivate
command does by running echo $path
BEFORE
and AFTER you run nvm deactivate
. nvm
is indeed removed from the PATH, and so
all nvm
commands become useless. Only solution is to open a new Terminal. We have
our ~/.nvmrc
set with 5.6.0
and so opening a new Terminal sets nvm
usage.
Otherwise, simply type nvm use 5.6
.
Second problem is nvm unload
makes your Terminal nvm
commands useless.
nvm unload
: Unloadnvm
from shell
So I dived in to see what happened on both commands:
will-i-am:nvm William$ nvm deactivate
/Users/William/.nvm/*/bin removed from $PATH
/Users/William/.nvm/*/share/man removed from $MANPATH
will-i-am:nvm William$ nvm --version
0.30.1
will-i-am:nvm William$ nvm version
none
will-i-am:nvm William$ nvm use 5
Now using node v5.6.0 (npm v3.7.2)
will-i-am:nvm William$ nvm --version
0.30.1
will-i-am:nvm William$ nvm version
v5.6.0
will-i-am:nvm William$
So, we can see nvm deactivate
is a harmless command and
easily reactivated with the nvm use <version>
command.
Not so for nvm unload
:
will-i-am:nvm William$ nvm unload
will-i-am:nvm William$ nvm --version
-bash: nvm: command not found
will-i-am:nvm William$ nvm version
-bash: nvm: command not found
will-i-am:nvm William$ nvm use 5
-bash: nvm: command not found
will-i-am:nvm William$
Uh oh. Let's see ..
nvm unload
unloadsnvm
from shell.
Okay .. do we have annvm reload
command, or .. do I open new Terminal ?
Time fornvm --help
, which of course does not work, but I ran the command
prior, and sure enough, my Terminal shows the results and there is noreload
.
Okay .. I open a new Terminal.
This has been fun, now the real study / work begins..
Authored by This Gister
Address of Rails-app-steps-to-establish-ruby-stellar-sdk.md is:
https://gist.github.com/kathyonu/c53943026d3e1ef0b129
unplacedtoday
will-i-am:~ William$ npm install --global yo generator-gulp-webapp
npm WARN deprecated generator-gulp-webapp@1.1.1: Renamed generator-gulp-webapp to generator-webapp. Install the new version by running: npm install generator-webapp@^2.0.0
npm WARN deprecated graceful-fs@2.0.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated npmconf@2.1.2: this package has been reintegrated into npm and is now out of date with respect to npm
npm WARN deprecated lodash@2.4.2: lodash@ < 3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0
/Users/William/.nvm/versions/node/v5.6.0/bin/yo -> /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/yo/lib/cli.js
> spawn-sync@1.0.15 postinstall /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/generator-gulp-webapp/node_modules/spawn-sync
> node postinstall
> yo@1.6.0 postinstall /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/yo
> yodoctor
Yeoman Doctor
Running sanity checks on your system
✔ Global configuration file is valid
✔ NODE_PATH matches the npm root
✔ Node.js version
✔ No .bowerrc file in home directory
✔ No .yo-rc.json file in home directory
✔ npm version
Everything looks all right!
/Users/William/.nvm/versions/node/v5.6.0/lib
├─┬ generator-gulp-webapp@1.1.1
│ ├─┬ chalk@1.1.1
* * SEVERELY TRUNCATED * *
└─┬ yosay@1.1.0
├── minimist@1.2.0
├── pad-component@0.0.1
├─┬ taketalk@1.0.0
│ ├── get-stdin@4.0.1
│ └── minimist@1.2.0
└── word-wrap@1.1.0
will-i-am:~ William$ npm upgrade lodash@^4.0.0
Answer is to run: npm rm --global yo generator-gulp-webapp
and
then run the new command, npm install --global yo generator-webapp
.
npm rm --global yo generator-gulp-webapp
npm install --global yo generator-webapp
The instructions now continue with:
https://www.npmjs.com/package/yeoman-assert http://yeoman.io/generator/assert.html broken Also, helpers assertions methods are now exposed on the yeoman.assert namespace.
Questions ? Run:
npm home yeoman-assert
Now you can scaffold your very own web app:
$ mkdir my-webapp
$ cd my-webapp
$ yo webapp
To start developing, run:
$ gulp serve
RESULTS OF THE ABOVE COMMANDS:
will-i-am:~ William$ npm rm --global yo generator-gulp-webapp
- abbrev@1.0.7 node_modules/generator-gulp-webapp/node_modules/abbrev
- amdefine@1.0.0 node_modules/generator-gulp-webapp/node_modules/amdefine
- ansi-escapes@1.1.1 node_modules/generator-gulp-webapp/node_modules/ansi-escapes
* * severely truncated * *
- yo@1.6.0 node_modules/yo
will-i-am:~ William$
The npm rm --global yo generator-gulp-webapp
just removed the old named material.
Now we install the newly named material:
npm install --global yo generator-webapp
npm install --save --save-exact cool-ascii-faces
will-i-am:~ William$ npm install --global yo generator-webapp
npm WARN deprecated graceful-fs@2.0.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated npmconf@2.1.2: this package has been reintegrated into npm and is now out of date with respect to npm
/Users/William/.nvm/versions/node/v5.6.0/bin/yo -> /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/yo/lib/cli.js
> yo@1.6.0 postinstall /Users/William/.nvm/versions/node/v5.6.0/lib/node_modules/yo
> yodoctor
Yeoman Doctor
Running sanity checks on your system
✔ Global configuration file is valid
✔ NODE_PATH matches the npm root
✔ Node.js version
✔ No .bowerrc file in home directory
✔ No .yo-rc.json file in home directory
✔ npm version
Everything looks all right!
/Users/William/.nvm/versions/node/v5.6.0/lib
├─┬ generator-webapp@2.0.0
│ ├─┬ chalk@1.1.1
│ │ ├── ansi-styles@2.1.0
* * truncated * *
│ │ └─┬ yeoman-environment@1.5.2
* * truncated * *
│ │ │ └── vinyl-file@1.3.0
│ │ └── untildify@2.1.0
│ └─┬ yosay@1.1.0
* * truncated * *
│ └── word-wrap@1.1.0
└─┬ yo@1.6.0
├── async@1.5.2
* * severely truncated * *
│ └── untildify@2.1.0
└─┬ yosay@1.1.0
├── minimist@1.2.0
├── pad-component@0.0.1
├─┬ taketalk@1.0.0
│ ├── get-stdin@4.0.1
│ └── minimist@1.2.0
└── word-wrap@1.1.0
will-i-am:~ William$
The npm install --global yo generator-webapp
command just installed the above tools.
Instructions continue with:
Now you can scaffold your very own web app:
$ mkdir my-webapp
$ cd my-webapp
$ yo webapp
To start developing, run:
$ gulp serve
There is more to know to Getting Started with the newly named yeoman/generator-webapp.
End of name change from generator gulp webapp
to generator-webapp
.
So, we are ready to scaffold our very own web app ..
Here we go .. I run the three commands:
mkdir yo-stellar
cd yo-stellar
yo webapp
And, voila ..
Last login: Tue Feb 16 20:57:38 on ttys024
will-i-am:~ William$ nvm version
v5.6.0
will-i-am:~ William$ mkdir yo-stellar
will-i-am:~ William$ cd yo-stellar/
will-i-am:yo-stellar William$ yo webapp
_-----_
| | .--------------------------.
|--(o)--| | 'Allo 'allo! Out of the |
`---------´ | box I include HTML5 |
( _´U`_ ) | Boilerplate, jQuery, and |
/___A___\ | a gulpfile to build your |
| ~ | | app. |
__'.___.'__ '--------------------------'
´ ` |° ´ Y `
? What more would you like? (Press < space > to select)
❯◉ Sass
◉ Bootstrap
◉ Modernizr
The instructions do not tell you, if you do not want Sass,
use your down arrow to arrive at Bootstrap, etc.
What or which of the three do I choose ?
I chose to choose all three.
I press my Return button.
As I was the build taking place, I see we are in for a slew of deprecated notices,
and other notices. Okay, this is serious ,the install is continuing and continuing and
many notices, and many error notice lines and, it has installed, and is done.
This result is something that should not be truncated by me, so you too can see:
Last login: Tue Feb 16 20:57:38 on ttys024
will-i-am:~ William$ nvm version
v5.6.0
will-i-am:~ William$ mkdir yo-stellar
will-i-am:~ William$ cd yo-stellar/
will-i-am:yo-stellar William$ yo webapp
_-----_
| | .--------------------------.
|--(o)--| | 'Allo 'allo! Out of the |
`---------´ | box I include HTML5 |
( _´U`_ ) | Boilerplate, jQuery, and |
/___A___\ | a gulpfile to build your |
| ~ | | app. |
__'.___.'__ '--------------------------'
´ ` |° ´ Y `
? What more would you like? (Press < space > to select)
❯◉ Sass
◉ Bootstrap
◉ Modernizr
I press return button, and off it goes after it shows my choices:
? What more would you like? Sass, Bootstrap, Modernizr
create bower.json
create package.json
create gulpfile.babel.js
create .babelrc
create .gitignore
create .gitattributes
create .bowerrc
create .editorconfig
create app/favicon.ico
create app/apple-touch-icon.png
create app/robots.txt
create app/styles/main.scss
create app/scripts/main.js
create app/index.html
create test/spec/test.js
create test/index.html
I'm all done. Running npm install & bower install for you to install the required dependencies. If this fails, try running the command yourself.
npm WARN deprecated graceful-fs@3.0.8: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated lodash@1.0.2: lodash@ < 3 .0.0 is no longer maintained. Upgrade to lodash@^4.0.0.
npm WARN deprecated graceful-fs@1.2.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated npmconf@2.1.2: this package has been reintegrated into npm and is now out of date with respect to npm
npm WARN deprecated lodash.padleft@3.1.1: This package has been renamed. Use lodash.padstart@^4.0.0.
npm WARN deprecated lodash.padright@3.1.1: This package has been renamed. Use lodash.padend@^4.0.0.
npm WARN deprecated graceful-fs@2.0.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated lodash@2.4.2: lodash@ < 3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0
npm WARN prefer global node-gyp@3.3.0 should be installed with -g
> fsevents@1.0.7 install /Users/William/yo-stellar/node_modules/fsevents
> node-pre-gyp install --fallback-to-build
[fsevents] Success: "/Users/William/yo-stellar/node_modules/fsevents/lib/binding/Release/node-v47-darwin-x64/fse.node" is installed via remote
> bufferutil@1.2.1 install /Users/William/yo-stellar/node_modules/bufferutil
> node-gyp rebuild
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/bufferutil.node
> utf-8-validate@1.2.1 install /Users/William/yo-stellar/node_modules/utf-8-validate
> node-gyp rebuild
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/validation.node
> node-sass@3.4.2 install /Users/William/yo-stellar/node_modules/node-sass
> node scripts/install.js
Binary downloaded and installed at /Users/William/yo-stellar/node_modules/node-sass/vendor/darwin-x64-47/binding.node
> spawn-sync@1.0.15 postinstall /Users/William/yo-stellar/node_modules/spawn-sync
> node postinstall
> node-sass@3.4.2 postinstall /Users/William/yo-stellar/node_modules/node-sass
> node scripts/build.js
` /Users/William/yo-stellar/node_modules/node-sass/vendor/darwin-x64-47/binding.node ` exists.
testing binary.
Binary is fine; exiting.
> optipng-bin@3.1.0 postinstall /Users/William/yo-stellar/node_modules/optipng-bin
> node lib/install.js
✔ optipng pre-build test passed successfully
> jpegtran-bin@3.0.6 postinstall /Users/William/yo-stellar/node_modules/jpegtran-bin
> node lib/install.js
✔ jpegtran pre-build test passed successfully
> gifsicle@3.0.3 postinstall /Users/William/yo-stellar/node_modules/gifsicle
> node lib/install.js
✔ gifsicle pre-build test passed successfully
/Users/William/yo-stellar
├─┬ babel-core@6.5.2
│ ├─┬ babel-code-frame@6.5.0
│ │ ├── esutils@2.0.2
│ │ ├── js-tokens@1.0.2
│ │ ├─┬ line-numbers@0.2.0
│ │ │ └── left-pad@0.0.3
│ │ └─┬ repeating@1.1.3
│ │ └── is-finite@1.0.1
│ ├─┬ babel-generator@6.5.0
│ │ ├── detect-indent@3.0.1
│ │ ├── is-integer@1.0.6
│ │ └── trim-right@1.0.1
│ ├── babel-helpers@6.5.0
│ ├── babel-messages@6.5.0
│ ├─┬ babel-register@6.5.2
│ │ ├── core-js@1.2.6
│ │ ├─┬ home-or-tmp@1.0.0
│ │ │ └── os-tmpdir@1.0.1
│ │ ├─┬ mkdirp@0.5.1
│ │ │ └── minimist@0.0.8
│ │ └─┬ source-map-support@0.2.10
│ │ └─┬ source-map@0.1.32
│ │ └── amdefine@1.0.0
│ ├── babel-runtime@5.8.35
│ ├── babel-template@6.5.0
│ ├─┬ babel-traverse@6.5.0
│ │ ├── globals@8.18.0
│ │ └─┬ invariant@2.2.0
│ │ └── loose-envify@1.1.0
│ ├─┬ babel-types@6.5.2
│ │ └── to-fast-properties@1.0.1
│ ├── babylon@6.5.2
│ ├── convert-source-map@1.1.3
│ ├─┬ debug@2.2.0
│ │ └── ms@0.7.1
│ ├── json5@0.4.0
│ ├── lodash@3.10.1
│ ├─┬ minimatch@2.0.10
│ │ └─┬ brace-expansion@1.1.3
│ │ ├── balanced-match@0.3.0
│ │ └── concat-map@0.0.1
│ ├── path-exists@1.0.0
│ ├── path-is-absolute@1.0.0
│ ├── private@0.1.6
│ ├── shebang-regex@1.0.0
│ ├── slash@1.0.0
│ └── source-map@0.5.3
├─┬ babel-preset-es2015@6.5.0
│ ├── babel-plugin-check-es2015-constants@6.5.0
│ ├── babel-plugin-transform-es2015-arrow-functions@6.5.2
│ ├── babel-plugin-transform-es2015-block-scoped-functions@6.5.0
│ ├── babel-plugin-transform-es2015-block-scoping@6.5.0
│ ├─┬ babel-plugin-transform-es2015-classes@6.5.2
│ │ ├── babel-helper-define-map@6.5.0
│ │ ├── babel-helper-function-name@6.5.0
│ │ ├── babel-helper-optimise-call-expression@6.5.0
│ │ └── babel-helper-replace-supers@6.5.0
│ ├── babel-plugin-transform-es2015-computed-properties@6.5.2
│ ├── babel-plugin-transform-es2015-destructuring@6.5.0
│ ├── babel-plugin-transform-es2015-for-of@6.5.2
│ ├── babel-plugin-transform-es2015-function-name@6.5.0
│ ├── babel-plugin-transform-es2015-literals@6.5.0
│ ├─┬ babel-plugin-transform-es2015-modules-commonjs@6.5.2
│ │ └── babel-plugin-transform-strict-mode@6.5.2
│ ├── babel-plugin-transform-es2015-object-super@6.5.0
│ ├─┬ babel-plugin-transform-es2015-parameters@6.5.0
│ │ ├─┬ babel-helper-call-delegate@6.5.0
│ │ │ └── babel-helper-hoist-variables@6.5.0
│ │ └── babel-helper-get-function-arity@6.5.0
│ ├── babel-plugin-transform-es2015-shorthand-properties@6.5.0
│ ├── babel-plugin-transform-es2015-spread@6.5.2
│ ├─┬ babel-plugin-transform-es2015-sticky-regex@6.5.0
│ │ └── babel-helper-regex@6.5.0
│ ├── babel-plugin-transform-es2015-template-literals@6.5.2
│ ├── babel-plugin-transform-es2015-typeof-symbol@6.5.0
│ ├─┬ babel-plugin-transform-es2015-unicode-regex@6.5.0
│ │ └─┬ regexpu-core@1.0.0
│ │ ├── regenerate@1.2.1
│ │ ├── regjsgen@0.2.0
│ │ └─┬ regjsparser@0.1.5
│ │ └── jsesc@0.5.0
│ └─┬ babel-plugin-transform-regenerator@6.5.2
│ └── babel-plugin-syntax-async-functions@6.5.0
├─┬ browser-sync@2.11.1
│ ├── async-each-series@0.1.1
│ ├─┬ browser-sync-client@2.4.1
│ │ ├── etag@1.7.0
│ │ └── fresh@0.3.0
│ ├─┬ browser-sync-ui@0.5.18
│ │ ├── connect-history-api-fallback@1.1.0
│ │ ├─┬ stream-throttle@0.1.3
│ │ │ ├─┬ commander@2.9.0
│ │ │ │ └── graceful-readlink@1.0.1
│ │ │ └── limiter@1.1.0
│ │ └─┬ weinre@2.0.0-pre-I0Z7U9OV
│ │ ├─┬ express@2.5.11
│ │ │ ├─┬ connect@1.9.2
│ │ │ │ └── formidable@1.0.17
│ │ │ ├── mime@1.2.4
│ │ │ ├── mkdirp@0.3.0
│ │ │ └── qs@0.4.2
│ │ ├─┬ nopt@3.0.6
│ │ │ └── abbrev@1.0.7
│ │ └── underscore@1.7.0
│ ├── bs-recipes@1.1.0
│ ├─┬ chokidar@1.4.1
│ │ ├─┬ anymatch@1.3.0
│ │ │ └── arrify@1.0.1
│ │ ├── async-each@0.1.6
│ │ ├─┬ fsevents@1.0.7
│ │ │ └─┬ node-pre-gyp@0.6.19
│ │ │ ├─┬ mkdirp@0.5.1
│ │ │ │ └── minimist@0.0.8
│ │ │ ├─┬ nopt@3.0.6
│ │ │ │ └── abbrev@1.0.7
│ │ │ ├─┬ npmlog@2.0.0
│ │ │ │ ├── ansi@0.3.0
│ │ │ │ ├─┬ are-we-there-yet@1.0.5
│ │ │ │ │ └── delegates@0.1.0
│ │ │ │ └─┬ gauge@1.2.2
│ │ │ │ ├── has-unicode@1.0.1
│ │ │ │ ├─┬ lodash.pad@3.1.1
│ │ │ │ │ ├── lodash._basetostring@3.0.1
│ │ │ │ │ └─┬ lodash._createpadding@3.6.1
│ │ │ │ │ └── lodash.repeat@3.0.1
│ │ │ │ ├── lodash.padleft@3.1.1
│ │ │ │ └── lodash.padright@3.1.1
│ │ │ ├─┬ rc@1.1.6
│ │ │ │ ├── deep-extend@0.4.0
│ │ │ │ ├── ini@1.3.4
│ │ │ │ ├── minimist@1.2.0
│ │ │ │ └── strip-json-comments@1.0.4
│ │ │ ├─┬ request@2.67.0
│ │ │ │ ├── aws-sign2@0.6.0
│ │ │ │ ├── bl@1.0.0
│ │ │ │ ├── caseless@0.11.0
│ │ │ │ ├─┬ combined-stream@1.0.5
│ │ │ │ │ └── delayed-stream@1.0.0
│ │ │ │ ├── extend@3.0.0
│ │ │ │ ├── forever-agent@0.6.1
│ │ │ │ ├─┬ form-data@1.0.0-rc3
│ │ │ │ │ └── async@1.5.1
│ │ │ │ ├─┬ har-validator@2.0.3
│ │ │ │ │ ├─┬ chalk@1.1.1
│ │ │ │ │ │ ├── ansi-styles@2.1.0
│ │ │ │ │ │ ├── escape-string-regexp@1.0.4
│ │ │ │ │ │ ├─┬ has-ansi@2.0.0
│ │ │ │ │ │ │ └── ansi-regex@2.0.0
│ │ │ │ │ │ ├── strip-ansi@3.0.0
│ │ │ │ │ │ └── supports-color@2.0.0
│ │ │ │ │ ├─┬ commander@2.9.0
│ │ │ │ │ │ └── graceful-readlink@1.0.1
│ │ │ │ │ ├─┬ is-my-json-valid@2.12.3
│ │ │ │ │ │ ├── generate-function@2.0.0
│ │ │ │ │ │ ├─┬ generate-object-property@1.2.0
│ │ │ │ │ │ │ └── is-property@1.0.2
│ │ │ │ │ │ ├── jsonpointer@2.0.0
│ │ │ │ │ │ └── xtend@4.0.1
│ │ │ │ │ └─┬ pinkie-promise@2.0.0
│ │ │ │ │ └── pinkie@2.0.1
│ │ │ │ ├─┬ hawk@3.1.2
│ │ │ │ │ ├── boom@2.10.1
│ │ │ │ │ ├── cryptiles@2.0.5
│ │ │ │ │ ├── hoek@2.16.3
│ │ │ │ │ └── sntp@1.0.9
│ │ │ │ ├─┬ http-signature@1.1.0
│ │ │ │ │ ├── assert-plus@0.1.5
│ │ │ │ │ ├─┬ jsprim@1.2.2
│ │ │ │ │ │ ├── extsprintf@1.0.2
│ │ │ │ │ │ ├── json-schema@0.2.2
│ │ │ │ │ │ └── verror@1.3.6
│ │ │ │ │ └─┬ sshpk@1.7.2
│ │ │ │ │ ├── asn1@0.2.3
│ │ │ │ │ ├── assert-plus@0.2.0
│ │ │ │ │ ├── dashdash@1.11.0
│ │ │ │ │ ├── ecc-jsbn@0.1.1
│ │ │ │ │ ├── jodid25519@1.0.2
│ │ │ │ │ ├── jsbn@0.1.0
│ │ │ │ │ └── tweetnacl@0.13.2
│ │ │ │ ├── is-typedarray@1.0.0
│ │ │ │ ├── isstream@0.1.2
│ │ │ │ ├── json-stringify-safe@5.0.1
│ │ │ │ ├─┬ mime-types@2.1.9
│ │ │ │ │ └── mime-db@1.21.0
│ │ │ │ ├── node-uuid@1.4.7
│ │ │ │ ├── oauth-sign@0.8.0
│ │ │ │ ├── qs@5.2.0
│ │ │ │ ├── stringstream@0.0.5
│ │ │ │ ├── tough-cookie@2.2.1
│ │ │ │ └── tunnel-agent@0.4.2
│ │ │ ├─┬ rimraf@2.5.0
│ │ │ │ └─┬ glob@6.0.3
│ │ │ │ ├─┬ inflight@1.0.4
│ │ │ │ │ └── wrappy@1.0.1
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ ├─┬ minimatch@3.0.0
│ │ │ │ │ └─┬ brace-expansion@1.1.2
│ │ │ │ │ ├── balanced-match@0.3.0
│ │ │ │ │ └── concat-map@0.0.1
│ │ │ │ ├─┬ once@1.3.3
│ │ │ │ │ └── wrappy@1.0.1
│ │ │ │ └── path-is-absolute@1.0.0
│ │ │ ├── semver@5.1.0
│ │ │ ├─┬ tar@2.2.1
│ │ │ │ ├── block-stream@0.0.8
│ │ │ │ ├─┬ fstream@1.0.8
│ │ │ │ │ └── graceful-fs@4.1.2
│ │ │ │ └── inherits@2.0.1
│ │ │ └─┬ tar-pack@3.1.2
│ │ │ ├── debug@0.7.4
│ │ │ ├─┬ fstream-ignore@1.0.3
│ │ │ │ └─┬ minimatch@3.0.0
│ │ │ │ └─┬ brace-expansion@1.1.2
│ │ │ │ ├── balanced-match@0.3.0
│ │ │ │ └── concat-map@0.0.1
│ │ │ ├── once@1.1.1
│ │ │ ├─┬ readable-stream@2.0.5
│ │ │ │ ├── core-util-is@1.0.2
│ │ │ │ ├── isarray@0.0.1
│ │ │ │ ├── process-nextick-args@1.0.6
│ │ │ │ ├── string_decoder@0.10.31
│ │ │ │ └── util-deprecate@1.0.2
│ │ │ ├─┬ rimraf@2.4.5
│ │ │ │ └─┬ glob@6.0.3
│ │ │ │ ├─┬ inflight@1.0.4
│ │ │ │ │ └── wrappy@1.0.1
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ ├─┬ minimatch@3.0.0
│ │ │ │ │ └─┬ brace-expansion@1.1.2
│ │ │ │ │ ├── balanced-match@0.3.0
│ │ │ │ │ └── concat-map@0.0.1
│ │ │ │ ├─┬ once@1.3.3
│ │ │ │ │ └── wrappy@1.0.1
│ │ │ │ └── path-is-absolute@1.0.0
│ │ │ └── uid-number@0.0.3
│ │ ├── glob-parent@2.0.0
│ │ ├── inherits@2.0.1
│ │ ├─┬ is-binary-path@1.0.1
│ │ │ └── binary-extensions@1.4.0
│ │ ├── is-glob@2.0.1
│ │ └── readdirp@2.0.0
│ ├─┬ connect@3.4.1
│ │ ├─┬ finalhandler@0.4.1
│ │ │ ├─┬ on-finished@2.3.0
│ │ │ │ └── ee-first@1.1.1
│ │ │ └── unpipe@1.0.0
│ │ ├── parseurl@1.3.1
│ │ └── utils-merge@1.0.0
│ ├── dev-ip@1.0.1
│ ├── easy-extender@2.3.2
│ ├─┬ eazy-logger@2.1.2
│ │ ├── opt-merger@1.1.1
│ │ └─┬ tfunk@3.0.1
│ │ ├─┬ chalk@0.5.1
│ │ │ ├── ansi-styles@1.1.0
│ │ │ ├─┬ has-ansi@0.1.0
│ │ │ │ └── ansi-regex@0.2.1
│ │ │ ├── strip-ansi@0.3.0
│ │ │ └── supports-color@0.2.0
│ │ └── object-path@0.9.2
│ ├── emitter-steward@1.0.0
│ ├─┬ foxy@11.1.4
│ │ ├─┬ http-proxy@1.13.2
│ │ │ ├── eventemitter3@1.1.1
│ │ │ └── requires-port@1.0.0
│ │ ├─┬ lodash.merge@3.3.2
│ │ │ ├── lodash._arraycopy@3.0.0
│ │ │ ├── lodash._arrayeach@3.0.0
│ │ │ ├─┬ lodash._createassigner@3.1.1
│ │ │ │ └── lodash._bindcallback@3.0.1
│ │ │ ├── lodash._getnative@3.9.1
│ │ │ ├── lodash.isarguments@3.0.7
│ │ │ ├── lodash.isarray@3.0.4
│ │ │ ├─┬ lodash.isplainobject@3.2.0
│ │ │ │ └── lodash._basefor@3.0.3
│ │ │ ├── lodash.istypedarray@3.0.5
│ │ │ ├── lodash.keys@3.1.2
│ │ │ ├── lodash.keysin@3.0.8
│ │ │ └── lodash.toplainobject@3.0.0
│ │ └── resp-modifier@4.0.4
│ ├─┬ fs-extra@0.26.5
│ │ ├── jsonfile@2.2.3
│ │ └── klaw@1.1.3
│ ├── immutable@3.7.6
│ ├─┬ localtunnel@1.8.1
│ │ ├── openurl@1.1.0
│ │ ├─┬ request@2.65.0
│ │ │ ├── aws-sign2@0.6.0
│ │ │ ├── bl@1.0.3
│ │ │ ├── caseless@0.11.0
│ │ │ ├─┬ combined-stream@1.0.5
│ │ │ │ └── delayed-stream@1.0.0
│ │ │ ├── extend@3.0.0
│ │ │ ├── forever-agent@0.6.1
│ │ │ ├── form-data@1.0.0-rc3
│ │ │ ├─┬ har-validator@2.0.6
│ │ │ │ └─┬ pinkie-promise@2.0.0
│ │ │ │ └── pinkie@2.0.4
│ │ │ ├─┬ hawk@3.1.3
│ │ │ │ ├── boom@2.10.1
│ │ │ │ ├── cryptiles@2.0.5
│ │ │ │ ├── hoek@2.16.3
│ │ │ │ └── sntp@1.0.9
│ │ │ ├─┬ http-signature@0.11.0
│ │ │ │ ├── asn1@0.1.11
│ │ │ │ ├── assert-plus@0.1.5
│ │ │ │ └── ctype@0.5.3
│ │ │ ├── isstream@0.1.2
│ │ │ ├── json-stringify-safe@5.0.1
│ │ │ ├── node-uuid@1.4.7
│ │ │ ├── oauth-sign@0.8.1
│ │ │ ├── qs@5.2.0
│ │ │ ├── stringstream@0.0.5
│ │ │ ├── tough-cookie@2.2.1
│ │ │ └── tunnel-agent@0.4.2
│ │ └─┬ yargs@3.29.0
│ │ ├── camelcase@1.2.1
│ │ ├─┬ cliui@3.1.0
│ │ │ ├─┬ string-width@1.0.1
│ │ │ │ ├── code-point-at@1.0.0
│ │ │ │ └── is-fullwidth-code-point@1.0.0
│ │ │ └── wrap-ansi@1.0.0
│ │ ├─┬ os-locale@1.4.0
│ │ │ └─┬ lcid@1.0.0
│ │ │ └── invert-kv@1.0.0
│ │ ├── window-size@0.1.4
│ │ └── y18n@3.2.0
│ ├── longest@1.0.1
│ ├─┬ meow@3.3.0
│ │ ├─┬ camelcase-keys@1.0.0
│ │ │ └── map-obj@1.0.1
│ │ └── indent-string@1.2.2
│ ├─┬ micromatch@2.3.5
│ │ ├─┬ arr-diff@2.0.0
│ │ │ └── arr-flatten@1.0.1
│ │ ├── array-unique@0.2.1
│ │ ├─┬ braces@1.8.3
│ │ │ ├─┬ expand-range@1.8.1
│ │ │ │ └─┬ fill-range@2.2.3
│ │ │ │ ├── is-number@2.1.0
│ │ │ │ ├── randomatic@1.1.5
│ │ │ │ └── repeat-string@1.5.2
│ │ │ ├── preserve@0.2.0
│ │ │ └── repeat-element@1.1.2
│ │ ├── expand-brackets@0.1.4
│ │ ├── extglob@0.3.2
│ │ ├── filename-regex@2.0.0
│ │ ├── is-extglob@1.0.0
│ │ ├─┬ kind-of@3.0.2
│ │ │ └── is-buffer@1.1.2
│ │ ├── lazy-cache@0.2.7
│ │ ├── normalize-path@2.0.1
│ │ ├─┬ parse-glob@3.0.4
│ │ │ ├── glob-base@0.3.0
│ │ │ └── is-dotfile@1.0.2
│ │ └─┬ regex-cache@0.4.2
│ │ ├── is-equal-shallow@0.1.3
│ │ └── is-primitive@2.0.0
│ ├─┬ opn@3.0.3
│ │ └── object-assign@4.0.1
│ ├─┬ portscanner@1.0.0
│ │ └── async@0.1.15
│ ├─┬ query-string@2.4.2
│ │ └── strict-uri-encode@1.1.0
│ ├── resp-modifier@5.0.2
│ ├─┬ serve-index@1.7.3
│ │ ├─┬ accepts@1.2.13
│ │ │ └── negotiator@0.5.3
│ │ ├── batch@0.5.3
│ │ ├── escape-html@1.0.3
│ │ ├─┬ http-errors@1.3.1
│ │ │ └── statuses@1.2.1
│ │ └─┬ mime-types@2.1.10
│ │ └── mime-db@1.22.0
│ ├─┬ serve-static@1.10.2
│ │ └─┬ send@0.13.1
│ │ ├── depd@1.1.0
│ │ ├── destroy@1.0.4
│ │ ├── mime@1.3.4
│ │ └── range-parser@1.0.3
│ ├─┬ socket.io@1.3.7
│ │ ├─┬ debug@2.1.0
│ │ │ └── ms@0.6.2
│ │ ├─┬ engine.io@1.5.4
│ │ │ ├── base64id@0.1.0
│ │ │ ├─┬ debug@1.0.3
│ │ │ │ └── ms@0.6.2
│ │ │ ├─┬ engine.io-parser@1.2.2
│ │ │ │ ├── after@0.8.1
│ │ │ │ ├── arraybuffer.slice@0.0.6
│ │ │ │ ├── base64-arraybuffer@0.1.2
│ │ │ │ ├── blob@0.0.4
│ │ │ │ └── utf8@2.1.0
│ │ │ └─┬ ws@0.8.0
│ │ │ ├─┬ bufferutil@1.2.1
│ │ │ │ └── bindings@1.2.1
│ │ │ ├── options@0.0.6
│ │ │ ├── ultron@1.0.2
│ │ │ └── utf-8-validate@1.2.1
│ │ ├── has-binary-data@0.1.3
│ │ ├─┬ socket.io-adapter@0.3.1
│ │ │ ├─┬ debug@1.0.2
│ │ │ │ └── ms@0.6.2
│ │ │ ├── object-keys@1.0.1
│ │ │ └─┬ socket.io-parser@2.2.2
│ │ │ └── debug@0.7.4
│ │ ├─┬ socket.io-client@1.3.7
│ │ │ ├── backo2@1.0.2
│ │ │ ├── component-bind@1.0.0
│ │ │ ├── component-emitter@1.1.2
│ │ │ ├── debug@0.7.4
│ │ │ ├─┬ engine.io-client@1.5.4
│ │ │ │ ├── component-inherit@0.0.3
│ │ │ │ ├─┬ debug@1.0.4
│ │ │ │ │ └── ms@0.6.2
│ │ │ │ ├─┬ has-cors@1.0.3
│ │ │ │ │ └── global@2.0.1
│ │ │ │ ├── parsejson@0.0.1
│ │ │ │ ├── parseqs@0.0.2
│ │ │ │ ├── parseuri@0.0.4
│ │ │ │ └── xmlhttprequest@1.5.0
│ │ │ ├── has-binary@0.1.6
│ │ │ ├── indexof@0.0.1
│ │ │ ├── object-component@0.0.3
│ │ │ ├─┬ parseuri@0.0.2
│ │ │ │ └─┬ better-assert@1.0.2
│ │ │ │ └── callsite@1.0.0
│ │ │ └── to-array@0.1.3
│ │ └─┬ socket.io-parser@2.2.4
│ │ ├── benchmark@1.0.0
│ │ ├── debug@0.7.4
│ │ └── json3@3.2.6
│ ├── ua-parser-js@0.7.10
│ └── ucfirst@1.0.0
├─┬ del@1.2.1
│ ├─┬ each-async@1.1.1
│ │ ├── onetime@1.1.0
│ │ └── set-immediate-shim@1.0.1
│ ├─┬ globby@2.1.0
│ │ ├── array-union@1.0.1
│ │ ├── async@1.5.2
│ │ └── glob@5.0.15
│ ├── is-path-cwd@1.0.0
│ ├─┬ is-path-in-cwd@1.0.0
│ │ └─┬ is-path-inside@1.0.0
│ │ └── path-is-inside@1.0.1
│ ├── object-assign@3.0.0
│ └─┬ rimraf@2.5.2
│ └── glob@7.0.0
├─┬ gulp@3.9.1
│ ├── archy@1.0.0
│ ├─┬ chalk@1.1.1
│ │ ├── ansi-styles@2.1.0
│ │ ├── escape-string-regexp@1.0.4
│ │ ├─┬ has-ansi@2.0.0
│ │ │ └── ansi-regex@2.0.0
│ │ ├── strip-ansi@3.0.0
│ │ └── supports-color@2.0.0
│ ├── deprecated@0.0.1
│ ├─┬ gulp-util@3.0.7
│ │ ├── array-differ@1.0.0
│ │ ├── array-uniq@1.0.2
│ │ ├── beeper@1.1.0
│ │ ├── dateformat@1.0.12
│ │ ├─┬ gulplog@1.0.0
│ │ │ └── glogg@1.0.0
│ │ ├─┬ has-gulplog@0.1.0
│ │ │ └── sparkles@1.0.0
│ │ ├── lodash._reescape@3.0.0
│ │ ├── lodash._reevaluate@3.0.0
│ │ ├── lodash._reinterpolate@3.0.0
│ │ ├─┬ lodash.template@3.6.2
│ │ │ ├── lodash._basecopy@3.0.1
│ │ │ ├── lodash._basetostring@3.0.1
│ │ │ ├── lodash._basevalues@3.0.0
│ │ │ ├── lodash._isiterateecall@3.0.9
│ │ │ ├─┬ lodash.escape@3.2.0
│ │ │ │ └── lodash._root@3.0.1
│ │ │ ├── lodash.restparam@3.6.1
│ │ │ └── lodash.templatesettings@3.1.1
│ │ ├── multipipe@0.1.2
│ │ └── vinyl@0.5.3
│ ├── interpret@1.0.0
│ ├─┬ liftoff@2.2.0
│ │ ├── extend@2.0.1
│ │ ├─┬ findup-sync@0.3.0
│ │ │ └── glob@5.0.15
│ │ ├── flagged-respawn@0.3.1
│ │ ├── rechoir@0.6.2
│ │ └── resolve@1.1.7
│ ├── minimist@1.2.0
│ ├─┬ orchestrator@0.3.7
│ │ ├── end-of-stream@0.1.5
│ │ ├── sequencify@0.0.7
│ │ └── stream-consume@0.1.0
│ ├── pretty-hrtime@1.0.1
│ ├── semver@4.3.6
│ ├─┬ tildify@1.1.2
│ │ └── os-homedir@1.0.1
│ ├─┬ v8flags@2.0.11
│ │ └── user-home@1.1.1
│ └─┬ vinyl-fs@0.3.14
│ ├── defaults@1.0.3
│ ├─┬ glob-stream@3.1.18
│ │ ├── glob@4.5.3
│ │ ├─┬ glob2base@0.0.12
│ │ │ └── find-index@0.1.1
│ │ ├── ordered-read-streams@0.1.0
│ │ ├─┬ through2@0.6.5
│ │ │ └── readable-stream@1.0.33
│ │ └── unique-stream@1.0.0
│ ├── glob-watcher@0.0.6
│ ├── graceful-fs@3.0.8
│ ├─┬ strip-bom@1.0.0
│ │ └── first-chunk-stream@1.0.0
│ ├─┬ through2@0.6.5
│ │ └── readable-stream@1.0.33
│ └─┬ vinyl@0.4.6
│ └── clone@0.2.0
├─┬ gulp-autoprefixer@3.1.0
│ ├─┬ autoprefixer@6.3.3
│ │ ├── browserslist@1.1.3
│ │ ├── caniuse-db@1.0.30000409
│ │ ├── normalize-range@0.1.2
│ │ ├── num2fraction@1.2.2
│ │ └── postcss-value-parser@3.2.3
│ ├─┬ postcss@5.0.16
│ │ ├── js-base64@2.1.9
│ │ └─┬ supports-color@3.1.2
│ │ └── has-flag@1.0.0
│ ├─┬ through2@2.0.1
│ │ └── xtend@4.0.1
│ └── vinyl-sourcemaps-apply@0.2.1
├─┬ gulp-babel@6.1.2
│ ├── object-assign@4.0.1
│ └── replace-ext@0.0.1
├─┬ gulp-cache@0.4.2
│ ├── bluebird@3.3.1
│ ├─┬ cache-swap@0.2.3
│ │ └── object-assign@4.0.1
│ ├── object-assign@4.0.1
│ ├─┬ object.omit@2.0.0
│ │ ├─┬ for-own@0.1.3
│ │ │ └── for-in@0.1.4
│ │ └── is-extendable@0.1.1
│ ├── object.pick@1.1.1
│ ├─┬ readable-stream@2.0.5
│ │ ├── core-util-is@1.0.2
│ │ ├── isarray@0.0.1
│ │ ├── process-nextick-args@1.0.6
│ │ ├── string_decoder@0.10.31
│ │ └── util-deprecate@1.0.2
│ ├── try-json-parse@0.1.1
│ └─┬ vinyl@1.1.1
│ ├── clone@1.0.2
│ └── clone-stats@0.0.1
├─┬ gulp-cssnano@2.1.1
│ ├─┬ cssnano@3.5.2
│ │ ├── decamelize@1.1.2
│ │ ├── defined@1.0.0
│ │ ├── indexes-of@1.0.1
│ │ ├── object-assign@4.0.1
│ │ ├─┬ postcss-calc@5.2.0
│ │ │ ├── postcss-message-helpers@2.0.0
│ │ │ └─┬ reduce-css-calc@1.2.0
│ │ │ ├── balanced-match@0.1.0
│ │ │ └─┬ reduce-function-call@1.0.1
│ │ │ └── balanced-match@0.1.0
│ │ ├─┬ postcss-colormin@2.1.8
│ │ │ └─┬ colormin@1.0.7
│ │ │ ├─┬ color@0.11.1
│ │ │ │ ├── color-convert@0.5.3
│ │ │ │ └─┬ color-string@0.3.0
│ │ │ │ └── color-name@1.1.1
│ │ │ └── css-color-names@0.0.3
│ │ ├── postcss-convert-values@2.3.4
│ │ ├── postcss-discard-comments@2.0.4
│ │ ├── postcss-discard-duplicates@2.0.1
│ │ ├── postcss-discard-empty@2.0.1
│ │ ├─┬ postcss-discard-unused@2.2.1
│ │ │ ├── flatten@1.0.2
│ │ │ └── uniqs@2.0.0
│ │ ├─┬ postcss-filter-plugins@2.0.0
│ │ │ └── uniqid@1.0.0
│ │ ├─┬ postcss-merge-idents@2.1.5
│ │ │ └── has-own@1.0.0
│ │ ├── postcss-merge-longhand@2.0.1
│ │ ├── postcss-merge-rules@2.0.5
│ │ ├─┬ postcss-minify-font-values@1.0.2
│ │ │ └── object-assign@4.0.1
│ │ ├── postcss-minify-gradients@1.0.1
│ │ ├─┬ postcss-minify-params@1.0.4
│ │ │ └── alphanum-sort@1.0.2
│ │ ├─┬ postcss-minify-selectors@2.0.4
│ │ │ └─┬ postcss-selector-parser@1.3.1
│ │ │ └── uniq@1.0.1
│ │ ├── postcss-normalize-charset@1.1.0
│ │ ├─┬ postcss-normalize-url@3.0.7
│ │ │ ├── is-absolute-url@2.0.0
│ │ │ └─┬ normalize-url@1.4.0
│ │ │ ├── object-assign@4.0.1
│ │ │ ├── prepend-http@1.0.3
│ │ │ ├── query-string@3.0.0
│ │ │ └─┬ sort-keys@1.1.1
│ │ │ └── is-plain-obj@1.1.0
│ │ ├── postcss-ordered-values@2.1.0
│ │ ├── postcss-reduce-idents@2.3.0
│ │ ├── postcss-reduce-transforms@1.0.3
│ │ ├─┬ postcss-svgo@2.1.2
│ │ │ ├── is-svg@1.1.1
│ │ │ └─┬ svgo@0.6.1
│ │ │ ├─┬ coa@1.0.1
│ │ │ │ └── q@1.4.1
│ │ │ ├── colors@1.1.2
│ │ │ ├─┬ csso@1.4.4
│ │ │ │ └── clap@1.0.10
│ │ │ ├── sax@1.1.5
│ │ │ └── whet.extend@0.9.9
│ │ ├── postcss-unique-selectors@2.0.2
│ │ └── postcss-zindex@2.0.1
│ └── object-assign@4.0.1
├─┬ gulp-eslint@0.13.2
│ ├─┬ bufferstreams@1.0.1
│ │ └── readable-stream@1.1.13
│ └─┬ eslint@0.22.1
│ ├─┬ concat-stream@1.5.1
│ │ └── typedarray@0.0.6
│ ├─┬ doctrine@0.6.4
│ │ └── esutils@1.1.6
│ ├─┬ escope@3.4.0
│ │ ├─┬ es6-map@0.1.3
│ │ │ ├── d@0.1.1
│ │ │ ├── es5-ext@0.10.11
│ │ │ ├── es6-iterator@2.0.0
│ │ │ ├── es6-set@0.1.4
│ │ │ ├── es6-symbol@3.0.2
│ │ │ └── event-emitter@0.3.4
│ │ ├── es6-weak-map@2.0.1
│ │ ├─┬ esrecurse@3.1.1
│ │ │ └── estraverse@3.1.0
│ │ └── estraverse@4.1.1
│ ├── espree@2.2.5
│ ├── estraverse@2.0.0
│ ├── estraverse-fb@1.3.1
│ ├── globals@6.4.1
│ ├─┬ inquirer@0.8.5
│ │ ├── ansi-regex@1.1.1
│ │ ├── cli-width@1.1.1
│ │ ├── figures@1.4.0
│ │ ├─┬ readline2@0.1.1
│ │ │ ├── mute-stream@0.0.4
│ │ │ └─┬ strip-ansi@2.0.1
│ │ │ └── ansi-regex@1.1.1
│ │ └── rx@2.5.3
│ ├─┬ is-my-json-valid@2.12.4
│ │ ├── generate-function@2.0.0
│ │ ├─┬ generate-object-property@1.2.0
│ │ │ └── is-property@1.0.2
│ │ └── jsonpointer@2.0.0
│ ├─┬ js-yaml@3.4.6
│ │ ├─┬ argparse@1.0.6
│ │ │ └── sprintf-js@1.0.3
│ │ ├── esprima@2.7.2
│ │ └── inherit@2.2.3
│ ├── object-assign@2.1.1
│ ├─┬ optionator@0.5.0
│ │ ├── deep-is@0.1.3
│ │ ├── fast-levenshtein@1.0.7
│ │ ├── levn@0.2.5
│ │ ├── prelude-ls@1.1.2
│ │ ├── type-check@0.3.2
│ │ └── wordwrap@0.0.3
│ ├── text-table@0.2.0
│ └── xml-escape@1.0.0
├─┬ gulp-htmlmin@1.3.0
│ ├── bufferstreams@1.1.0
│ ├─┬ html-minifier@1.1.1
│ │ ├─┬ change-case@2.3.1
│ │ │ ├── camel-case@1.2.2
│ │ │ ├── constant-case@1.1.2
│ │ │ ├── dot-case@1.1.2
│ │ │ ├── is-lower-case@1.1.3
│ │ │ ├── is-upper-case@1.1.2
│ │ │ ├── lower-case@1.1.3
│ │ │ ├── lower-case-first@1.0.2
│ │ │ ├── param-case@1.1.2
│ │ │ ├── pascal-case@1.1.2
│ │ │ ├── path-case@1.1.2
│ │ │ ├── sentence-case@1.1.3
│ │ │ ├── snake-case@1.1.2
│ │ │ ├── swap-case@1.1.2
│ │ │ ├── title-case@1.1.2
│ │ │ ├── upper-case@1.1.3
│ │ │ └── upper-case-first@1.1.2
│ │ ├─┬ clean-css@3.4.9
│ │ │ ├── commander@2.8.1
│ │ │ └── source-map@0.4.4
│ │ ├─┬ cli@0.11.1
│ │ │ ├── exit@0.1.2
│ │ │ └── glob@5.0.15
│ │ └── relateurl@0.2.6
│ ├── object-assign@4.0.1
│ └── tryit@1.0.2
├─┬ gulp-if@1.2.5
│ ├─┬ gulp-match@0.2.1
│ │ └─┬ minimatch@1.0.0
│ │ ├── lru-cache@2.7.3
│ │ └── sigmund@1.0.1
│ ├─┬ ternary-stream@1.2.3
│ │ ├─┬ duplexer2@0.0.2
│ │ │ └── readable-stream@1.1.13
│ │ ├── fork-stream@0.0.4
│ │ ├─┬ merge-stream@0.1.8
│ │ │ └─┬ through2@0.6.5
│ │ │ └── readable-stream@1.0.33
│ │ └─┬ through2@0.6.5
│ │ └── readable-stream@1.0.33
│ └─┬ through2@0.6.5
│ └── readable-stream@1.0.33
├─┬ gulp-imagemin@2.4.0
│ ├─┬ imagemin@4.0.0
│ │ ├─┬ buffer-to-vinyl@1.1.0
│ │ │ ├── file-type@3.7.0
│ │ │ ├── uuid@2.0.1
│ │ │ └── vinyl@1.1.1
│ │ ├─┬ imagemin-gifsicle@4.2.0
│ │ │ ├─┬ gifsicle@3.0.3
│ │ │ │ ├─┬ bin-build@2.2.0
│ │ │ │ │ ├── archive-type@3.2.0
│ │ │ │ │ ├─┬ decompress@3.0.0
│ │ │ │ │ │ ├─┬ decompress-tar@3.1.0
│ │ │ │ │ │ │ ├── is-tar@1.0.0
│ │ │ │ │ │ │ ├── object-assign@2.1.1
│ │ │ │ │ │ │ ├─┬ strip-dirs@1.1.1
│ │ │ │ │ │ │ │ ├── is-natural-number@2.0.0
│ │ │ │ │ │ │ │ └── sum-up@1.0.2
│ │ │ │ │ │ │ ├─┬ tar-stream@1.3.2
│ │ │ │ │ │ │ │ └── end-of-stream@1.1.0
│ │ │ │ │ │ │ ├─┬ through2@0.6.5
│ │ │ │ │ │ │ │ └── readable-stream@1.0.33
│ │ │ │ │ │ │ └─┬ vinyl@0.4.6
│ │ │ │ │ │ │ └── clone@0.2.0
│ │ │ │ │ │ ├─┬ decompress-tarbz2@3.1.0
│ │ │ │ │ │ │ ├── is-bzip2@1.0.0
│ │ │ │ │ │ │ ├── object-assign@2.1.1
│ │ │ │ │ │ │ ├─┬ seek-bzip@1.0.5
│ │ │ │ │ │ │ │ └── commander@2.8.1
│ │ │ │ │ │ │ ├─┬ through2@0.6.5
│ │ │ │ │ │ │ │ └── readable-stream@1.0.33
│ │ │ │ │ │ │ └─┬ vinyl@0.4.6
│ │ │ │ │ │ │ └── clone@0.2.0
│ │ │ │ │ │ ├─┬ decompress-targz@3.1.0
│ │ │ │ │ │ │ ├── is-gzip@1.0.0
│ │ │ │ │ │ │ ├── object-assign@2.1.1
│ │ │ │ │ │ │ ├─┬ through2@0.6.5
│ │ │ │ │ │ │ │ └── readable-stream@1.0.33
│ │ │ │ │ │ │ └─┬ vinyl@0.4.6
│ │ │ │ │ │ │ └── clone@0.2.0
│ │ │ │ │ │ ├─┬ decompress-unzip@3.4.0
│ │ │ │ │ │ │ ├── is-zip@1.0.0
│ │ │ │ │ │ │ ├── stat-mode@0.2.1
│ │ │ │ │ │ │ ├── vinyl@1.1.1
│ │ │ │ │ │ │ └─┬ yauzl@2.4.1
│ │ │ │ │ │ │ └─┬ fd-slicer@1.0.1
│ │ │ │ │ │ │ └── pend@1.2.0
│ │ │ │ │ │ ├─┬ vinyl-assign@1.2.1
│ │ │ │ │ │ │ └── object-assign@4.0.1
│ │ │ │ │ │ └─┬ vinyl-fs@2.3.1
│ │ │ │ │ │ ├─┬ glob-stream@5.3.1
│ │ │ │ │ │ │ ├── glob@5.0.15
│ │ │ │ │ │ │ ├── micromatch@2.3.7
│ │ │ │ │ │ │ ├── ordered-read-streams@0.3.0
│ │ │ │ │ │ │ ├─┬ through2@0.6.5
│ │ │ │ │ │ │ │ └── readable-stream@1.0.33
│ │ │ │ │ │ │ └── unique-stream@2.2.1
│ │ │ │ │ │ ├── merge-stream@1.0.0
│ │ │ │ │ │ ├── object-assign@4.0.1
│ │ │ │ │ │ ├── strip-bom@2.0.0
│ │ │ │ │ │ └── vinyl@1.1.1
│ │ │ │ │ ├─┬ download@4.4.3
│ │ │ │ │ │ ├─┬ caw@1.2.0
│ │ │ │ │ │ │ ├─┬ get-proxy@1.0.1
│ │ │ │ │ │ │ │ └─┬ rc@0.5.5
│ │ │ │ │ │ │ │ ├── deep-extend@0.2.11
│ │ │ │ │ │ │ │ ├── minimist@0.0.10
│ │ │ │ │ │ │ │ └── strip-json-comments@0.1.3
│ │ │ │ │ │ │ └── is-obj@1.0.0
│ │ │ │ │ │ ├─┬ filenamify@1.2.0
│ │ │ │ │ │ │ ├── filename-reserved-regex@1.0.0
│ │ │ │ │ │ │ ├── strip-outer@1.0.0
│ │ │ │ │ │ │ └── trim-repeated@1.0.0
│ │ │ │ │ │ ├─┬ got@5.4.1
│ │ │ │ │ │ │ ├─┬ create-error-class@2.0.1
│ │ │ │ │ │ │ │ └── capture-stack-trace@1.0.0
│ │ │ │ │ │ │ ├── duplexer2@0.1.4
│ │ │ │ │ │ │ ├── is-redirect@1.0.0
│ │ │ │ │ │ │ ├── is-retry-allowed@1.0.0
│ │ │ │ │ │ │ ├── lowercase-keys@1.0.0
│ │ │ │ │ │ │ ├── node-status-codes@1.0.0
│ │ │ │ │ │ │ ├── object-assign@4.0.1
│ │ │ │ │ │ │ ├─┬ parse-json@2.2.0
│ │ │ │ │ │ │ │ └─┬ error-ex@1.3.0
│ │ │ │ │ │ │ │ └── is-arrayish@0.2.1
│ │ │ │ │ │ │ ├── timed-out@2.0.0
│ │ │ │ │ │ │ ├── unzip-response@1.0.0
│ │ │ │ │ │ │ └── url-parse-lax@1.0.0
│ │ │ │ │ │ ├── gulp-decompress@1.2.0
│ │ │ │ │ │ ├── gulp-rename@1.2.2
│ │ │ │ │ │ ├── is-url@1.2.1
│ │ │ │ │ │ ├── object-assign@4.0.1
│ │ │ │ │ │ ├── read-all-stream@3.1.0
│ │ │ │ │ │ ├── vinyl@1.1.1
│ │ │ │ │ │ ├─┬ vinyl-fs@2.3.1
│ │ │ │ │ │ │ ├─┬ glob-stream@5.3.1
│ │ │ │ │ │ │ │ ├── glob@5.0.15
│ │ │ │ │ │ │ │ ├── micromatch@2.3.7
│ │ │ │ │ │ │ │ ├── ordered-read-streams@0.3.0
│ │ │ │ │ │ │ │ ├─┬ through2@0.6.5
│ │ │ │ │ │ │ │ │ └── readable-stream@1.0.33
│ │ │ │ │ │ │ │ └── unique-stream@2.2.1
│ │ │ │ │ │ │ ├── merge-stream@1.0.0
│ │ │ │ │ │ │ └── strip-bom@2.0.0
│ │ │ │ │ │ └─┬ ware@1.3.0
│ │ │ │ │ │ └─┬ wrap-fn@0.1.5
│ │ │ │ │ │ └── co@3.1.0
│ │ │ │ │ ├─┬ exec-series@1.0.2
│ │ │ │ │ │ └── async-each-series@1.1.0
│ │ │ │ │ └─┬ url-regex@3.1.0
│ │ │ │ │ └── ip-regex@1.0.3
│ │ │ │ ├─┬ bin-wrapper@3.0.2
│ │ │ │ │ ├─┬ bin-check@2.0.0
│ │ │ │ │ │ └── executable@1.1.0
│ │ │ │ │ ├─┬ bin-version-check@2.1.0
│ │ │ │ │ │ ├─┬ bin-version@1.0.4
│ │ │ │ │ │ │ └─┬ find-versions@1.2.1
│ │ │ │ │ │ │ ├─┬ meow@3.7.0
│ │ │ │ │ │ │ │ ├─┬ camelcase-keys@2.0.0
│ │ │ │ │ │ │ │ │ └── camelcase@2.1.0
│ │ │ │ │ │ │ │ ├─┬ loud-rejection@1.2.1
│ │ │ │ │ │ │ │ │ ├── array-find-index@1.0.1
│ │ │ │ │ │ │ │ │ └── signal-exit@2.1.2
│ │ │ │ │ │ │ │ ├─┬ normalize-package-data@2.3.5
│ │ │ │ │ │ │ │ │ ├── hosted-git-info@2.1.4
│ │ │ │ │ │ │ │ │ ├─┬ is-builtin-module@1.0.0
│ │ │ │ │ │ │ │ │ │ └── builtin-modules@1.1.1
│ │ │ │ │ │ │ │ │ └─┬ validate-npm-package-license@3.0.1
│ │ │ │ │ │ │ │ │ ├─┬ spdx-correct@1.0.2
│ │ │ │ │ │ │ │ │ │ └── spdx-license-ids@1.2.0
│ │ │ │ │ │ │ │ │ └─┬ spdx-expression-parse@1.0.2
│ │ │ │ │ │ │ │ │ └── spdx-exceptions@1.0.4
│ │ │ │ │ │ │ │ ├── object-assign@4.0.1
│ │ │ │ │ │ │ │ ├─┬ read-pkg-up@1.0.1
│ │ │ │ │ │ │ │ │ ├─┬ find-up@1.1.0
│ │ │ │ │ │ │ │ │ │ └── path-exists@2.1.0
│ │ │ │ │ │ │ │ │ └─┬ read-pkg@1.1.0
│ │ │ │ │ │ │ │ │ ├─┬ load-json-file@1.1.0
│ │ │ │ │ │ │ │ │ │ ├── pify@2.3.0
│ │ │ │ │ │ │ │ │ │ └── strip-bom@2.0.0
│ │ │ │ │ │ │ │ │ └── path-type@1.1.0
│ │ │ │ │ │ │ │ ├─┬ redent@1.0.0
│ │ │ │ │ │ │ │ │ ├─┬ indent-string@2.1.0
│ │ │ │ │ │ │ │ │ │ └── repeating@2.0.0
│ │ │ │ │ │ │ │ │ └── strip-indent@1.0.1
│ │ │ │ │ │ │ │ └── trim-newlines@1.0.0
│ │ │ │ │ │ │ └── semver-regex@1.0.0
│ │ │ │ │ │ └─┬ semver-truncate@1.1.0
│ │ │ │ │ │ └── semver@5.1.0
│ │ │ │ │ ├── lazy-req@1.1.0
│ │ │ │ │ └── os-filter-obj@1.0.3
│ │ │ │ └─┬ logalot@2.1.0
│ │ │ │ └─┬ squeak@1.3.0
│ │ │ │ ├── console-stream@0.1.1
│ │ │ │ └─┬ lpad-align@1.1.0
│ │ │ │ └── lpad@2.0.1
│ │ │ ├── is-gif@1.0.0
│ │ │ └─┬ through2@0.6.5
│ │ │ └── readable-stream@1.0.33
│ │ ├─┬ imagemin-jpegtran@4.3.2
│ │ │ ├── is-jpg@1.0.0
│ │ │ └── jpegtran-bin@3.0.6
│ │ ├─┬ imagemin-optipng@4.3.0
│ │ │ ├─┬ exec-buffer@2.0.1
│ │ │ │ └── tempfile@1.1.1
│ │ │ ├── is-png@1.0.0
│ │ │ ├── optipng-bin@3.1.0
│ │ │ └─┬ through2@0.6.5
│ │ │ └── readable-stream@1.0.33
│ │ ├── imagemin-svgo@4.2.1
│ │ ├── optional@0.1.3
│ │ ├─┬ stream-combiner2@1.1.1
│ │ │ └── duplexer2@0.1.4
│ │ └─┬ vinyl-fs@2.3.1
│ │ ├─┬ glob-stream@5.3.1
│ │ │ ├── glob@5.0.15
│ │ │ ├── micromatch@2.3.7
│ │ │ ├── ordered-read-streams@0.3.0
│ │ │ ├─┬ through2@0.6.5
│ │ │ │ └── readable-stream@1.0.33
│ │ │ └── unique-stream@2.2.1
│ │ ├── merge-stream@1.0.0
│ │ ├── object-assign@4.0.1
│ │ ├── strip-bom@2.0.0
│ │ └── vinyl@1.1.1
│ ├── object-assign@4.0.1
│ ├─┬ plur@2.1.2
│ │ └── irregular-plurals@1.1.0
│ ├─┬ pretty-bytes@2.0.1
│ │ ├── get-stdin@4.0.1
│ │ └── number-is-nan@1.0.0
│ └── through2-concurrent@1.1.0
├─┬ gulp-load-plugins@0.10.0
│ ├─┬ findup-sync@0.2.1
│ │ └── glob@4.3.5
│ └── multimatch@2.0.0
├── gulp-plumber@1.1.0
├─┬ gulp-sass@2.2.0
│ ├─┬ node-sass@3.4.2
│ │ ├── async-foreach@0.1.3
│ │ ├─┬ cross-spawn@2.1.5
│ │ │ ├─┬ cross-spawn-async@2.1.8
│ │ │ │ └─┬ lru-cache@4.0.0
│ │ │ │ ├── pseudomap@1.0.2
│ │ │ │ └── yallist@2.0.0
│ │ │ └─┬ spawn-sync@1.0.15
│ │ │ └── os-shim@0.1.3
│ │ ├─┬ gaze@0.5.2
│ │ │ └─┬ globule@0.1.0
│ │ │ ├─┬ glob@3.1.21
│ │ │ │ ├── graceful-fs@1.2.3
│ │ │ │ └── inherits@1.0.2
│ │ │ ├── lodash@1.0.2
│ │ │ └── minimatch@0.2.14
│ │ ├── glob@5.0.15
│ │ ├── nan@2.2.0
│ │ ├─┬ node-gyp@3.3.0
│ │ │ ├── fstream@1.0.8
│ │ │ ├─┬ glob@4.5.3
│ │ │ │ └── minimatch@2.0.10
│ │ │ ├── minimatch@1.0.0
│ │ │ ├─┬ npmlog@2.0.2
│ │ │ │ ├── ansi@0.3.1
│ │ │ │ ├─┬ are-we-there-yet@1.0.6
│ │ │ │ │ └── delegates@1.0.0
│ │ │ │ └─┬ gauge@1.2.5
│ │ │ │ ├── has-unicode@2.0.0
│ │ │ │ ├─┬ lodash.pad@3.3.0
│ │ │ │ │ └── lodash.repeat@3.2.0
│ │ │ │ ├─┬ lodash.padleft@3.1.1
│ │ │ │ │ └── lodash._createpadding@3.6.1
│ │ │ │ └── lodash.padright@3.1.1
│ │ │ ├── osenv@0.1.3
│ │ │ ├─┬ path-array@1.0.1
│ │ │ │ └── array-index@1.0.0
│ │ │ ├─┬ tar@2.2.1
│ │ │ │ └── block-stream@0.0.8
│ │ │ └─┬ which@1.2.4
│ │ │ ├─┬ is-absolute@0.1.7
│ │ │ │ └── is-relative@0.1.3
│ │ │ └── isexe@1.1.2
│ │ ├─┬ npmconf@2.1.2
│ │ │ ├─┬ config-chain@1.1.10
│ │ │ │ └── proto-list@1.2.4
│ │ │ ├── ini@1.3.4
│ │ │ └── uid-number@0.0.5
│ │ └─┬ sass-graph@2.1.1
│ │ ├── glob@6.0.4
│ │ └── lodash@4.5.0
│ └── object-assign@4.0.1
├─┬ gulp-size@1.3.0
│ └─┬ gzip-size@1.0.0
│ └─┬ browserify-zlib@0.1.4
│ └── pako@0.2.8
├─┬ gulp-sourcemaps@1.6.0
│ ├── graceful-fs@4.1.3
│ ├─┬ strip-bom@2.0.0
│ │ └── is-utf8@0.2.1
│ └── vinyl@1.1.1
├─┬ gulp-uglify@1.5.2
│ ├── deap@1.0.0
│ ├─┬ fancy-log@1.2.0
│ │ └── time-stamp@1.0.0
│ ├── isobject@2.0.0
│ ├─┬ uglify-js@2.6.1
│ │ ├── async@0.2.10
│ │ ├── uglify-to-browserify@1.0.2
│ │ └─┬ yargs@3.10.0
│ │ ├─┬ cliui@2.1.0
│ │ │ ├─┬ center-align@0.1.3
│ │ │ │ ├── align-text@0.1.4
│ │ │ │ └── lazy-cache@1.0.3
│ │ │ ├── right-align@0.1.3
│ │ │ └── wordwrap@0.0.2
│ │ └── window-size@0.1.0
│ └── uglify-save-license@0.4.1
├─┬ gulp-useref@3.0.5
│ ├─┬ event-stream@3.3.2
│ │ ├── duplexer@0.1.1
│ │ ├── from@0.1.3
│ │ ├── map-stream@0.1.0
│ │ ├── pause-stream@0.0.11
│ │ ├── split@0.3.3
│ │ ├── stream-combiner@0.0.4
│ │ └── through@2.3.8
│ ├─┬ glob@6.0.4
│ │ ├─┬ inflight@1.0.4
│ │ │ └── wrappy@1.0.1
│ │ └── once@1.3.3
│ ├─┬ gulp-concat@2.6.0
│ │ ├── concat-with-sourcemaps@1.0.4
│ │ └─┬ through2@0.6.5
│ │ └── readable-stream@1.0.33
│ ├─┬ gulp-if@2.0.0
│ │ ├─┬ gulp-match@1.0.0
│ │ │ └── minimatch@3.0.0
│ │ ├─┬ ternary-stream@2.0.0
│ │ │ └── through2@2.0.1
│ │ └── through2@2.0.1
│ ├─┬ is-relative-url@1.0.0
│ │ └── is-absolute-url@1.0.0
│ ├─┬ through2@0.6.5
│ │ └── readable-stream@1.0.33
│ ├── useref@1.1.2
│ └─┬ vinyl-fs@2.3.1
│ ├─┬ duplexify@3.4.2
│ │ └── end-of-stream@1.0.0
│ ├─┬ glob-stream@5.3.1
│ │ ├── glob@5.0.15
│ │ ├── micromatch@2.3.7
│ │ ├─┬ ordered-read-streams@0.3.0
│ │ │ └── is-stream@1.0.1
│ │ ├─┬ to-absolute-glob@0.1.1
│ │ │ └── extend-shallow@2.0.1
│ │ └─┬ unique-stream@2.2.1
│ │ └─┬ json-stable-stringify@1.0.1
│ │ └── jsonify@0.0.0
│ ├── is-valid-glob@0.3.0
│ ├── lazystream@1.0.0
│ ├── merge-stream@1.0.0
│ ├── object-assign@4.0.1
│ ├── strip-bom@2.0.0
│ ├─┬ strip-bom-stream@1.0.0
│ │ └── strip-bom@2.0.0
│ ├── through2@2.0.1
│ ├── through2-filter@2.0.0
│ └── vinyl@1.1.1
├─┬ main-bower-files@2.11.1
│ ├── extend@2.0.1
│ ├── strip-json-comments@1.0.4
│ └─┬ vinyl-fs@1.0.0
│ ├─┬ glob-stream@4.1.1
│ │ ├── glob@4.5.3
│ │ └── unique-stream@2.2.1
│ ├── glob-watcher@0.0.8
│ ├── graceful-fs@3.0.8
│ ├── object-assign@2.1.1
│ ├─┬ through2@0.6.5
│ │ └── readable-stream@1.0.33
│ └─┬ vinyl@0.4.6
│ └── clone@0.2.0
└─┬ wiredep@2.2.2
├─┬ bower-config@0.5.2
│ ├── graceful-fs@2.0.3
│ ├── mout@0.9.1
│ ├─┬ optimist@0.6.1
│ │ └── minimist@0.0.10
│ └── osenv@0.0.3
├─┬ chalk@0.5.1
│ ├── ansi-styles@1.1.0
│ ├─┬ has-ansi@0.1.0
│ │ └── ansi-regex@0.2.1
│ ├── strip-ansi@0.3.0
│ └── supports-color@0.2.0
├── glob@4.5.3
├── lodash@2.4.2
├── propprop@0.3.0
└─┬ through2@0.6.5
└── readable-stream@1.0.33
will-i-am:yo-stellar William$
What command just caused all of the above response ? These two:
will-i-am:~ William$ cd yo-stellar/
will-i-am:yo-stellar William$ yo webapp
What are the deprecateds and the errors and notices ?
What are the pre-build test passed successfully showing !
First, the successes, then the others:
> node-sass@3.4.2 install /Users/William/yo-stellar/node_modules/node-sass
> node scripts/install.js
Binary downloaded and installed at /Users/William/yo-stellar/node_modules/node-sass/vendor/darwin-x64-47/binding.node
> spawn-sync@1.0.15 postinstall /Users/William/yo-stellar/node_modules/spawn-sync
> node postinstall
> node-sass@3.4.2 postinstall /Users/William/yo-stellar/node_modules/node-sass
> node scripts/build.js
` /Users/William/yo-stellar/node_modules/node-sass/vendor/darwin-x64-47/binding.node ` exists.
testing binary.
Binary is fine; exiting.
> optipng-bin@3.1.0 postinstall /Users/William/yo-stellar/node_modules/optipng-bin
> node lib/install.js
✔ optipng pre-build test passed successfully
> jpegtran-bin@3.0.6 postinstall /Users/William/yo-stellar/node_modules/jpegtran-bin
> node lib/install.js
✔ jpegtran pre-build test passed successfully
> gifsicle@3.0.3 postinstall /Users/William/yo-stellar/node_modules/gifsicle
> node lib/install.js
✔ gifsicle pre-build test passed successfully
Now the others:
I'm all done. Running npm install & bower install for you to install the required dependencies. If this fails, try running the command yourself.
npm WARN deprecated graceful-fs@3.0.8: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated lodash@1.0.2: lodash@ < 3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0.
npm WARN deprecated graceful-fs@1.2.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated npmconf@2.1.2: this package has been reintegrated into npm and is now out of date with respect to npm
npm WARN deprecated lodash.padleft@3.1.1: This package has been renamed. Use lodash.padstart@^4.0.0.
npm WARN deprecated lodash.padright@3.1.1: This package has been renamed. Use lodash.padend@^4.0.0.
npm WARN deprecated graceful-fs@2.0.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated lodash@2.4.2: lodash@< 3 .0.0 is no longer maintained. Upgrade to lodash@^4.0.0
npm WARN prefer global node-gyp@3.3.0 should be installed with -g
> fsevents@1.0.7 install /Users/William/yo-stellar/node_modules/fsevents
> node-pre-gyp install --fallback-to-build
[fsevents] Success: "/Users/William/yo-stellar/node_modules/fsevents/lib/binding/Release/node-v47-darwin-x64/fse.node" is installed via remote
> bufferutil@1.2.1 install /Users/William/yo-stellar/node_modules/bufferutil
> node-gyp rebuild
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/bufferutil.node
> utf-8-validate@1.2.1 install /Users/William/yo-stellar/node_modules/utf-8-validate
> node-gyp rebuild
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/validation.node
> node-sass@3.4.2 install /Users/William/yo-stellar/node_modules/node-sass
> node scripts/install.js
Binary downloaded and installed at /Users/William/yo-stellar/node_modules/node-sass/vendor/darwin-x64-47/binding.node
My response to above so far is, I haven't see anything not work so far.
If there is a problem, it will show up with next command:
gulp serve
Let us see what happens:
will-i-am:yo-stellar William$ gulp serve
-bash: gulp: command not found
will-i-am:yo-stellar William$
Our gulp server
command is not working on 20162017.
We take it from the top : Somehow, I need to get a clue on
why gulp server
returns nothing of value.
What is causing this ?
From the top again, first with the Configuration and Ignore Files.
Immediately I see I did not redo the commands at Getting Started.
I did install
gulp
using these exact commands:
npm install --global gulp-cli
npm install --save-dev gulp
: Installgulp
in the project devDependencies.Then, after all is installed and working ..
I am studying how to host my new creation on Heroku ..
I read the Heroku way on this matter of installing such a tool asnode
,
from Getting Started with Node.js on Heroku, and I found they recommend a better way at
Heroku's Best Practices for Node.js Development
under the Use a smart .npmrc section.
Read this page now, if you plan on hosting with Heroku. This is what Heroku recommends:
Use a smart
.npmrc
By default, npm doesn’t save installed dependencies to package.json
(and you should always track your dependencies!).If you use the
--save
flag to auto-update package.json,npm
installs
the packages with a leading carat (^), putting your modules at risk
of drifting to different versions. This is fine for module development,
but not good for apps, where you want to keep consistent dependencies
between all your environments.One solution is installing packages like this:
npm install foobar --save --save-exact
Even better, you can set these options in
~/.npmrc
to update your defaults:$
npm config set save=true
$
npm config set save-exact=true
cat ~/.npmrc
Now,
npm install foobar
will automatically addfoobar
to package.json and
your dependencies won’t drift between installs!
Use a smart .npmrc
Do we have the ~/.npmrc
file ?
ls -aux
We do not and so we run:
touch ~/.npmrc
Now we run the commands given by Heroku:
npm config set save=true
npm config set save-exact=true
To see your npm configuration settings, run:
cat ~/.npmrc
To see the file contents, run:
open -e ~/.npmrc
Your First Heroku Node Program !
Heroku is not kidding when they say, "This tutorial will have you deploying a Node.js app in minutes."
I recommend you open that page and follow their steps;
Here is how I followed the steps:
heroku login
Now prepare a simple application that can be deployed.
Execute the following commands to clone the sample application:
git clone https://github.com/heroku/node-js-getting-started.git
cd node-js-getting-started
You now have a functioning git repository that contains a simple application
as well as a package.json file, which is used by Node’s dependency manager.Create an app on Heroku, which prepares Heroku to receive your source code.
I am choosing to name our app, so we give that name to theheroku create
command:
heroku create stellarworks
Notice well your results, they will be similar to this Heroku example:
$ heroku create
Creating sharp-rain-871... done, stack is cedar-14
http://sharp-rain-871.herokuapp.com/ | https://git.heroku.com/sharp-rain-871.git
Git remote heroku addedWhen you create an app, a git remote (called heroku) is also created and associated
with your local git repository.Heroku generates a random name (in this case sharp-rain-871) for your app, or you can
pass a parameter to specify your own app name.
Your generated Procfile looks like this:
web: node index.js
Now deploy your code:
git push heroku master
The application is now deployed. Ensure that at least one instance of the app is running:
heroku ps:scale web=1
Now open your new Node app:
heroku open
If you have many apps on Heroku, you will be asked to identify the app.
We named our app, stellarworks so we run:
heroku open --app stellarworks
Our new app's address is https://stellarworks.herokuapp.com/.
Unbelieveably simple, Thank You, Heroku.
Tail your logs on your app:
heroku logs --tail
Scale your number of dynos running to zero:
heroku ps:scale web=0
Access your site, and you will see an error message:
heroku open
Scale it up again:
heroku ps:scale web=1
From Heroku ..
Declare app dependencies
Heroku recognizes an app as Node.js by the existence of
a package.json file in the root directory. For your own
apps, you can create one by runningnpm init --yes
.The demo app you deployed already has a package.json.
Our does have this file and it currently looks like this:
{
"name": "node-js-getting-started",
"version": "0.1.5",
"description": "A sample Node.js app using Express 4",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"ejs": "2.3.3",
"express": "4.13.3"
},
"engines": {
"node": "0.12.7"
},
"repository": {
"type": "git",
"url": "https://github.com/heroku/node-js-getting-started"
},
"keywords": [
"node",
"heroku",
"express"
],
"license": "MIT"
}
The Heroku instructions continue:
The package.json file determines both the version of Node.js that will
be used to run your application on Heroku, as well as the dependencies
that should be installed with your application. When an app is deployed,
Heroku reads this file and installs the appropriate node version together
with the dependencies using the npm install command.
Run this command in your local directory to install the dependencies,
preparing your system for running the app locally:
npm install
will-i-am:node-js-getting-started William$ npm install
node-js-getting-started@0.1.5 /Users/William/heroku-node-starter/node-js-getting-started
├── ejs@2.3.3
└─┬ express@4.13.3
├─┬ accepts@1.2.13
│ ├─┬ mime-types@2.1.10
│ │ └── mime-db@1.22.0
│ └── negotiator@0.5.3
├── array-flatten@1.1.1
├── content-disposition@0.5.0
├── content-type@1.0.1
├── cookie@0.1.3
├── cookie-signature@1.0.6
├─┬ debug@2.2.0
│ └── ms@0.7.1
├── depd@1.0.1
├── escape-html@1.0.2
├── etag@1.7.0
├─┬ finalhandler@0.4.0
│ └── unpipe@1.0.0
├── fresh@0.3.0
├── merge-descriptors@1.0.0
├── methods@1.1.2
├─┬ on-finished@2.3.0
│ └── ee-first@1.1.1
├── parseurl@1.3.1
├── path-to-regexp@0.1.7
├─┬ proxy-addr@1.0.10
│ ├── forwarded@0.1.0
│ └── ipaddr.js@1.0.5
├── qs@4.0.0
├── range-parser@1.0.3
├─┬ send@0.13.0
│ ├── destroy@1.0.3
│ ├─┬ http-errors@1.3.1
│ │ └── inherits@2.0.1
│ ├── mime@1.3.4
│ └── statuses@1.2.1
├─┬ serve-static@1.10.2
│ ├── escape-html@1.0.3
│ └─┬ send@0.13.1
│ ├── depd@1.1.0
│ └── destroy@1.0.4
├─┬ type-is@1.6.11
│ └── media-typer@0.3.0
├── utils-merge@1.0.0
└── vary@1.0.1
will-i-am:node-js-getting-started William$
Heroku again ..
Once dependencies are installed, you will be ready to run your app locally.
Start your application locally using the
heroku local
command,
which was installed as part of the Toolbelt:
heroku local web
will-i-am:node-js-getting-started William$ heroku local web
Downloading forego-0.16.1 to /Users/William/.heroku... done
forego | starting web.1 on port 5000
web.1 | Node app is running on port 5000
Just like Heroku, heroku local
examines the Procfile to determine what to run.
Open http://localhost:5000 with your web browser.
You should see your app running locally.
To stop the app from running locally, in the CLI, press Ctrl+C to exit.
Heroku has done well, putting these instructions together for the beginner,
such as myself. Are you ready to add something to your app and then push
your local changes ?
Go to Heroku's next step, Push Local Changes, and follow through to the end.
Remaining steps in the Heroku tutorial:
Push local changes
Provision add-ons
Start a console
Define config vars
Provision a database
**Next steps
TODO: place this somewhere appropriate
when you see the term, semver, think Semantic Versioning Specification semver
Do we need a gulp.js file ?
From the commands section, we have this:
Dated info: 20160217 : This file addition is no longer in the instructions of 20160214 !
old TODO: Create file : undone as yet 20160216Create a gulpfile.js at the root of your project:
var gulp = require('gulp');
gulp.task('default', function() {
// place code for your default task here
});
Now you can scaffold your very own web app:
mkdir my-webapp
cd my-webapp
yo gulp-webapp
: on 20160215 this becamseyo webapp
To start developing, run:
gulp serve
: fires up a local web server, opens http://localhost:9000
On a hunch, I run:
npm info
will-i-am:~ William$ npm info
{ name: 'nvm',
description: 'Install and managing different versions of node and installing local versions into repos.',
'dist-tags': { latest: '0.0.3' },
versions: [ '0.0.3' ],
maintainers: [ 'brianloveswords < brian@nyhacker.org >' ],
time:
{ modified: '2015-08-27T01:01:34.085Z',
created: '2012-07-16T16:35:20.586Z',
'0.0.0': '2012-07-16T16:35:21.056Z',
'0.0.1': '2012-07-16T18:14:33.941Z',
'0.0.2': '2013-11-22T15:08:01.851Z',
'0.0.3': '2014-02-25T15:15:45.587Z' },
author: 'Brian J. Brennan (@brianloveswords)',
repository: { type: 'git', url: 'git://github.com/brianloveswords/nvm.git' },
users:
{ pgte: true,
netroy: true,
msoliva: true,
lukeatdesignworks: true,
trycatch9264: true,
guidoschmidt: true,
waded: true,
yeahoffline: true,
sericaia: true,
jota: true,
nickleefly: true,
'cjr--': true,
tchcxp: true,
guananddu: true,
alexkval: true,
runningtalus: true,
jakemiller: true,
maninbucket: true,
joanmi: true,
'klap-webdevelopment': true,
ridermansb: true,
stany: true,
ericwbailey: true,
mihaii: true,
kruemelo: true,
oleang: true,
ubi: true,
sternelee: true,
yupmin: true,
dosevader: true,
aaalsubaie: true,
diroru: true },
homepage: 'https://github.com/brianloveswords/nvm',
keywords: [ 'local', 'node' ],
bugs: { url: 'https://github.com/brianloveswords/nvm/issues' },
license: 'http://wtfpl.org/',
readmeFilename: 'README.md',
version: '0.0.3',
dependencies: { mkdirp: '~0.3.3' },
devDependencies: {},
bin: { nvm: './bin/nvm' },
scripts: { test: 'echo "Error: no test specified" && exit 1' },
dist:
{ shasum: '1f39d2dfd16bf661534a3f7145134f4bbbef6da4',
tarball: 'http://registry.npmjs.org/nvm/-/nvm-0.0.3.tgz' },
deprecated: 'This is NOT the correct nvm. Visit http://nvm.sh and use the curl command to install it.',
directories: {} }
will-i-am:~ William$ npm info
The npm info
command caused the above results.
I notice the deprecated message:
deprecated: 'This is NOT the correct nvm.
Visit http://nvm.sh and use the curl command to install it.',
So, I make sure I am in the $HOME directory, I run:
nvm use 5.6
cd ~/
ls -aux
mkdir yo-stellar
cd yo-stellar
gulp serve
Success, in beautiful living color not shown here:
will-i-am: William$ cd yo-stellar
will-i-am:yo-stellar William$ gulp serve
[15:58:18] Requiring external module babel-register
[15:58:19] Using gulpfile ~/yo-stellar/gulpfile.babel.js
[15:58:19] Starting 'styles'...
[15:58:19] Starting 'scripts'...
[15:58:19] Starting 'fonts'...
[15:58:19] Finished 'fonts' after 13 ms
[15:58:19] Finished 'styles' after 299 ms
[15:58:19] Finished 'scripts' after 121 ms
[15:58:19] Starting 'serve'...
[15:58:19] Finished 'serve' after 43 ms
[BS] Access URLs:
------------------------------------
Local: http://localhost:9000
External: http://192.168.0.2:9000
------------------------------------
UI: http://localhost:3001
UI External: http://192.168.0.2:3001
------------------------------------
[BS] Serving files from: .tmp
[BS] Serving files from: app
I open four browsers, all addresses work:
------------------------------------
Local: http://localhost:9000
External: http://192.168.0.2:9000
------------------------------------
UI: http://localhost:3001
UI External: http://192.168.0.2:3001
We are again up and running, and now ..
I begin developing and because I am new to this ..
I will be using the scaffolded app to begin learning.
First thing I will be doing is changing the links in the code so they work.
We are done, I am done, you are done, good webapp building to all.
This is now our new start key: gulp serve
per the yeoman/generator-webapp reference.
LATE NOTE: We have built different apps now, using different tools.
DO NOT MISS THIS TOOL: Your First Heroku Node Program !
The beauty of this Heroku tool is it gives you everything you need, and
it is crystal clear. When you are done, your app is set up and in sync
with git and Heroku.
Miscellaneous:
TODO: 20160211 : Is this link of any value in this Gist creationix/nvm/nvm.sh ?
gulp serve:dist
: to preview the production-ready build to check if everything is ok
-
-
- currently line 245 ^^
-
Need to open another Terminal, and this didn't work.
Whilegulp serve
is running:
bower install --save jquery
TODO: 20160218 : Why did it not work and ..
QUESTION: Can jQuery be installed into this project bybrew
,brew-cask
ornpm
?
Answer : 2016021? :
The work continues this day.
20160310 : fixed broken link
20160226 : continue editing so clarity and simplicity shine
20160225 : still removing unneeded material, still simplifying and removing duplicates
20150224 : moving all stellar-sdk
material to its own Gist, not yet released
20150224 : continuing the removal of go
, grunt
and gb
material as not needed
20160221 : Created our app on Heroku. We are done here.
: When the building an app gist is ready, I will post it here.
20160220 : Learning to build, configure, change and host an app with the Heroku Node Tutorial.
20160219 : Writing the gist about building the app with Node.js and friends.
20160219 : Learning to build an app with my own code changes here and there.
20160219 : Learning to build an app with gulp
and their materials.
20160218 : Assembling all remove / uninstall directions to completely remove configs and packages.
20160218 : Instructions complete, now cleaning up presentation, removing duplications, notes, etc.
20160217 : Caught the fact generator-gulp-webapp
was changed to generator-webapp
2 days ago.
20160216 : Pushed to respository for editing, verifying of First Programs
20160215 : A final run through of installs and uninstalls in order, with descriptions.
20160214 : Sorting it all out, moving stellar-sdk
and beyond into its own Gist.
20160213 : Putting it all in order, adding go
tools : removed 20160224
20160212 : Adding Go-Stripe and Stripe-Go references : removed 20160224
20160211 : Adjusting the flow and verifying the veracity of all commands and instructions.
20160210 : Began adjusting Install Instructions to include Homebrew-Cask.
20160209 : Homebrew updated, upgraded and Homebrew-Cask installed.
20160209 : Discovered Homebrew Cask, keeps all binaries/systems current.
20160209 : Adding to collection of daily use commands, Tests and Testings.
20160209 : Added go
instructions.
20160209 : Finish the [Installation Commands]*#commands) and do a clean up.
20160208 : We run the Installation Commands.
20160207 : nvm
Installation Instructions are complete.
20160207 : Installation Commands distilled from Instructions, placed at top of page.
20160207 : Adding and Distilling out commands to run, noting comparisons with ruby-stellar-sdk
20160206 : This Gist established this day by This Gister