繁体   English   中英

Grunt插件未安装在当前位置

[英]Grunt plugins are not installed in current location

我正在使用Mac OS X 10.7.5,我正在使用Grunt来连接一些js文件并缩小它们。 现在我想缩小我的CSS文件。 由于grunt没有提供任何功能,我想为此安装一个grunt插件。 根据说明我必须进入我的项目根文件夹并使用npm安装插件。 所以我做了以下事情:

cd <PROJECT_ROOT>
npm install grunt-contrib-css

插件的说明如下: https ://npmjs.org/package/grunt-contrib-mincss我打开了我的grunt.js文件并添加了

grunt.loadNpmTasks('grunt-contrib-mincss');

但是,当我试图运行咕噜声时,我才得到

Local Npm module "grunt-contrib-mincss" not found. Is it installed?
<WARN> Task "mincss" not found. Use --force to continue. </WARN>

安装工作没有任何问题,npm ls列出了模块。

我做错了什么想法? 非常感谢!

更新

当我进入这样的项目时

cd ~/Sites/path/to/project

然后安装插件

sudo npm install grunt-contrib-mincss

该模块实际安装在

~/node_modules/grunt-contrib-mincss

我可以将文件硬复制到我的项目根目录(这是有效的),但它有点奇怪不是吗?

更新2我已更新节点并再次尝试。 下面是控制台输出。

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
grunt-contrib-mincss@0.3.0 ../../node_modules/grunt-contrib-mincss
├── grunt-contrib-lib@0.3.0
├── gzip-js@0.3.1 (crc32@0.2.2, deflate-js@0.2.2)
└── clean-css@0.4.2 (optimist@0.3.4)

为什么插件安装在外面? 或者有没有办法定义安装它的实际位置?

我在Ubuntu 12.04上遇到类似的问题grunt-jasmine-task模块(与上面相同的错误信息)。 这解决了我的问题:

  1. 在项目的根目录中手动创建文件夹node_modules
  2. 再次运行npm install grunt-jasmine-task

这种安装方式对我有用:

  1. cd <PROJECT_ROOT>
  2. 运行npm install grunt-contrib-mincss
  3. 使用以下测试内容在当前目录中创建测试文件:

     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'); }; 
  4. 我的目录结构此时看起来像这样(请检查一下,如果某些文件不在那里或在其他文件夹中,那么它可能是它不起作用的原因):

     <PROJECT_ROOT> / node_modules / grunt-contrib-mincss/ grunt.js 
  5. 在终端中运行grunt

脚本有效。

在您的情况下它不起作用的可能原因:

  1. 您全局安装了插件(使用-g参数)。
  2. 您将其安装在某个子文件夹中(grunt.js和node_modules必须位于同一文件夹中)。

请检查一下。

我见过没有package.json文件的情况导致模块全局安装。 我不确定当时正在运行什么版本,因为它不是我的机器。

下次在安装模块之前尝试运行npm init 之后,使用npm install grunt-contrib-css --save将它添加到package.json文件中。 您还可以使用--save-dev将其添加到您的devDependencies中。

在我的情况下,我忘了添加:

grunt.loadNpmTasks('grunt-jsdoc-plugin');

到grunt.js,所以看起来应该是这样的:

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({

    jsdoc : {
      dist : {
        src: ['frontend/js/**/*.js'], 
        dest: 'docs/frontend'
      }
    }

  });

  grunt.loadNpmTasks('grunt-jsdoc-plugin');

};

如果你把咕噜-的contrib-mincss文件夹下的样子,有一个自述文件,他们从繁重的-contrib- mincss更名为咕噜-contrib- cssmin。

无论如何,这不是你(和我的)的错。 XD

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM