javascript - instalar - install grunt windows
Los plugins de Grunt no están instalados en la ubicación actual (5)
Estoy trabajando con Mac OS X 10.7.5 y estoy usando Grunt para concatenar algunos archivos js y minimizarlos. Ahora quiero minimizar también mis archivos css. Como ronco no proporciona ninguna funcionalidad, quería instalar un plugin grunt para eso. De acuerdo con las instrucciones, tengo que hacer un cd en la carpeta raíz de mi proyecto e instalar el complemento con npm. Entonces hice lo siguiente:
cd <PROJECT_ROOT>
npm install grunt-contrib-css
Las instrucciones para el complemento están aquí: https://npmjs.org/package/grunt-contrib-mincss . Abrí mi archivo grunt.js y agregué
grunt.loadNpmTasks(''grunt-contrib-mincss'');
Pero cuando trato de correr gruñir, solo obtengo
Local Npm module "grunt-contrib-mincss" not found. Is it installed?
<WARN> Task "mincss" not found. Use --force to continue. </WARN>
La instalación funciona sin ningún problema y npm ls no enumera el módulo.
¿Alguna idea de lo que hice mal? ¡Muchas gracias!
ACTUALIZADO
Cuando participo en un proyecto como este
cd ~/Sites/path/to/project
y luego instala el complemento
sudo npm install grunt-contrib-mincss
el módulo está realmente instalado en
~/node_modules/grunt-contrib-mincss
Pude copiar los archivos en el directorio raíz de mi proyecto (que funciona), pero es un poco extraño ¿no?
ACTUALIZACIÓN 2 He actualizado el nodo y lo intenté nuevamente. Debajo está la salida de la consola.
me:~ Fritz$ node -v
v0.8.10
me:~ Fritz$ npm -v
1.1.62
me:~ Fritz$ mkdir ./Sites/npm-test
me:~ Fritz$ cd ./Sites/npm-test/
me:npm-test Fritz$ sudo npm install grunt-contrib-mincss
Password:
npm http GET https://registry.npmjs.org/grunt-contrib-mincss
npm http 304 https://registry.npmjs.org/grunt-contrib-mincss
npm http GET https://registry.npmjs.org/gzip-js
npm http GET https://registry.npmjs.org/clean-css
npm http GET https://registry.npmjs.org/grunt-contrib-lib
npm http 304 https://registry.npmjs.org/gzip-js
npm http 304 https://registry.npmjs.org/clean-css
npm http 304 https://registry.npmjs.org/grunt-contrib-lib
npm http GET https://registry.npmjs.org/crc32
npm http GET https://registry.npmjs.org/deflate-js
npm http GET https://registry.npmjs.org/optimist
npm http 304 https://registry.npmjs.org/deflate-js
npm http 304 https://registry.npmjs.org/crc32
npm http 304 https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/wordwrap
[email protected] ../../node_modules/grunt-contrib-mincss
├── [email protected]
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected])
¿Por qué el plugin está instalado afuera? ¿O hay una forma de definir la ubicación real donde está instalado?
En mi caso, olvidé agregar:
grunt.loadNpmTasks(''grunt-jsdoc-plugin'');
a grunt.js, por lo que debería verse así:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
jsdoc : {
dist : {
src: [''frontend/js/**/*.js''],
dest: ''docs/frontend''
}
}
});
grunt.loadNpmTasks(''grunt-jsdoc-plugin'');
};
Esta forma de instalar funcionó para mí:
-
cd <PROJECT_ROOT>
. - Ejecute
npm install grunt-contrib-mincss
. Archivo de prueba creado en el directorio actual con el siguiente contenido de prueba:
module.exports = function(grunt) { grunt.initConfig({ mincss: { compress: { files: { "path/to/output.css": ["path/to/input_one.css", "path/to/input_two.css"] } } } }); grunt.loadNpmTasks(''grunt-contrib-mincss''); grunt.registerTask(''default'', ''mincss''); };
Mi estructura de directorios se ve así en este momento (compruebe esto, si algunos archivos no están allí o en alguna otra carpeta, entonces puede ser una razón por la que no funciona):
<PROJECT_ROOT> / node_modules / grunt-contrib-mincss/ grunt.js
Ejecutar
grunt
en la terminal.
Script funcionó.
Posibles razones por las que no funcionó en su caso:
- Instaló el plugin globalmente (con el argumento -g).
- Lo instaló en alguna subcarpeta (grunt.js y node_modules deben estar en la misma carpeta).
Compruébelo por favor.
He visto casos en los que no había un package.json
archivo package.json
presente provocó que los módulos se instalaran globalmente. No estoy seguro de qué versión se estaba ejecutando en ese momento, ya que no era mi máquina.
La próxima vez intente ejecutar npm init
antes de instalar los módulos. Después de eso, instale usando npm install grunt-contrib-css --save
para que se agregue a su archivo package.json
. También puede usar --save-dev
para que se agregue a sus devDependencies.
Si echas un vistazo debajo de la carpeta grunt-contrib-mincss, hay un archivo Léame, cambiaron el nombre de grunt- contrib - mincss a grunt- contrib - cssmin .
de todos modos, no es tu (y la mía) falla. XD
Tuve un problema similar en Ubuntu 12.04 para el módulo grunt-jasmine-task
(el mismo mensaje de error que el anterior). Esto resolvió el problema para mí:
- Cree manualmente la carpeta
node_modules
en la raíz del proyecto. - Ejecute
npm install grunt-jasmine-task
nuevamente.