user3357740
user3357740

Reputation: 43

Installing gulp on vagrant guest using npm via bash

Having a tough time getting this sorted. I'm using Ansible to provision a precise64 box with a bunch of stuff, including node:

- name: Node.js | Add the node.js PPA
  apt_repository: repo=ppa:chris-lea/node.js
  tags: nodejs

- name: Node.js | Install nodejs and npm
  apt: pkg=nodejs update_cache=yes
  tags: nodejs

Once the provisioning is complete, I have Vagrant run a bash script, to run some additional provisioning, including specific npm packages, like gulp:

#!/bin/bash

sudo -u vagrant -i -- npm install gulp -g --no-bin-links --prefix "/project";

It kinda looks like the bash script works:

==> project: [email protected] /project/lib/node_modules/gulp
==> project: ├── [email protected]
==> project: ├── [email protected]
==> project: ├── [email protected]
==> project: ├── [email protected]
==> project: ├── [email protected]
==> project: ├── [email protected] ([email protected])
==> project: ├── [email protected]
==> project: ├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
==> project: ├── [email protected]
==> project: ├── [email protected] ([email protected], [email protected], [email protected])
==> project: ├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
==> project: ├── [email protected] ([email protected], [email protected], [email protected], [email protected])
==> project: └── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])

And vagrant seems to think gulp's there:

vagrant@project:/project$ npm -v gulp
1.4.28

Just not executable:

vagrant@project:/project$ gulp
No command 'gulp' found, did you mean:
 Command 'gslp' from package 'ghostscript' (main)
gulp: command not found

If I manually install gulp on the guest, then it works:

vagrant@project:/project $ sudo npm install gulp -g
...
vagrant@project:/project$ gulp
[21:05:29] Using gulpfile /project/gulpfile.js
[21:05:29] Starting 'default'...
[21:05:29] Finished 'default' after 40 μs

So, I'm thinking I'm missing a symlink or something? I tried this via bash:

ln -s /usr/lib/node_modules/gulp/bin/gulp.js /usr/bin/gulp;

But, same deal.

Ideas?

Upvotes: 3

Views: 3280

Answers (2)

Max
Max

Reputation: 130

another option is to use alias

alias gulp="node_modules/gulp/bin/gulp.js"

(this line can be added to ~/.bashrc)

the purpose of this is to call gulp for given project (as you may have several projects and each with its own gulp)

Upvotes: 1

sheldonk
sheldonk

Reputation: 2694

Your npm install -g command says your gulp is installed in this directory. /project/lib/node_modules/gulp

Try symlinking ln -s /project/lib/node_modules/gulp/bin/gulp.js /usr/bin/gulp

The /project dir is most likely not in your PATH.

Upvotes: 1

Related Questions