Как разрешить предупреждение «Неудовлетворенная зависимость от веб-пакета» для моего пакета create-реагировать-приложение? - PullRequest
0 голосов
/ 08 декабря 2018

create-react-app (CRA) - инструмент командной строки, помогающий настроить новое приложение React.Он создает package.json, который включает в себя react-scripts зависимость.

Пакет react-scripts имеет зависимость webpack (в настоящее время версия 4.19.1.)

craco - это библиотека, которая упрощает настройку create-react-app.

Я выпустил пакет craco-less, который представляет собой плагин craco.Это облегчает настройку Меньше поддержки create-react-app.Зависимости craco-less включают пакеты css-loader и style-loader, а эти пакеты имеют webpack@^4.0.0 в своих peerDependencies.

При установке пакета craco-less (yarn add craco-less), я получаю следующие предупреждения:

warning "craco-less > css-loader@1.0.1" has unmet peer dependency "webpack@^4.0.0".
warning "craco-less > less-loader@4.1.0" has unmet peer dependency "webpack@^2.0.0 || ^3.0.0 || ^4.0.0".

Я пытался добавить это к своему package.json:

"peerDependencies": {
  "webpack": "^4.0.0"
}

Но это просто дало мне дополнительное предупреждение:

warning "craco-less > css-loader@1.0.1" has unmet peer dependency "webpack@^4.0.0".
warning "craco-less > less-loader@4.1.0" has unmet peer dependency "webpack@^2.0.0 || ^3.0.0 || ^4.0.0".
warning " > craco-less@1.2.2" has unmet peer dependency "webpack@^4.0.0".

Я также пытался добавить webpack в качестве явной зависимости, и это работает 90% времени, но иногда вызывает сбой create-react-app с ошибкой, описанной в этой проблеме GitHub :

npm package crash

(Кажется, только с npm install, а не yarn install.)

Я только что понял, что этоошибка возникает из-за того, что react-scripts зависит от конкретной версии веб-пакета, а мой пакет имеет слабую зависимость (^4.0.0).Но я ожидал, что зависимость react-scripts переопределит это ограничение свободной версии и установит 4.19.1 вместо последней версии (4.27.1).Я думаю, именно поэтому он работает с yarn, а не с npm, потому что, возможно, yarn имеет более умное разрешение зависимостей.

Моя библиотека имеет зависимость от "react-scripts": "^2.1.1" (гибкая), поэтому я хочучтобы узнать, есть ли способ делегировать их webpack зависимости вместо установки последней версии?

Было бы больно указывать 4.19.1 как жестко закодированную версию, потому что мне пришлось бы обновитьcraco-less библиотека все время, когда они обновляют пакет react-scripts.Или, может быть, я мог бы написать сценарий, чтобы просто автоматизировать эти обновления, если это невозможно сделать в package.json.

Спасибо!

1 Ответ

0 голосов
/ 13 декабря 2018

Та же проблема здесь.Если несколько разработчиков потратили немало времени на это, мы в конце концов переключились на пряжу.Дженкинсу потребовалось несколько настроек:

Среда сборки:

Provide Node & npm bin/ folder to PATH

NodeJS Installation: 8.10 

Версия> 8

Предисловие Exe Shell с:

curl -o- -L https://yarnpkg.com/install.sh | bash -s
export PATH=$HOME/.yarn/bin:$PATH

yarn install
yarn run build
...