Рабочее пространство пряжи, реакция, проблема с монорепозиторием с конфликтной версией библиотеки

Экспериментирую с монорепозиторием пряжи. Он состоит из TestProject, созданного с помощью create-react-app, и SharedLib1, созданного с помощью create-react-library. TestProject импортирует код из SharedLib1. Проблема в том, что TestProject использует сценарии реакции 3.3.0, зависящие от babel-jest ^ 24.9.0, в то время как SharedLib1 использует response-scripts-ts ^ 2.16.0, который зависит от babel-jest 22.4.4. При запуске yarn start в TestProject он жалуется:

The react-scripts package provided by Create React App requires a dependency:

  "babel-jest": "^24.9.0"

Don't try to install it manually: your package manager does it automatically.
However, a different version of babel-jest was detected higher up in the tree:

  /monoRepo/node_modules/babel-jest (version: 22.4.4) 

Я мог бы отключить ошибку, установив SKIP_PREFLIGHT_CHECK=true в TestProject или вручную обновив сценарии реакции внутри SharedLib1, но я хотел бы знать, есть ли лучший способ справиться с этим.

myMonorepo
 -web
   -SharedLib1
     -package.json
   -TestProject
     -package.json
 -package.json

Package.json из myMonoRepo:

{
  "name": "my-mono-repo",
  "version": "0.1.0",
  "private": true,
  "workspaces": [
    "web/*"
  ],
  "nohoist": [
    "**/babel-jest",
    "**/babel-jest/**"
  ]
}

Package.json из myMonoRepo:

{
  "name": "test-proj",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    ...
    "shared-lib-1": "^1.0.0"
  }
}

И тестовый код App.tsx:

import React from 'react';
import TestComp from 'shared-lib-1';

import './App.css';

const App: React.FC = () => {
  return (
    <div className="App">
      <TestComp text={'aaa'}/>
      Learn React
    </div>
  );
}

export default App;

Есть babel-jest 24.9.0 внутри node_modules TestProj и еще один 22.4.4 внутри node_modules myMonoRepo.


person Xun Yang    schedule 10.01.2020    source источник
comment
Можете ли вы рассказать, какие места babel-jest в вашей файловой системе в нескольких node_modules папках? Вы также можете поделиться выводом yarn why babel-jest?   -  person Slbox    schedule 28.01.2021
comment
Не могли бы вы опубликовать образец минимального проекта в публичном репозитории?   -  person Hossein Moradi    schedule 31.01.2021


Ответы (1)


Это очень похоже, если не то же самое, на проблему, открытую на репозиторий GH для create-response-app, и вы можете найти там дополнительную информацию.

Тем не менее, вы можете попробовать переместить babel-jest в devDependency вместо зависимости пакета. Если это не сработает, попробуйте Выборочное разрешение зависимостей, где вы можете принудительно использовать в своем проекте конкретную версию babel-jest -

"resolutions": {
   "babel-jest": "^24.9.0",
   "shared-lib-1": "^1.0.0"
}

person nrako    schedule 01.02.2021