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

时间:2012-05-19 17:25:44

标签: node.js build package npm

我正在尝试使用grunt构建github jquery-ui library,但在运行npm install后,我仍然无法根据readme file运行命令。它只是给出了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 

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

13 个答案:

答案 0 :(得分:404)

最新版本的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 devDependencies部分中的grunt标记为仅开发模块。

答案 1 :(得分:26)

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

答案 2 :(得分:23)

如果您确实通过运行npm install -g grunt并且仍然说No command 'grunt' foundgrunt: command not found来安装Grunt软件包,那么快速而又脏的方法是将节点二进制文件链接到$ 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无关。

2013年2月更新 :您应该看看@tom-p's answer,它可以更好地解释发生了什么。 Tom为我们提供了真正的解决方案,而不是黑客攻击你的bashrc文件:两者都应该有效,但是你应该先尝试安装grunt-cli

答案 3 :(得分: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

答案 4 :(得分:11)

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

答案 5 :(得分:11)

还有一种方法可以在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

答案 6 :(得分:2)

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

npm install grunt -g

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

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

答案 7 :(得分:1)

  1. 全局安装全局命令:sudo npm install -g grunt-cli --unsafe-perm = true --allow-root

  2. 尝试运行咕unt声。

  3. 如果有此消息:

警告:

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

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

使用--force,继续。

3.1。检查是否已安装ruby(mac,应该安装):ruby -v

答案 8 :(得分:0)

有时您必须npm install package_name -g才能使用它。

答案 9 :(得分:0)

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

sudo apt-get remove ruby-bundler 

这对我有用。

答案 10 :(得分:0)

在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中)

  • 在我的Path环境变量中添加了位置。打开一个新的cmd提示符,grunt命令运行正常。

答案 11 :(得分:0)

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

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

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

现在 $ which grunt

应该放在外面 /usr/local/bin/grunt

欢呼

答案 12 :(得分:0)

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

%APPDATA%\npm

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

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