Locally installed gulp not running in command line?

橙三吉。 提交于 2020-05-24 21:12:05

问题


I am new to nodejs and gulp stuff. I working on a nodejs project in which I have to run jslint on all the files. I am using gulp for this purpose.

My problem is that In order to run gulp on cli I don't want to install gulp globally and also does not want to update my path variable, So I have installed gulp and other node modules in my project locally using the package.json file

cd myproject

npm install

Since I don't want to install gulp globally and want to run the local gulp I have added script in my package.json file like this as given in this question

{
  "name": "",
  "version": "1.0.0",
  "main": "index.js",
  "private": true,
  "dependencies": {
    "async": "1.5.0"
  },
  "devDependencies": {
    "gulp": "^3.9.0",
    "gulp-jslint": "^0.2.2"
  },
  "scripts": {
      "gulp": "./node_modules/.bin/gulp"   // is this correct?
    }
}

Add added a gulpfile.js inside my myproject folder

var gulp = require('gulp'); 

// include plug-ins
var jslint = require('gulp-jslint');

// JS hint task
gulp.task('lint', function() {
  gulp.src('./common/srp/*.js')
    .pipe(jslint())
    .pipe(jslint.reporter('default'));
});

gulp.task("default", ["lint"]);

But now on my command line inside myproject folder, when I run gulp and gulp lint I get an error

user1-VirtualBox:~/myproject$ gulp lint

/usr/local/node-v0.10.26-linux-x64/bin/gulp No such file or directory

Its looking for gulp in the global node module.

Is there a way to make gulp run on cli without installing globally and updating PATH variable.

Any help will be appreciated Thanks


回答1:


You can find any executable installed by npm in node_modules/.bin. So you can run gulp locally using:

./node_modules/.bin/gulp

You can find more information at no command 'gulp' found - after installation




回答2:


With your code you should be able to run command npm run gulp

Please try

One way to define script is

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

If in case you are not able to run gulp command in your project, run

npm link gulp

It will link your global install gulp with your local project. Then try

 gulp -v

If it is showing you the version then you are done. Now you can run any gulp command as you want.




回答3:


Scripts defined in package.json are accessed through NPM, i.e. npm run-script gulp. I imagine you're trying to run plain old gulp, which should fail since you didn't install it globally.

The scripts section won't automatically create an alias, which I think is your mistake here. You could define one yourself or create a simple bash script if you don't want to type it every time.




回答4:


Try:

path_to_node path_to_gulp_js gulp_task

Example:

node\node.exe node_modules\gulp\bin\gulp.js build



回答5:


Like @snorberhuis said. The only way for me to get gulp to work globally was to call gulp manually I am building in a Jenkins environment

Execute Windows Batch Command

cd your-app
npm install gulp

Execute Windows Batch Command

cd your-app\node_modules\.bin 
gulp



回答6:


Just another alternative that will work locally but will give you global like feeling. Add to your shell config i.e. ~/.bash_profile the following export PATH=$PATH:./node_modules/.bin you have to source that file, execute rehash or just open a new shell and then gulp (and any other script inside that folder) shall be available as a global command.




回答7:


Check in your project node_modules/.bin folder and make sure gulp is in there. I had a case where it wasn't there that I never tracked down the reason for. If it isn't there, try re-installing gulp locally and see if it shows up. If that doesn't work and you get tired of the problem, the gulp-cli package will fix it for sure, but that shouldn't be something you have to do.




回答8:


The way I did this after bashing my head every possible place is simply going to your Application and install npm dependencies like this:

1- E:\webra-jenkins\Code\trunk\WebRa.Web>npm install

Once npm installed then go this directory

2- [%Application_path%]\node_modules\.bin

And execute the gulp and give your file/task, like this:

3-[%Application_path%]\node_modules\.bin>gulp gulpfile --tasks

In my case as I saw the following lines... I got the inner happiness

18:06:36] Working directory changed to [%Application_path%]
[18:06:37] Tasks for [%Application_path%]\gulpfile.js

Now you can run your tasks 1 by one.

[%Application_path%]\node_modules\.bin>gulp pack-vendor-js



回答9:


The simplest solution I know of is to use npm bin:

`npm bin`/gulp ...

This keeps you away from hard-coding any paths.




回答10:


Globally install gulp in C:\Users\%USERNAME% using this command

npm install –g gulp

You can install any other gulp methods you need to use.. Ex:

npm install -g gulp-concat
npm install -g gulp-uglify
npm install -g gulp-replace

Then at the directory you wish to use GULP. Open the command prompt (Shift + RightClick) then install locally and you'll be able to execute gulp.

npm install gulp

You can install any other gulp methods you need to use.. Ex:

npm install gulp-concat
npm install gulp-uglify
npm install gulp-replace


来源:https://stackoverflow.com/questions/33677545/locally-installed-gulp-not-running-in-command-line

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!