gulp-imageminでjpgファイルを圧縮する時に遭遇したエラーと解決法
gulp-imagemin
で.jpgファイルを圧縮した時に遭遇したエラーと対策方法です。
出てきたエラー
Message:
dyld: Library not loaded: /usr/local/opt/libpng/lib/libpng16.16.dylib
Referenced from: <ディレクトリパス>/root/node_modules/mozjpeg/vendor/cjpeg
Reason: image not found
Details:
code: null
killed: false
stdout:
stderr: dyld: Library not loaded: /usr/local/opt/libpng/lib/libpng16.16.dylib
Referenced from: <ディレクトリパス>/root/node_modules/mozjpeg/vendor/cjpeg
Reason: image not found
failed: true
signal: SIGTRAP
cmd: <ディレクトリパス>/root/node_modules/mozjpeg/vendor/cjpeg -outfile /private/var/folders/b1/y8d6btqx665c9qc9dsts_47m0000gn/T/246634c8-f4ad-4cda-b80f-9a93f5c858b4 -quality 85 /private/var/folders/b1/y8d6btqx665c9qc9dsts_47m0000gn/T/a290cbb6-a4ed-4eeb-a4a5-8813877b99e6
timedOut: false
fileName: <ディレクトリパス>/root/src/images/pic.jpg
作業環境
作業環境は以下の通り。
MacOSX El Capitan
Node v6.11.1
package.json
はこんな感じ。
{
"name": "gulp_boilerplate",
"version": "1.0.0",
"description": "Basic setting of Gulp for create a new website",
"scripts": {
"start": "gulp",
"build": "gulp build"
},
"author": "",
"license": "ISC",
"devDependencies": {
"browser-sync": "^2.18.12",
"gulp": "^3.9.1",
"gulp-cached": "^1.1.1",
"gulp-clean": "^0.3.2",
"gulp-csscomb": "^3.0.8",
"gulp-eslint": "^4.0.0",
"gulp-html-beautify": "^1.0.1",
"gulp-imagemin": "^3.3.0",
"gulp-notify": "^3.0.0",
"gulp-plumber": "^1.1.0",
"gulp-postcss": "^7.0.0",
"gulp-rename": "^1.2.2",
"gulp-replace": "^0.6.1",
"gulp-sass": "^3.1.0",
"gulp-sourcemaps": "^2.6.0",
"gulp-strip-debug": "^1.1.0",
"imagemin-mozjpeg": "^6.0.0",
"imagemin-pngquant": "^5.0.1",
"node-notifier": "^5.1.2",
"postcss-cssnext": "^3.0.2",
"run-sequence": "^2.0.0"
}
}
該当箇所のGulpタスクの設定
そして、該当するGulpタスクは以下の部分。
// 画像最適化
gulp.task('optimize-img', () => {
return gulp.src(`${PATHS.src}**/*.{jpg,jpeg,gif,png,svg}`)
.pipe(plumber())
.pipe(imagemin([
pngquant({
quality: '70-85',
speed: 1,
floyd: 0
}),
mozjpeg({
quality: 85,
progressive: true
}),
imagemin.svgo(),
imagemin.optipng(),
imagemin.gifsicle()
]))
.pipe(gulp.dest(PATHS.dest));
});
パッケージの再インストール、brew update
など、色々試したが全く刃が立たず。。。
途方にくれていた所、本家のGithubの方にissuが上がってた。
解決方法
どうやら、gulp-imagemin v3.3.0
ではimagemin-mozjpeg
を使って圧縮かけると上記のようなエラーが出るらしく、imagemin-jpegtran
を使ってくれ。とのこと。
以下のように変更したらエラーは解消されました。
// 画像最適化
gulp.task('optimize-img', () => {
return gulp.src(`${PATHS.src}**/*.{jpg,jpeg,gif,png,svg}`)
.pipe(plumber())
.pipe(imagemin([
pngquant({
quality: '70-85',
speed: 1,
floyd: 0
}),
+ imagemin.jpegtran({
+ quality: 85,
+ progressive: true
+ }),
- mozjpeg({
- quality: 85,
- progressive: true
- }),
imagemin.svgo(),
imagemin.optipng(),
imagemin.gifsicle()
]))
.pipe(gulp.dest(PATHS.dest));
});
そもそものハマった原因
Githubのリリースページでは、v3.0.0が最新版になってるのに、npmの方ではバグのあるv3.3.0が最新版として配布されてた。
https://github.com/sindresorhus/gulp-imagemin/releases
https://www.npmjs.com/search?q=gulp-imagemin
紛らわしいなぁ。
最新バージョン戻したならnpmの方にも反映しといて欲しい。
Author And Source
この問題について(gulp-imageminでjpgファイルを圧縮する時に遭遇したエラーと解決法), 我々は、より多くの情報をここで見つけました https://qiita.com/chieeeeno/items/45b3f6f2370969964e00著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .