跨多个代码库共享 karma、eslint 等文件

Sharing karma, eslint, etc. files across multiple codebases

我有几个存储库共享很多相同类型的配置文件(例如 .eslintrc.babelrckarma.conf.js)以及其他类型的实用程序文件。我希望能够将它们提取出来并能够在所有回购协议中利用它们。实现这一目标的最佳方法是什么?

  1. 创建一个新的存储库并将其发布为 npm 模块。然后导入,按需使用?
  2. 创建一个基本上可以生成所需文件的 CLI 工具?
  3. 符号链接?
  4. 其他?

我觉得 1 选项比较理想,但是,我不确定如何才能引用未导出的文件。例如,一个 repo 如何使用此 npm 模块中的 .eslintrc 文件?

当您需要 运行 在 CI 服务器上构建和测试时,符号链接将无法正常工作,但可能值得检查 lerna,它将多个包包装在一个单体仓库

我已经尝试过 CLI 方法,但最终还是使用了私有 npm "micro" 模块,我只是根据需要放入 package.json

CLI 出了什么问题:

  • 它引入了一个全局依赖项,每个团队成员都必须在他们的机器上安装该依赖项
  • 您需要建立某种机制让 CLI 自行更新
  • 它为您的项目添加了一个抽象层

要在 npm 模块中使用特定的 .eslintrc,您可以将 --config arg 与您的 .eslintrc 路径一起传递给 eslint。

请记住,这些工具(eslint、babel、karma、mocha 等)有时很难配置和更新,因此保持代码库独立并复制配置文件是个好主意而不是抽象层。

对于eslint,您可以使用shareable configs

这本质上是:

  1. 发布 .eslintrc 文件供您共享。
  2. npm install 无论您想在哪里使用它。
  3. 在该存储库中,创建一个新的 .eslintrc 文件并在其中调用
"extends": "your-published-eslintrc"