Как проверить модуль npm с peerDependencies?
Я новичок в понимании peerDependencies, и я прочитал следующие ссылки, пытаясь узнать, как протестировать модуль npm, содержащий peerDependencies в своем package.json:
- Зависимости сверстников
- Понимание модели зависимости npm
- Распространенные ошибки npm
- Stackru: npm peerDependencies во время разработки
Тем не менее, я не нашел четкого решения для тестирования npm с peerDependencies. Некоторые рекомендуют добавить peerDependencies как глобальные, а некоторые рекомендуют включать peerDependencies в devDependencies, и ни один из них не кажется правильным.
Например, у меня есть пакет с зависимостью однорангового узла, настраиваемый регистратор, и этот регистратор должен быть настроен его хост-пакетом, прежде чем его можно будет использовать.
Вот как я выполняю большинство тестов, написанных с использованием этой задачи Gulp:
function testRunner() {
return (
gulp
.src('./tests/**/*.js', { read: false })
.pipe(
mocha({
exit: true,
timeout: 10000
})
)
.on('error', console.error)
);
}
Я получил полезное предложение (см. Комментарии ниже, @estus), чтобы использовать npm-install-peers, однако я пока не уверен, сможет ли он настроить зависимость между равноправными узлами перед использованием, как это будет выполнено пакетом хоста.
Отзывы и предложения являются наиболее ценными.
2 ответа
Я связался с авторами npm-install-peers и ответом одного из авторов,
Когда дело доходит до тестирования вашего пакета / проекта на CI, я считаю, что правильный способ сделать это - вручную добавить ваши одноранговые зависимости в ваши dev-зависимости. Нет необходимости в этом маленьком инструменте.
В моем случае в прошлый раз я разработал библиотеку, использующую ioredis
как зависимость от сверстников. Мое решение состояло в том, чтобы поместить эту библиотеку в зависимость от разработчиков.
// package.json
"peerDependencies": {
"ioredis": "4.x"
},
"devDependencies": {
"ioredis": "4.x"
}
это работало хорошо, и пока нет проблем с использованием этого подхода.