Как проверить модуль npm с peerDependencies?

Я новичок в понимании peerDependencies, и я прочитал следующие ссылки, пытаясь узнать, как протестировать модуль npm, содержащий peerDependencies в своем package.json:

Тем не менее, я не нашел четкого решения для тестирования 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"
}

это работало хорошо, и пока нет проблем с использованием этого подхода.

Другие вопросы по тегам