Paquete de nodo (Grunt) instalado pero no disponible

Estoy intentando construir una biblioteca github jquery-ui usando grunt , pero después de ejecutar npm install , todavía no puedo ejecutar el comando de acuerdo con el archivo readme . Simplemente da 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 

Estoy confundido, ¿qué me estoy perdiendo por favor?

Las herramientas de línea de comandos no están incluidas con la versión más reciente de Grunt (0.4 al momento de escribir), sino que debe instalarlas por separado.

Esta es una buena idea, ya que significa que puede tener versiones diferentes de Grunt ejecutándose en diferentes proyectos, pero aún así usar el buen comando conciso grunt para ejecutarlos.

Entonces, primero instale las herramientas grunt cli globalmente:

 npm install -g grunt-cli 

(o posiblemente sudo npm install -g grunt-cli ).

Puede establecer que está funcionando escribiendo grunt --version

Ahora puede instalar la versión actual de Grunt local para su proyecto. Entonces, desde la ubicación de su proyecto …

 npm install grunt --save-dev 

El modificador save-dev no es estrictamente necesario, pero es una buena idea porque marcará ronco en su sección package.json devDependencies como un módulo de solo desarrollo.

Agregue /usr/local/share/npm/bin/ a su $PATH

Si usted ha instalado el paquete Grunt ejecutando npm install -g grunt y aún dice ‘ No command 'grunt' found o grunt: command not found , una manera rápida y sucia de hacerlo funcionar es vincular los binarios de nodo a su $ PATH manualmente.

En MacOSX / Linux puede agregar esta línea a su archivo ~/.bash_profile o ~/.bashrc .

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

Probablemente deba reemplazar /usr/local/Cellar/node/HEAD/bin por la ruta donde se encuentran los binarios de su nodo.

Si esto es rápido y sucio para mí, es porque todo debería funcionar sin hacerlo, pero por un motivo desconocido, un enlace parece estar roto. Como nadie en el IRC podría decirme por qué sucedió esto, encontré mi propia forma de hacerlo funcionar (ronco).

PD: Esto debería ayudarte a hacer trabajos de gruñidos, esta respuesta no está relacionada con jquery-ui.

Actualización 02/2013 : Debería echarle un vistazo a la respuesta de @ tom-p, que explica mejor lo que está sucediendo. Tom nos da la solución real en lugar de piratear su archivo bashrc: ambos deberían funcionar, pero primero debería intentar instalar grunt-cli .

En mi caso, necesito modificar el archivo / usr / local / bin / grunt en la línea 1 (no lo hagas):

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

Editado:

Para evitar problemas, creé un enlace con el nombre de “nodo” porque muchos otros progtwigs todavía usan el comando “nodo”.

  sudo ln -s /usr/bin/nodejs /usr/sbin/node 

Hay una forma más de ejecutar ronco en Windows, sin agregar nada globalmente. Este es un caso en el que no tiene que hacer nada con% PATH%

si tiene instalado grunt y grunt-cli (sin el modificador -g). Ya sea por:

 npm install grunt-cli npm install grunt@0.4.5 

O al tener eso en su archivo packages.json como:

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

Puede llamar a grunt desde su instalación local de la siguiente manera:

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

Esta es una solución para aquellos que, por alguna razón, no quieren o no pueden jugar con PATH, o tienen algo más que lo estropea todo el tiempo, por ejemplo en un agente de desarrollo.

Editar: Se agregaron versiones ya que el grunt-cli funciona con gruñido> 0.3

En WIN7 tuve que agregar manualmente la ruta a la carpeta npm (que contiene el elusivo archivo ‘grunt’) a la variable de entorno Windows PATH.
En mi caso, eso fue C:\Users\mhaagsma\AppData\Roaming\npm

La forma correcta de instalar grunt es ejecutando este comando:

 npm install grunt -g 

(Anote “sudo” al comando de arriba si recibe un mensaje de error de EACCESS)

-g hará que npm instale el paquete globalmente, por lo que podrá usarlo siempre que lo desee en su máquina actual.

Algunas veces tienes que npm install package_name -g para que funcione.

Otra solución es eliminar el bundler ubuntu en mi caso que utilicé:

 sudo apt-get remove ruby-bundler 

Eso funcionó para mí.

En Windows, parte del misterio parece ser que npm instala el archivo Grunt.cmd. Mientras estaba en mi caja Linux, solo tenía que ejecutar sudo npm install -g grunt-cli, en mi computadora portátil con Windows 8, Grunt se colocó en el directorio ‘.npm-global’:% USER_HOME% \. Npm-global y yo Tuve que agregar eso al Camino.

Entonces en Windows mis pasos fueron:

  • npm install -g grunt-cli

  • averiguar dónde diablos estaba grunt.cmd (creo que para algunos es en% USER_HOME% \ App_Data \ Roaming)

  • Agregué la ubicación a mi variable de entorno Path. Abrió un nuevo símbolo del sistema cmd y el comando rondar funcionó bien.