升级至High Sierra后Sass与Grunt报错:找不到sass gem可执行文件
看起来你这是升级系统后碰到了两个关联问题:Ruby环境下的Sass Gem找不到,同时Grunt版本和旧插件不兼容。我给你一步步来解决:
1. 修复Sass Gem找不到的问题
报错提示can't find gem sass (>= 0.a) with executable sass,说明当前Ruby环境里没装Sass Gem,或者路径出了问题。直接执行以下命令安装即可:
gem install sass
如果遇到权限报错,加上sudo再试:
sudo gem install sass
要是还是不行,跑一下gem env检查GEM路径是否和你当前用的Ruby版本(2.5.0)对应,确保Gem安装到了正确的目录里。
2. 解决Grunt插件的Peer依赖警告
你装的Grunt版本太高了,而项目里的grunt-contrib-sass、grunt-contrib-imagemin这些插件都是很老的版本(比如0.4.1),它们只支持Grunt 0.4.x系列。有两种解决思路:
方案一:降级Grunt到兼容版本
如果想保留旧插件的配置不想改动,直接把Grunt降级到0.4.x:
npm install grunt@~0.4.0 --save-dev
这样就能满足所有旧插件的Peer依赖要求,警告会自动消失。
方案二:升级Grunt插件到最新版
如果项目允许更新插件,更推荐升级到兼容新版Grunt的插件版本,这样能获得更好的性能和安全性:
npm install grunt-contrib-sass grunt-contrib-imagemin grunt-contrib-uglify grunt-contrib-watch --save-dev
⚠️ 注意:升级后部分插件的配置可能有变化,比如新版grunt-contrib-sass默认用Dart Sass代替了Ruby Sass,如果你的项目依赖Ruby Sass的特性,需要在Grunt配置里指定implementation: require('sass')(或者继续使用Ruby Sass,但Dart Sass是官方推荐的替代方案)。
最后验证
完成上面两步后,重新运行grunt命令,应该就能正常执行sass:compressed任务了。
内容的提问来源于stack exchange,提问作者xylar

