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

Javascript 跨多个代码库共享karma、eslint等文件,javascript,node.js,karma-runner,eslint,Javascript,Node.js,Karma Runner,Eslint,我有几个存储库,它们与其他种类的实用程序文件一起共享了很多相同种类的配置文件(例如.eslintrc,.babelrc,karma.conf.js)。我希望能够提取这些信息,并能够在所有回购协议中利用它们。实现这一目标的最佳方法有哪些 创建新回购协议并将其发布为npm模块。然后,导入它并根据需要使用它 创建基本上生成所需文件的CLI工具 符号链接 其他人 我觉得选项1将是理想的,但是,我不确定如何能够引用未导出的文件。例如,一个repo如何利用这个npm模块中的.eslintrc文件?当您需要在

我有几个存储库,它们与其他种类的实用程序文件一起共享了很多相同种类的配置文件(例如
.eslintrc
.babelrc
karma.conf.js
)。我希望能够提取这些信息,并能够在所有回购协议中利用它们。实现这一目标的最佳方法有哪些

  • 创建新回购协议并将其发布为
    npm
    模块。然后,导入它并根据需要使用它
  • 创建基本上生成所需文件的CLI工具
  • 符号链接
  • 其他人

  • 我觉得选项
    1
    将是理想的,但是,我不确定如何能够引用未导出的文件。例如,一个repo如何利用这个
    npm
    模块中的
    .eslintrc
    文件?

    当您需要在CI服务器上运行构建和测试时,符号链接将不能很好地工作,但可能值得检查一下在monorepo中包装了多个包的文件

    我尝试了CLI方法,但最终使用了专用的npm“micro”模块,我只是根据需要将其放入
    package.json

    CLI出现了什么问题:

    • 它引入了一个全局依赖项,每个团队成员都必须在其机器上安装该依赖项
    • 您需要构建一些机制来让CLI自我更新
    • 它为您的项目添加了一个抽象层
    要在npm模块内使用特定的
    .eslintrc
    ,可以通过
    .eslintrc
    路径传递eslint a
    --config
    arg


    请记住,这些工具(eslint、babel、karma、mocha等)有时配置和更新起来很麻烦,因此最好保持代码库自包含,并复制配置文件,而不是使用抽象层。

    对于
    eslint
    ,您可以使用

    这基本上是:

  • 发布要与您共享的
    .eslintrc
    文件
  • npm安装
    无论您想在哪里使用它
  • 在该存储库中,创建一个新的
    .eslintrc
    文件并在其中调用
  • "extends": "your-published-eslintrc"