本地安装的gulp没有在命令行中运行?

时间:2015-11-12 17:25:22

标签: node.js command-line gulp package.json

我是nodejs和gulp的新手。我在一个nodejs项目上工作,我必须在所有文件上运行jslint。我正在为此目的使用gulp。

我的问题是,为了在cli上运行gulp,我不想全局安装gulp,也不想更新我的路径变量,所以我在本地项目中安装了gulp和其他节点模块package.json文件

  

cd myproject

     

npm install

由于我不想全局安装gulp并希望运行本地gulp,我在我的package.json文件中添加了脚本,如this问题

中给出的那样
{
  "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?
    }
}

在我的myproject文件夹中添加了一个gulpfile.js

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"]);

但现在在myproject文件夹中的命令行上,当我运行gulp和gulp lint时出现错误

  

user1-VirtualBox:〜/ myproject $ gulp lint

     

/usr/local/node-v0.10.26-linux-x64/bin/gulp没有此类文件或   目录

它在全局节点模块中寻找gulp。

有没有办法在没有全局安装和更新PATH变量的情况下在cli上运行gulp。

任何帮助将不胜感激 感谢

10 个答案:

答案 0 :(得分:17)

您可以在node_modules/.bin中找到npm安装的任何可执行文件。所以你可以使用以下方式在本地运行gulp:

./node_modules/.bin/gulp

您可以在no command 'gulp' found - after installation

找到更多信息

答案 1 :(得分:5)

package.json中定义的脚本可通过NPM访问,即npm run-script gulp。我想你会尝试运行普通的gulp应该失败,因为你没有全局安装它。

脚本部分不会自动创建别名,我认为这是你的错误。您可以自己定义一个或创建一个简单的bash脚本,如果您不想每次都输入它。

答案 2 :(得分:5)

使用您的代码,您应该能够运行命令 npm run gulp

请尝试

定义脚本的一种方法是

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

如果您无法在项目中运行gulp命令,请运行

npm link gulp

它会将您的全局安装gulp链接到您的本地项目。然后尝试

 gulp -v

如果它显示的是版本,那么你就完成了。现在您可以根据需要运行任何gulp命令。

答案 3 :(得分:1)

像@snorberhuis说的那样。让我在全球范围内工作的唯一方法就是手动调用gulp 我正在詹金斯的环境中建设

执行Windows批处理命令

cd your-app
npm install gulp

执行Windows批处理命令

cd your-app\node_modules\.bin 
gulp

答案 4 :(得分:1)

另一种可以在本地工作的替代方案,但会给你全局的感觉。 添加到您的shell配置,即~/.bash_profile以下内容 export PATH=$PATH:./node_modules/.bin 你必须source该文件,执行rehash或者只是打开一个新的shell,然后gulp(以及该文件夹中的任何其他脚本)将作为全局命令使用。

答案 5 :(得分:1)

尝试:

path_to_node path_to_gulp_js gulp_task

示例:

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

答案 6 :(得分:0)

签入您的项目node_modules/.bin文件夹并确保gulp在那里。我有一个案例,它不存在,我从来没有追查到原因。如果不存在,请尝试在本地重新安装gulp并查看它是否显示。如果这不起作用并且你厌倦了这个问题,那么gulp-cli包肯定会修复它,但这不应该是你 要做的事情。

答案 7 :(得分:0)

在竭尽所能之后,我这样做的方法只是转到您的应用程序并安装如下所示的npm依赖项:

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

一旦安装了npm,就进入该目录

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

执行gulp并给出文件/任务,如下所示:

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

就我而言,看到以下几行...我得到内心的快乐

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

现在您可以一个接一个地运行任务了。

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

答案 8 :(得分:0)

我知道的最简单的解决方案是使用npm bin

`npm bin`/gulp ...

这使您无需对任何路径进行硬编码。

答案 9 :(得分:-3)

使用此命令在C:\ Users \%USERNAME%中全局安装gulp

npm install –g gulp

您可以安装需要使用的任何其他gulp方法。例如:

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

然后在您希望使用GULP的目录中。打开命令提示符(Shift + RightClick)然后在本地安装,您将能够执行gulp。

npm install gulp

您可以安装需要使用的任何其他gulp方法。例如:

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