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

Posted

技术标签:

【中文标题】本地安装的 gulp 不在命令行中运行?【英文标题】:Locally installed gulp not running in command line? 【发布时间】:2016-02-14 03:18:07 【问题描述】:

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

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

cd 我的项目

npm 安装

由于我不想全局安装 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。

有没有办法让 gulp 在 cli 上运行而无需全局安装和更新 PATH 变量。

任何帮助将不胜感激 谢谢

【问题讨论】:

尝试删除 package.json 中的脚本 @mydo47 脚本被添加,因为它是使用本地安装的 gulp 的一种方式。 当你运行npm install。 Gulp 安装在您的本地文件夹中。 【参考方案1】:

没有什么对我有用。我遵循了每个人的所有指示。无论我做什么,我都无法运行 Gulp 命令。

为了解决这个问题,我打开了下载并运行 node.js 时自动安装的 Node.js 命令提示符。

在此命令提示符下,我可以运行以下命令:

npm install -g gulp
gulp -v

这可能是常识问题,但作为刚开始的人,没有人建议运行 node.js 命令提示符并从那里安装 gulp。我读到的所有内容都谈到了常规的 powershell 或具有提升权限的命令提示符。

【讨论】:

请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。【参考方案2】:

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

`npm bin`/gulp ...

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

【讨论】:

【参考方案3】:

在每个可能的地方猛击我的头之后我这样做的方式就是去你的应用程序并安装这样的 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

【讨论】:

【参考方案4】:

试试:

path_to_node path_to_gulp_js gulp_task

例子:

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

请尝试

定义脚本的一种方法是

"scripts": 
      "gulp": "gulp"
    

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

npm link gulp

它将您的全局安装 gulp 与您的本地项目链接起来。那就试试吧

 gulp -v

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

【讨论】:

npm link gulp 正确答案 npm run gulp 是我想要的。【参考方案7】:

就像@snorberhuis 所说。我让 gulp 在全球范围内工作的唯一方法是手动调用 gulp 我在 Jenkins 环境中构建

执行 Windows 批处理命令

cd your-app
npm install gulp

执行 Windows 批处理命令

cd your-app\node_modules\.bin 
gulp

【讨论】:

【参考方案8】:

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

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

【讨论】:

【参考方案9】:

检查您的项目node_modules/.bin 文件夹并确保gulp 在那里。我有一个案例,它不存在,我从未追查过原因。如果不存在,请尝试在本地重新安装 gulp 并查看它是否出现。如果这不起作用并且您厌倦了这个问题,gulp-cli 包肯定会解决它,但这不应该是您必须做的事情。

【讨论】:

【参考方案10】:

您可以在node_modules/.bin 中找到 npm 安装的任何可执行文件。因此,您可以使用以下命令在本地运行 gulp:

./node_modules/.bin/gulp

您可以在no command 'gulp' found - after installation找到更多信息

【讨论】:

bin 文件夹中只有一个gulp.js @AlexZhukovskiy 这是.bin 但是我在执行.\scripts\node_modules\.bin\gulp时得到了Local gulp not found in,为什么? 你确定你安装了gulp吗? .\scripts\node_modules\.bin 中是否还有其他二进制文件? scripts 是你的仓库吗? 在本地安装 gulp 后,node_modules\.bin\gulp 不存在。运行 npm link gulp 对我有用。【参考方案11】:

使用此命令在 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

【讨论】:

就像我提到的,我不想全局安装 gulp

以上是关于本地安装的 gulp 不在命令行中运行?的主要内容,如果未能解决你的问题,请参考以下文章

为啥要在全局和本地都安装 gulp?

前端自动化构建(gulp)

gulp构建工具的安装与使用

如何使用本地安装的 Gulp.js v4 和 `yarn --no-bin-links`?

为啥我们需要在全局和本地安装 gulp?

如何使用本地安装的Gulp.js v4与`yarn --no-bin-links`?