跨多个代码库共享 karma、eslint 等文件
Sharing karma, eslint, etc. files across multiple codebases
我有几个存储库共享很多相同类型的配置文件(例如 .eslintrc
、.babelrc
、karma.conf.js
)以及其他类型的实用程序文件。我希望能够将它们提取出来并能够在所有回购协议中利用它们。实现这一目标的最佳方法是什么?
- 创建一个新的存储库并将其发布为
npm
模块。然后导入,按需使用?
- 创建一个基本上可以生成所需文件的 CLI 工具?
- 符号链接?
- 其他?
我觉得 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。
这本质上是:
- 发布
.eslintrc
文件供您共享。
npm install
无论您想在哪里使用它。
- 在该存储库中,创建一个新的
.eslintrc
文件并在其中调用
"extends": "your-published-eslintrc"
我有几个存储库共享很多相同类型的配置文件(例如 .eslintrc
、.babelrc
、karma.conf.js
)以及其他类型的实用程序文件。我希望能够将它们提取出来并能够在所有回购协议中利用它们。实现这一目标的最佳方法是什么?
- 创建一个新的存储库并将其发布为
npm
模块。然后导入,按需使用? - 创建一个基本上可以生成所需文件的 CLI 工具?
- 符号链接?
- 其他?
我觉得 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。
这本质上是:
- 发布
.eslintrc
文件供您共享。 npm install
无论您想在哪里使用它。- 在该存储库中,创建一个新的
.eslintrc
文件并在其中调用
"extends": "your-published-eslintrc"