我正在尝试使用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
我很困惑,我错过了什么?
答案 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' found
或grunt: 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)
全局安装全局命令:sudo npm install -g grunt-cli --unsafe-perm = true --allow-root
尝试运行咕unt声。
如果有此消息:
警告:
您需要在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
]