本地安装的 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 不在命令行中运行?的主要内容,如果未能解决你的问题,请参考以下文章