経緯
imagemin-gifsicle
でgifファイルを処理しようとしたら
Error: spawn MYPROJECT\node_modules\gifsicle\vendor\gifsicle.exe ENOENT
というエラーが表示されてしまいました。
ちなみに、
{
"devDependencies": {
"imagemin-gifsicle": "^7.0.0"
}
}
imagemin-gifsicle
は 7.0.0。
>node -v
v12.17.0
>npm -v
6.14.4
Node.js は 12.17.0, npm は 6.14.4 、 Nodist (0.9.1)使用環境です。
エラー文で検索すると
該当パッケージの Github の Issue が引っかかりました。
「node_modules
を一度削除してから入れ直したら?」「Node.js のバージョンが足りないのでは?」といったレスがあったので、試しに Node.js のバージョンを上げてみました。
Node.js のアップデート
>nodist 14.8.0
14.8.0
14.8.0 (global)
>node -v
v14.8.0
>npm -v
Sorry, there's a problem with nodist. Couldn't resolve npm version spec match : Couldn't find any matching version
npm が対応できなくなってしまいました。仕方ないので一度バージョンを戻してから npm をアップデートします。
とはいえ、 Nodist で npm をアップデートしようとしても上手くアップデートできないことがあった(0.9.1 未満のバージョン)のであまり気は進まないのですが。
npm のアップデート
>npm update -g npm
npm ERR! code EEXIST
npm ERR! path PATH\TO\NODIST-DIRECTORY\Nodist\bin\npm.cmd
npm ERR! Refusing to delete PATH\TO\NODIST-DIRECTORY\Nodist\bin\npm.cmd: is outside PATH\TO\NODIST-DIRECTORY\Nodist\bin\node_modules\npm and not a link
npm ERR! File exists: PATH\TO\NODIST-DIRECTORY\Nodist\bin\npm.cmd
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.
Nodist の npm.cmd
と npm
を削除せよ、とのこと。エラーの指示通り2つのファイルをリネームします( _npm.cmd
のような形で)。
>npm update -g npm
PATH\TO\NODIST-DIRECTORY\Nodist\bin\npx -> PATH\TO\NODIST-DIRECTORY\Nodist\bin\node_modules\npm\bin\npx-cli.js
PATH\TO\NODIST-DIRECTORY\Nodist\bin\npm -> PATH\TO\NODIST-DIRECTORY\Nodist\bin\node_modules\npm\bin\npm-cli.js
+ npm@6.14.8
added 17 packages from 3 contributors, removed 18 packages and updated 22 packages in 25.885s
>npm -v
6.14.4
あれ、上がっていない……。
やり方がまずかったのだろうと思い検索。
以前調べたときのコマンドと異なるコマンドが引っかかったのでこちらを試します。
>nodist npm global 6.14.7
npm 6.14.7
https://codeload.github.com/npm/cli/tar.gz/v6.14.7 [============= ] 4717/5502 KiB 85% 0.1s
>npm -v
6.14.7
上がりました。それでは、改めて Node.js のバージョンを上げます。
>nodist 14.8.0
14.8.0
14.8.0 (global)
>npm -v
6.14.7
npm がエラーにならずに済みました。これで大丈夫そうです。
imagemin-gifsicle
の動作確認
Node.js も npm もバージョンが上がったのでもう一度パッケージをインストールしてやり直してみます。
node_modules
と念のため yarn.lock
も削除して、インストール実施。
> yarn
yarn install v1.22.4
## 略
OK。
> gulp
[XX:XX:XX] Starting 'imageminify'...
[XX:XX:XX] gulp-imagemin: Minified 3 images (saved 46.6 kB - 67.1%)
OKです。エラーが表示されなくなりました。