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

AJP*_*AJP 185 build package node.js npm

我试图建立一个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 
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*m P 408

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

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

首先在全球范围内安装grunt cli工具:

npm install -g grunt-cli
Run Code Online (Sandbox Code Playgroud)

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

您可以通过键入来确定其工作原理 grunt --version

现在,您可以在项目中安装当前版本的Grunt本地.从项目的位置来看......

npm install grunt --save-dev
Run Code Online (Sandbox Code Playgroud)

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

  • 不得不使用sudo运行 (10认同)
  • 运行npm install -g grunt-cli后,我在路径系统变量中找不到grunt文件夹路径 (5认同)
  • 如果这对您不起作用,请尝试卸载grunt和grunt-cli,然后再次执行此操作.只有我使用`sudo'才对我有用谢谢汤姆! (2认同)

Sam*_*roa 26

加入/usr/local/share/npm/bin/你的$PATH

  • 在ubuntu 13.10上添加`$ HOME/npm/bin`为我工作. (2认同)

ray*_*nco 24

如果您确实已经通过运行安装了Grunt软件包npm install -g grunt,它仍然可以说是No command 'grunt' found或者grunt: command not found,快速而又脏的方法是将节点二进制文件手动链接到$ PATH.

MacOSX上/ Linux下,你可以将此行添加到您~/.bash_profile~/.bashrc文件.

PATH=$PATH:/usr/local/Cellar/node/HEAD/bin # Add NPM binaries
Run Code Online (Sandbox Code Playgroud)

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

如果这对我来说既快又脏,那是因为一切都应该没有这样做,但由于一个未知的原因,链接似乎被破坏了.由于IRC上的任何人都无法告诉我为什么会发生这种情况,我找到了自己的方法(grunt).

PS:这应该可以帮助你做出咕噜咕噜的作品,这个答案与jquery-ui无关.

更新02/2013:你应该看看@ tom-p的答案,它可以更好地解释发生了什么.汤姆给了我们真正的解决方案,而不是黑客你的.bashrc文件:既要工作,但你应该尝试安装grunt-cli第一.


Edg*_*eal 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
Run Code Online (Sandbox Code Playgroud)

编辑:

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

 sudo ln -s /usr/bin/nodejs /usr/sbin/node
Run Code Online (Sandbox Code Playgroud)

  • 建设性的downvote,以阻止任何人手动编辑打包文件.对于你的问题,你需要`apt-get install nodejs-legacy`. (6认同)

小智 11

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


tom*_*jar 11

还有一种方法可以在Windows上运行grunt,而无需在全局添加任何内容.这种情况是您无需对%PATH%执行任何操作

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

npm install grunt-cli
npm install grunt@0.4.5
Run Code Online (Sandbox Code Playgroud)

或者在您的packages.json文件中包含:

"devDependencies": {
    "grunt-cli": "^1.2.0",
    "grunt": "^0.4.5",
Run Code Online (Sandbox Code Playgroud)

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

node node_modules\grunt-cli\bin\grunt --version
Run Code Online (Sandbox Code Playgroud)

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

编辑:添加版本,因为grunt-cli使用grunt> 0.3