1

我已经使用具有以下高级结构的 NPM 工作区设置了我的 monorepo:

root
  common      // Shared package, named @company/common
    src
      ...
    package.json
    tsconfig.json
  web         // ReactJS package, named @company/web
    config
      ...
    public
      ...
    src
      ...
    package.json
    tsconfig.json
  mobile      // React Native package, named @company/mobile
    ...
    package.json
    tsconfig.json
  .eslintrc.json
  .prettierrc
  package.json
  tsconfig.json
  tsconfig.base.json

我所有的包都是私有的,并且在它们各自的package.json文件中都被标记为私有。

我已经成功地设置了一切,以便我可以在 Web 和移动工作区中编写这样的代码:

import { ITestInterface } from '@company/common';

使用我当前的设置,每当我打开任何从以下位置导入任何内容的文件时,我都会在 IDE(VS 代码)中收到 eslint 警告@company/common'@company/common' should be listed in the project's dependencies. Run 'npm i -S @company/common' to add it

如果可能的话,我宁愿不完全禁用此警告。有没有办法配置 eslint 让它理解 monorepos,这样当我尝试从我的 monorepo 中的包(工作区)导入某些东西时它不会给我警告?

4

1 回答 1

0

也许移动.eslintrc.json到每个单独的包?您是否尝试npm install在根目录下再次运行?

我的设置是这样的,我没有这个问题。

root
  back-end
    src/
    .eslintrc.js
    tsconfig.json
    tsconfig.ref.json
    package.json
  front-end
    src/
    .eslintrc.js
    tsconfig.json
    tsconfig.ref.json
    package.json
  shared
    // some .ts files
    package.json
package.json
tsconfig.json

如果您想知道 tsconfig.ref.json,这里有一个如何设置它的示例:https ://2ality.com/2021/07/simple-monorepos.html

于 2022-01-12T14:17:40.833 回答