189

我正在尝试使用 构建一个github jquery-ui 库grunt,但是运行后npm install我仍然无法根据自述文件运行命令。它只是给出No command 'grunt' found

james@ubuntu:~/Documents/projects/ad2/lib/jquery-ui$ grunt build
No command 'grunt' found, did you mean:
 Command 'grun' from package 'grun' (universe)
grunt: command not found
james@ubuntu:~/Documents/projects/ad2/lib/jquery-ui$ npm ls
jquery-ui@1.9.0pre /home/james/Documents/projects/ad2/lib/jquery-ui
├─┬ grunt@0.3.9 
│ ├── async@0.1.18 
│ ├── colors@0.6.0-1 
│ ├─┬ connect@1.8.7 
│ │ ├── formidable@1.0.9 
│ │ ├── mime@1.2.5 
│ │ └── qs@0.5.0 
│ ├── dateformat@1.0.2-1.2.3 
│ ├─┬ glob-whatev@0.1.6 
│ │ └─┬ minimatch@0.2.4 
│ │   └── lru-cache@1.0.6 
│ ├─┬ gzip-js@0.3.1 
│ │ ├── crc32@0.2.2 
│ │ └── deflate-js@0.2.2 
│ ├── hooker@0.2.3 
│ ├─┬ jshint@0.5.9 
│ │ ├── argsparser@0.0.6 
│ │ └─┬ minimatch@0.2.4 
│ │   └── lru-cache@1.0.6 
│ ├─┬ nodeunit@0.6.4 
│ │ ├── tap-assert@0.0.10 
│ │ └─┬ tap-producer@0.0.1 
│ │   ├── inherits@1.0.0 
│ │   ├── tap-results@0.0.2 
│ │   └── yamlish@0.0.5 
│ ├─┬ nopt@1.0.10 
│ │ └── abbrev@1.0.3 
│ ├─┬ prompt@0.1.12 
│ │ ├── pkginfo@0.2.3 
│ │ └─┬ winston@0.5.11 
│ │   ├── eyes@0.1.7 
│ │   ├─┬ loggly@0.3.11 
│ │   │ └── timespan@2.2.0 
│ │   └── stack-trace@0.0.6 
│ ├── semver@1.0.13 
│ ├─┬ temporary@0.0.2 
│ │ └── package@1.0.0 
│ ├── uglify-js@1.0.7 
│ ├── underscore@1.2.4 
│ └── underscore.string@2.1.1 
├── grunt-compare-size@0.1.4 
├─┬ grunt-css@0.2.0 
│ ├── csslint@0.9.8 
│ └── sqwish@0.2.0 
├── grunt-html@0.1.1 
├── request@2.9.153 
├─┬ rimraf@2.0.1 
│ └── graceful-fs@1.1.8 
└─┬ testswarm@0.2.2 
  └── request@2.9.202 

我很困惑,请问我错过了什么?

4

13 回答 13

417

命令行工具不包含在最新版本的 Grunt(撰写本文时为 0.4)中,您需要单独安装它们。

这是一个好主意,因为这意味着您可以在不同的项目上运行不同版本的 Grunt,但仍然使用 nice concisegrunt命令来运行它们。

所以首先全局安装 grunt cli 工具:

npm install -g grunt-cli

(或可能sudo npm install -g grunt-cli)。

您可以通过键入来确定这是有效的grunt --version

现在您可以将当前版本的 Grunt 本地安装到您的项目中。因此,从您项目的位置...

npm install grunt --save-dev

这个save-dev开关并不是绝对必要的,但它是一个好主意,因为它将在其 package.json devDependencies 部分中将 grunt 标记为仅用于开发的模块。

于 2013-02-19T09:09:51.893 回答
26

添加/usr/local/share/npm/bin/到您的$PATH

于 2012-10-08T16:50:49.813 回答
24

如果您确实通过运行安装了 Grunt 包npm install -g grunt,但它仍然显示为No command 'grunt' foundor grunt: command not found,那么一种快速而肮脏的方法是手动将节点二进制文件链接到您的 $PATH 。

在 MacOSX/Linux 上,您可以将此行添加到您的~/.bash_profileor~/.bashrc文件中。

PATH=$PATH:/usr/local/Cellar/node/HEAD/bin # Add NPM binaries

您可能应该替换/usr/local/Cellar/node/HEAD/bin为可以找到节点二进制文件的路径。

如果这对我来说又快又脏,那是因为如果不这样做,一切都应该正常工作,但由于未知原因,链接似乎已损坏。由于 IRC 上没有人能告诉我为什么会发生这种情况,我找到了自己的方法来让它(咕哝)工作。

PS:这应该可以帮助您使 grunt 工作,这个答案与 jquery-ui 无关。

更新 02/2013:您应该看看@tom-p 的答案,它更好地解释了正在发生的事情。Tom 为我们提供了真正的解决方案,而不是破解您的 bashrc 文件:两者都应该工作,但您应该尝试安装grunt-cli

于 2012-08-15T18:06:16.333 回答
12

就我而言,我需要在第 1 行修改文件 /usr/local/bin/grunt (不要这样做):

 #!/usr/bin/env node //remove this line
 #!/usr/bin/env nodejs // and put this line to run with nodejs

编辑:

为避免出现问题,我创建了一个名为“node”的链接,因为许多其他程序仍然使用“node”命令。

 sudo ln -s /usr/bin/nodejs /usr/sbin/node
于 2014-04-01T21:35:20.380 回答
12

还有另一种在 Windows 上运行 grunt 的方法,无需全局添加任何内容。这是您不必对 %PATH% 做任何事情的情况

如果你安装了 grunt 和 grunt-cli(没有 -g 开关)。或者通过:

npm install grunt-cli
npm install grunt@0.4.5

或者通过在您的 packages.json 文件中包含它,例如:

"devDependencies": {
    "grunt-cli": "^1.2.0",
    "grunt": "^0.4.5",

您可以通过以下方式从本地安装中调用 grunt:

node node_modules\grunt-cli\bin\grunt --version

对于那些由于某些原因不想或不能使用 PATH 或者一直有其他东西弄乱它的人来说,这是一个解决方案,例如在构建代理上。

编辑:添加版本作为 grunt-cli 与 grunt > 0.3 一起使用

于 2016-08-19T19:22:14.170 回答
11

在 WIN7 上,我必须手动将 npm 文件夹的路径(其中包含难以捉摸的“grunt”文件)添加到 Windows PATH 环境变量中。
就我而言,那是C:\Users\mhaagsma\AppData\Roaming\npm

于 2014-07-30T15:55:20.937 回答
4

你好我在mac上遇到了这个问题,我所做的是

全局安装并以全局路径为前缀

sudo npm install grunt -g --prefix=/usr/local

现在 $ which grunt

应该输出 /usr/local/bin/grunt

干杯

于 2019-08-06T08:41:12.827 回答
2

安装 grunt 的正确方法是运行以下命令:

npm install grunt -g

(如果您收到 EACCESS 错误消息,请在上述命令前添加“sudo”)

-g 将使 npm 全局安装软件包,因此您可以随时在当前机器上使用它。

于 2012-09-12T08:35:37.277 回答
1
  1. 安装 grunt de manera global: sudo npm install -g grunt-cli --unsafe-perm=true --allow-root

  2. 尝试运行咕噜声。

  3. 如果您收到此消息:

警告:

您需要在 PATH 中安装 Ruby 和 Sass 才能执行此任务。

更多信息:https ://github.com/gruntjs/grunt-contrib-sass

使用--force,继续。

3.1。检查你是否安装了 ruby​​(mac,你应该有它): ruby​​ -v

于 2020-11-28T06:27:25.443 回答
0

有时你必须npm install package_name -g让它工作。

于 2012-05-19T17:27:10.280 回答
0

其他解决方案是在我使用的情况下删除 ubuntu bundler:

sudo apt-get remove ruby-bundler 

这对我有用。

于 2015-04-15T21:19:44.367 回答
0

在 Windows 上,部分谜团似乎是 npm 安装 Grunt.cmd 文件的位置。在我的 Linux 机器上,我只需要运行 sudo npm install -g grunt-cli,在我的 Windows 8 工作笔记本电脑上,Grunt 被放置在“.npm-global”目录中:%USER_HOME%\.npm-global,我必须将其添加到路径中。

所以在 Windows 上,我的步骤是:

  • npm install -g grunt-cli

  • 弄清楚 grunt.cmd 在哪里(我猜它在 %USER_HOME%\App_Data\Roaming 中)

  • 将位置添加到我的 Path 环境变量中。打开一个新的 cmd 提示符,grunt 命令运行良好。

于 2016-03-12T17:41:52.783 回答
0

在 Windows 10 上将此添加到您的路径:

%APPDATA%\npm

这引用了文件夹~/AppData/Roaming/npm

[假设您已经运行npm install -g grunt-cli]

于 2020-06-22T22:39:45.933 回答