Install Node, NPM (and then Grunt and Bower globally) in Vagrant

I followed this sense to install a bunch of core dependencies for PHP development, but the one I really needed and I didn't need to be able to work, but I still have to install Node, NPM (and then Grunt and Bower globally) in Vagrant. I saw answers like this one , but it never appears to complete the installation (i.e. I cannot install bower and grunt). There is a nodejs package via apt-get that seems to install Node (and I can install NPM from there), but the version seems too old for Bower, so I turned to the manual approach. Thanks for any help.

Update

Here is my bootstraph.sh file:

 #!/usr/bin/env bash echo ">>> Starting Install Script" # Update sudo apt-get update # Install MySQL without prompt sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password root' sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password root' echo ">>> Installing Base Items" # Install base items sudo apt-get install -y curl wget build-essential python-software-properties python g++ make echo ">>> Adding PPA and Installing Server Items" # Add repo for latest PHP sudo add-apt-repository -y ppa:ondrej/php5 # Add NodeJS repository sudo add-apt-repository -y ppa:chris-lea/node.js # Update Again sudo apt-get update # Install the Rest sudo apt-get install -y php5 apache2 libapache2-mod-php5 nodejs php5-mysql php5-curl php5-gd php5-mcrypt php5-xdebug mysql-server echo ">>> Configuring Server" # xdebug Config cat << EOF | sudo tee -a /etc/php5/mods-available/xdebug.ini xdebug.scream=1 xdebug.cli_color=1 xdebug.show_local_vars=1 EOF # Apache Config sudo a2enmod rewrite curl https://gist.github.com/fideloper/2710970/raw/5d7efd74628a1e3261707056604c99d7747fe37d/vhost.sh > vhost sudo chmod guo+x vhost sudo mv vhost /usr/local/bin # Symlink /var/www to project web root sudo rm -rf /var/www sudo ln -s /vagrant/ /var/www # PHP Config sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php5/apache2/php.ini sed -i "s/display_errors = .*/display_errors = On/" /etc/php5/apache2/php.ini sudo service apache2 restart echo ">>> Installing NPM, Grunt CLI and Bower" curl https://npmjs.org/install.sh | sh sudo npm install -g grunt-cli bower echo ">>> Installing Composer" # Composer curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer 
+7
vagrant npm bower
source share
2 answers

Found the following that works well:

 #!/usr/bin/env bash echo "--- Let get to work. Installing now. ---" echo "--- Updating packages list ---" sudo apt-get update echo "--- MySQL time ---" sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password root' sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password root' echo "--- Installing base packages ---" sudo apt-get install -y vim curl python-software-properties echo "--- Updating packages list ---" sudo apt-get update echo "--- We want the bleeding edge of PHP ---" sudo add-apt-repository -y ppa:ondrej/php5 echo "--- Updating packages list ---" sudo apt-get update echo "--- Installing PHP-specific packages ---" sudo apt-get install -y php5 apache2 libapache2-mod-php5 php5-curl php5-gd php5-mcrypt mysql-server-5.5 php5-mysql git-core echo "--- Installing and configuring Xdebug ---" sudo apt-get install -y php5-xdebug cat << EOF | sudo tee -a /etc/php5/mods-available/xdebug.ini xdebug.scream=1 xdebug.cli_color=1 xdebug.show_local_vars=1 EOF echo "--- Installing node.js ---" sudo apt-get update sudo apt-get install -y python g++ make sudo add-apt-repository -y ppa:chris-lea/node.js sudo apt-get update sudo apt-get install -y nodejs echo "--- Installing Ruby ---" \curl -L https://get.rvm.io | bash -s stable source /usr/local/rvm/scripts/rvm rvm requirements rvm install ruby rvm use ruby --default rvm rubygems current echo "--- Enabling mod-rewrite ---" sudo a2enmod rewrite echo "--- Setting document root ---" sudo rm -rf /var/www sudo ln -fs /vagrant/public /var/www echo "--- Turn on errors ---" sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php5/apache2/php.ini sed -i "s/display_errors = .*/display_errors = On/" /etc/php5/apache2/php.ini sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf echo "--- Restarting Apache ---" sudo service apache2 restart echo "--- Install Composer (PHP package manager) ---" curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer # Laravel stuff here, if you want echo "--- All done, enjoy! :) ---" 

Source: https://github.com/JeffreyWay/Vagrant-Setup

+5
source share

We use n to control node.js versions for both our Vagrant VM and cloud boxes. We use Ansible to control the installation, but it can be easily reached with bash, something like:

 # Install n n_directory='/opt/n' git clone https://github.com/visionmedia/n.git $n_directory cd $n_directory make install # Install node.js/npm using n node_version='0.10.24' n $node_version # Install the global dependencies npm install -g grunt-cli bower 

It depends on n and npm available on $PATH .

+2
source share

All Articles