philkunz philkunz - 1 year ago 124
Javascript Question

Using gulp without global gulp //edit: and without linking to the bin js file

I have a gulpfile.js that runs through perfectly when typing

into the commandline.

All the
bash command really does is calling the specified js file in
package.json >> bin >> gulp
of the globally installed gulp.

Now I want to run the gulpfile without the globally installed gulp by simply typing
node gulpfile.js
which fails obviously and already has been mentioned quite often, despite gulp being installed locally and required at the beginning of the

Using gulp without the cli tool would make it possible to use gulp as part of other npm plugins very easily.


Requiring another gulpfile.js works from an original gulpfile.js when this original gulpfile.js has been started via the gulp cli tool.


What is the best way of running/requiring gulp without the need for the global cli gulp tool (//edit: or linking to it locally)? e.g. being able to simply require it from another js file when gulp is only a locally installed dependency. (in other words starting gulp programmatically from inside JS without CLI intervention of any kind)

Answer Source

In package.json

"scripts": {
   "gulp": "gulp"  

And then this command npm run gulp Also npm provides the ability to pass extra parameters to your commands. This is only the case for npm >= 2.0

Update: Without bin link

You can check the node_modules/.bin/gulp or node_modules/gulp/bin/gulp.js file to see how you can start gulp (Line 129 is interesting)

I think this should work:

var gulp = require('gulp');

gulp.task('default', function() {
    console.log('do something');

gulp.start.apply(gulp, ['default']);