Делаем зависимости доступными с помощью Yarn 2

Я работаю над фреймворком, в котором я хочу, чтобы зависимости пакета фреймворка были доступны приложению, которое его использует. Зависимости используются не напрямую потребителем, а файлами, предоставленными фреймворком.

С npm это работает, но с Yarn 2 я получаю такие ошибки

Error: Your application tried to access @snowpack/plugin-dotenv, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.

Очевидно, я могу просто добавить зависимости в package.json приложения-потребителя, но это требует ручного редактирования package.json при изменении зависимостей. Это идет вразрез с идеей фреймворка с беспрепятственным путем обновления. Кроме того, зависимости относятся к файлам, предоставленным платформой. Последующий код не должен им мешать.

Можно ли делиться зависимостями ниже по течению?

Примечание: я использую рабочие области. Я не знаю, относится ли это к вопросу.

0 ответов

Вы можете использовать createRequire чтобы добиться этого.

Например, если ваше приложение зависит от micromatch@4.0.2 и вы хотите, чтобы в коде приложения требовалась его подчиненная зависимость picomatch не заявляя об этом, вы можете сделать это от имени micromatch с помощью кода ниже:

const {createRequire} = require(`module`);
const requireDependency = createRequire(require.resolve(`micromatch`));
requireDependency(`picomatch`);

Этот подход будет работать со всеми менеджерами пакетов и стратегиями установки, включая Yarn v2 pnp и pnpm и npm тоже.

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