如何让pre-commit使用pnpm安装stylelint自定义钩子依赖?
解决pre-commit使用pnpm替代npm管理Node依赖的问题
一、全局配置pre-commit默认使用pnpm
你可以通过两种方式让pre-commit全局使用pnpm作为Node包管理器:
方式1:设置环境变量(永久生效)
在你的shell配置文件(如~/.bashrc、~/.zshrc或~/.fish/config.fish)中添加以下内容,重启终端或执行source ~/.bashrc(对应你的shell类型)生效:
export PRE_COMMIT_NODE_PACKAGE_MANAGER=pnpm
方式2:在项目pre-commit配置中指定
在项目根目录的.pre-commit-config.yaml顶部添加全局默认钩子环境配置:
default_install_hook_env: PRE_COMMIT_NODE_PACKAGE_MANAGER: pnpm
二、修改stylelint自定义钩子配置
调整你的stylelint钩子,适配pnpm并确保依赖用pnpm add -D安装:
- id: stylelint name: stylelint # 若web目录已经执行过`pnpm add -D stylelint`,可直接移除以下additional_dependencies配置 # 若需要钩子在隔离环境独立安装依赖,保留此配置,全局pnpm设置会自动用pnpm安装 # additional_dependencies: # - stylelint entry: pnpm --dir web lint:scss files: ^.*\.(css|scss|svelte)$ language: node pass_filenames: false
补充说明:
- 如果你的web目录已经通过
pnpm add -D stylelint安装了依赖,且配置好了lint:scss脚本,移除additional_dependencies更符合项目包管理逻辑,钩子会直接调用本地已安装的stylelint。 - 保留
additional_dependencies时,pre-commit会在隔离的钩子环境中用pnpm安装指定依赖,适合需要独立运行环境的场景。
内容的提问来源于stack exchange,提问作者meAndrew
相关产品推荐
相关产品推荐

