You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在npm scripts中区分Windows/Mac并仅在Mac执行chmod命令?

跨环境配置husky权限的解决方案

1. 在npm scripts中判断当前运行环境

可以直接利用npm内置的环境变量npm_config_platform,它会返回标准化的平台标识:

  • Mac系统返回darwin
  • Windows系统返回win32
  • Linux系统返回linux

如果用Node.js脚本实现判断,也可以用process.platform,返回结果和上述一致。

2. 仅在Mac环境执行chmod命令

有两种实用方案:

方案一:直接在npm scripts中用Shell条件判断

适合不想额外写脚本的场景,直接修改package.json的scripts:

"scripts": {
  "prepare": "husky install && if [ \"$npm_config_platform\" = \"darwin\" ]; then chmod +x .husky/*; fi"
}

注:这种写法依赖Shell环境(比如Mac的Terminal、Windows的Git Bash/WSL),如果是Windows原生CMD,可能不兼容,此时推荐方案二。

方案二:用Node.js脚本实现跨环境判断

写一个简单的Node脚本放在项目中(比如scripts/prepare-husky.js):

const { execSync } = require('child_process');

// 先执行husky初始化
execSync('husky install', { stdio: 'inherit' });

// 仅在Mac系统执行权限设置
if (process.platform === 'darwin') {
  execSync('chmod +x .husky/*', { stdio: 'inherit' });
}

然后修改package.json的scripts:

"scripts": {
  "prepare": "node scripts/prepare-husky.js"
}

这个方案完全跨平台,不管是Mac还是Windows的原生CMD都能正常运行,不需要额外安装依赖。

内容的提问来源于stack exchange,提问作者laterday

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 18:30:21