写在开头
最近作者的项目仓库需要使用monorepo进行目录版本管理,但作者没有在monorepo情况下配置eslint、prettier、stylelint的经验,因此摸索了一番。
过程
-
eslint、prettier、stylelint的配置是用同一份还是每个项目定制化?
eslint、stylelint 因为monorepo管理的项目可能不一样,有些项目可能是后端项目也有可能是前端项目等等,所以eslint需要项目定制化,当然对应的公共规则我们可以抽出成一个base config,然后子配置再去继承。stylelint同理。
prettier prettier一般就不需要定制化了,在根目录当中配置就好了。
最后的目录结构就是
那如果是定制化的话,那我们在commit的时候怎么去eslint对应的项目呢?我们总不能全部软件包都eslint一遍吧。
-
lint-staged
在开始的时候我想到可以根据不同的目录来进行匹配
module.exports = { './packages/template/**/*': ['cd ./packages/template','eslint', 'prettier --write'], './packages/template/**/*': ['cd ./packages/api','eslint', 'prettier --write'] };
但是之后看了官方文档,发现lint-staged 已经支持根据暂存区文件自动获取最近的配置文件( www.npmjs.com/package/lin…)
写在最后
经验这种东西看着虚,但是在关键时刻却能起决定性的作用。