已安装但不可用的节点包(Grunt)

我正在尝试使用 grunt构建一个 Github jquery-ui 库,但是在运行 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

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

144360 次浏览

有时候,你必须 npm install package_name -g为它的工作。

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

在 MacOSX/Linux 上,您可以将这一行添加到 ~/.bash_profile~/.bashrc文件中。

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

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

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

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

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

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

npm install grunt -g

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

G 将使 npm 在全局范围内安装软件包,这样您就可以在当前计算机中随时使用它。

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

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

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

因此,首先在全球范围内安装 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 devDependency 部分中将 grunt 标记为一个仅限于开发的模块。

在我的示例中,我需要修改第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

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

另一个解决方案是删除我使用的 ubuntu 包:

sudo apt-get remove ruby-bundler

这招对我管用。

在 Windows 上,部分谜团似乎是 npm 在哪里安装 Grunt.cmd 文件。在我的 Linux 机器上,我只需要运行 sudo npm install-g Grunt-cli,在我的 Windows 8工作笔记本电脑上,Grunt 被放在’。Npm-global’目录:% USER _ HOME% 。Npm-global,我必须把它添加到 Path 中。

因此,在 Windows 上,我的步骤是:

  • Npm install-g grunt-cli

  • 找出 grunt.cmd 在哪里(我猜对于某些人来说它在% USER _ HOME% App _ Data Roaming 中)

  • 添加到我的路径环境变量,打开一个新的 cmd 提示符,grunt 命令运行正常。

还有一种方法可以在窗口上运行 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,或者一直有其他东西(例如在构建代理上)干扰 PATH 的人来说,这是一个解决方案。

编辑: 增加了 grunt-cli 在 grunt > 0.3下的版本

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

全局安装,前缀为全局路径

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

$ which grunt

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

干杯

在 Windows10上将这个添加到你的路径:

%APPDATA%\npm

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

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

  1. Instala grunt de manera global: sudo npm install-g grunt-cli —— safe-perm = true —— allow-root

  2. 试着跑步。

  3. 如果你有以下信息:

警告:

您需要在您的 PATH 中安装 Ruby 和 Sass,这样该任务才能正常工作。

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

使用,强迫,继续。

检查你是否已经安装了 Ruby (mac,你应该已经安装了) : ruby-v