在monorepo中eslint、prettier、stylelint的配置

2,074 阅读1分钟

写在开头

最近作者的项目仓库需要使用monorepo进行目录版本管理,但作者没有在monorepo情况下配置eslint、prettier、stylelint的经验,因此摸索了一番。

过程

  • eslint、prettier、stylelint的配置是用同一份还是每个项目定制化?

    eslint、stylelint 因为monorepo管理的项目可能不一样,有些项目可能是后端项目也有可能是前端项目等等,所以eslint需要项目定制化,当然对应的公共规则我们可以抽出成一个base config,然后子配置再去继承。stylelint同理。

    prettier prettier一般就不需要定制化了,在根目录当中配置就好了。

    最后的目录结构就是

    屏幕截图 2022-08-20 161340.png

    那如果是定制化的话,那我们在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…)

    image.png

写在最后

经验这种东西看着虚,但是在关键时刻却能起决定性的作用。