如何使SolHint 4.5.4在pre-commit中正常显错及npm命令失效原因
问题解决:pre-commit中运行SolHint 4.5.4的两个问题
问题①:修改Shell脚本使其在pre-commit中显示彩色错误/警告且不生成文件
按以下步骤调整Shell脚本即可解决:
- 强制开启颜色输出:pre-commit默认会禁用终端颜色,在脚本里设置环境变量
FORCE_COLOR=1,强制SolHint输出彩色内容 - 直接输出到终端:不要让脚本生成任何文件,直接调用solhint并让输出直接流向终端(pre-commit会自动捕获并展示)
- 保留退出码:让脚本返回solhint的执行退出码,确保pre-commit能正确判断检查结果
示例脚本(保存为solhint-lint.sh):
#!/bin/bash # 强制开启颜色输出 export FORCE_COLOR=1 # 运行solhint,替换为你的Solidity文件路径 solhint contracts/**/*.sol # 返回solhint的退出码 exit $?
在.pre-commit-config.yaml中配置这个脚本:
repos: - repo: local hooks: - id: solhint-lint name: SolHint Linter entry: ./solhint-lint.sh language: script files: \.sol$
问题②:npm run solhint提示缺少脚本的原因及解决
错误核心原因是你的package.json里未配置名为solhint的npm脚本,解决步骤:
- 打开项目根目录的
package.json,找到scripts字段 - 添加
solhint脚本,指定solhint的执行命令,示例:
{ "scripts": { "solhint": "solhint 'contracts/**/*.sol'", "lint:sol": "solhint --fix contracts/**/*.sol" // 你之前的lint:sol用了--fix参数,会自动修复缩进等可修复问题,因此不显示错误列表 } }
- 确保SolHint是本地安装到项目的(而非仅全局安装),未本地安装则执行:
npm install solhint --save-dev
内容的提问来源于stack exchange,提问作者a.t.
相关产品推荐
相关产品推荐

