簡體   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