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 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
.
Спасибо!