我正在使用Husky与Lint-staged和Stylelint
"scripts": {
"precommit": "lint-staged",
},
"lint-staged": {
"*.scss": ["stylelint --syntax scss"
]
},
OS - 最新的OSX
节点 - 6.10.0
NPM - 3.10.00
我在git commit
> husky - npm run -s precommit
/Users/jitendravyas/app/node_modules/lint-staged/src/index.js:6
const path = require('path')
^^^^^
SyntaxError: Use of const in strict mode.
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/Users/jitendravyas/app/node_modules/lint-staged/index.js:2:1)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
> husky - pre-commit hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run precommit'
答案 0 :(得分:6)
我使用的是节点7.10.0
并遇到了同样的问题。我发现an issue logged on it's repo mmoutenot发布了一个有趣的回复让我思考,所以我进一步研究并找到了解决方案!
赫斯基假设每个人都使用 nvm 来管理节点版本,并在NVM_DIR(设置为$HOME/.nvm
)下查找节点版本,或者如果安装了brew BREW_NVM_DIR(设为/usr/local/opt/nvm
)
如果存在任一路径,则使用load_nvm加载节点版本。
当我最初开始使用Node时,我确实使用了 nvm ,但后来继续使用n并且没有意识到 .nvm 尚未在主目录下清理,因此它指向较旧版本的节点(0.12.7
) - 这导致上述错误。
如果您仍在使用nvm来管理节点版本,请确保您更新到支持ES6功能的节点版本(在这种情况下为const
)。
如果您不使用nvm,请确保 nvm 在上述路径中不可用。在这种情况下,赫斯基最终使用当前版本(例如,在您的情况下为6.10.0
)
或者,您可以尝试mmoutenot
上提到的husky issue解决方案答案 1 :(得分:0)
我猜你还需要将一些文件传递给lint for stylelint:
"scripts": {
"precommit": "lint-staged",
},
"lint-staged": {
"*.scss": ["stylelint \"**/*.scss\" --syntax scss"
]
},