5

jpg minify のプラグイン grunt-contrib-imagemin をテストしています。ただし、実行中の "imagemin:dynamic" (imagemin) タスクとして常に失敗しました 致命的なエラー: このソケットは閉じられています。

Source :
 grunt.initConfig({
        imagemin: { // Task
           dynamic: {                         // Another target
        files: [{
        expand: true,                  // Enable dynamic expansion
        cwd: 'src/',                   // Src matches are relative to this path
        src: ['**/*.{png,jpg,gif}'],   // Actual patterns to match
        dest: 'dist/'                  // Destination path prefix
      }]
    }
        }
    });
4

4 に答える 4

1

grunt-contrib-imagemin を再インストールしてみてください:

npm cache clean
npm install grunt-contrib-imagemin --save-dev
于 2014-12-11T18:02:14.107 に答える
1

問題:

するとき

npm install

次のエラーが表示されます。

 ? Request to https://raw.github.com/imagemin/jpegtran-bin/3.0.2/vendor/win/x64/jpegtran.exe failed
 ? jpegtran pre-build test failed
 i compiling from source
 × GotError: Request to http://downloads.sourceforge.net/project/libjpeg-turbo/1.4.0/libjpeg-turbo-1.4.0.tar.gz failed
   at ClientRequest.<anonymous> (YourApp\node_modules\grunt-contrib-imagemin\node_modules\imagemin\node_modules\imagemin-jpegtran\node_modules\jpegtr
n-bin\node_modules\bin-build\node_modules\download\node_modules\got\index.js:177:7)
   at ClientRequest.g (events.js:199:16)
   at ClientRequest.emit (events.js:107:17)
   at Socket.socketErrorListener (_http_client.js:271:9)
   at Socket.emit (events.js:107:17)
   at net.js:459:14
   at process._tickCallback (node.js:355:11)
aused By: Error: read ECONNRESET
   at exports._errnoException (util.js:746:11)
   at TCP.onread (net.js:559:26)

 gifsicle@3.0.1 postinstall YourApp\node_modules\grunt-contrib-imagemin\node_modules\imagemin\node_modules\imagemin-gifsicle\node_modules\gifsicle
 node lib/install.js

 ? Request to https://raw.github.com/imagemin/gifsicle-bin/3.0.1/vendor/win/x64/gifsicle.exe failed
 ? gifsicle pre-build test failed
 i compiling from source
 × GotError: Request to http://www.lcdf.org/gifsicle/gifsicle-1.87.tar.gz failed
   at ClientRequest.<anonymous> (YourApp\node_modules\grunt-contrib-imagemin\node_modules\imagemin\node_modules\imagemin-gifsicle\node_modules\gifsic
e\node_modules\bin-build\node_modules\download\node_modules\got\index.js:177:7)
   at ClientRequest.g (events.js:199:16)
   at ClientRequest.emit (events.js:107:17)
   at Socket.socketErrorListener (_http_client.js:271:9)
   at Socket.emit (events.js:107:17)
   at net.js:459:14
   at process._tickCallback (node.js:355:11)
aused By: Error: read ECONNRESET
   at exports._errnoException (util.js:746:11)
   at TCP.onread (net.js:559:26)

 optipng-bin@3.0.2 postinstall YourApp\node_modules\grunt-contrib-imagemin\node_modules\imagemin\node_modules\imagemin-optipng\node_modules\optipng-b
n
 node lib/install.js

 ? Request to https://raw.github.com/imagemin/optipng-bin/3.0.2/vendor/win/optipng.exe failed
 ? optipng pre-build test failed
 i compiling from source
 × GotError: Request to http://downloads.sourceforge.net/project/optipng/OptiPNG/optipng-0.7.5/optipng-0.7.5.tar.gz failed
   at ClientRequest.<anonymous> (YourApp\node_modules\grunt-contrib-imagemin\node_modules\imagemin\node_modules\imagemin-optipng\node_modules\optipng
bin\node_modules\bin-build\node_modules\download\node_modules\got\index.js:177:7)
   at ClientRequest.g (events.js:199:16)
   at ClientRequest.emit (events.js:107:17)
   at Socket.socketErrorListener (_http_client.js:271:9)
   at Socket.emit (events.js:107:17)
   at net.js:459:14
   at process._tickCallback (node.js:355:11)
aused By: Error: read ECONNRESET
   at exports._errnoException (util.js:746:11)
   at TCP.onread (net.js:559:26)

理由:

grunt-contrib-imagemin は 3 つの依存関係をダウンロードしてテストできません

imagemin-gifsicle

imagemin-optipng

imagemin-jpegtran

解決

  1. grunt-contrib-imagemin 0.9.4 バージョンをインストールします

    npm cache clear
    
    npm uninstall grunt-contrib-imagemin
    
    npm install --save-dev grunt-contrib-imagemin@.0.9.4
    
  2. ギフシクル

    ここからgifsicle.exe 32 ビットをダウンロードします。

    解凍し
    て、yourapp\node_modules\grunt-contrib-imagemin\node_modules\imagemin\node_modules\imagemin-gifsicle\node_modules\gifsicle\ に vendor というフォルダーを作成します。

    解凍したgifsicle.exeを vendor フォルダにコピーします

    これで、gifsicle の問題が修正されました。終了しないでください :)

  3. 最適化

    ここからoptipng.exeをダウンロードし、yourapp\node_modules\grunt-contrib-imagemin\node_modules\imagemin\node_modules\imagemin-optipng\node_module\optipng-bin\ に vendor というフォルダーを作成します。

    解凍したoptipng.exe をここにコピーします。これで、optipng の問題が修正されました。まだ終了しないでください:)

  4. jpegtran

    jpegtran.exelibjpeg-62.dllをダウンロード し、それらをベンダーフォルダー内に配置します。

    yourapp\node_modules\grunt-contrib-imagemin\node_modules\imagemin\node_modules\imagemin-jpegtran\node_module\jpegtran-bin\

やったー、あなたは終わった。そしてあなたの

 Grunt imagemin:dist

コマンドは正常に実行されます

覚えて

grunt を再度インストールすると、結果として grunt-contrib-imagemin がインストールされ、これらのフォルダーは上書きされません。ただし、最初のクリーン インストールでは、次の手順を実行する必要があります。

于 2015-07-03T04:24:00.540 に答える
0

私は同じ問題を抱えています。古いバージョンを試してみましたが、完全に機能しました。git リポジトリに問題があるので、これはあなただけではありません ;)

https://github.com/gruntjs/grunt-contrib-imagemin/issues/273

于 2014-12-12T08:31:47.503 に答える
0

Github Ticket #273: (Fatal error: This socket is closed)によると、これは jpegtran-bin Issue #54が原因です。発行された両方が解決され、現在クローズされています。

grunt-contrib-imagemin 0.9.2 をインストールすると、これを実行して解決しました

npm cache clean
npm install grunt-contrib-imagemin --save-dev
于 2015-01-26T16:26:03.630 に答える