khusamov
@khusamov
ReactJS, NodeJS, TypeScript, Sencha ExtJS

Как загрузить (require) пакет, который не установлен?

Допустим в реестре NPM есть пакет package1.
Его имя будет известно лишь во время исполнения или установки моего скрипта.
Например при установке моего скрипта в его конфиге будет прописываться список пакетов, к которым нужен доступ (их АПИ одинаковые, например все пакеты экспортируют getFunctions).

Из своего скрипта я хочу получить к нему доступ без установки:

const packageName = 'package1'; // Имя пакета заранее не известно.
const pkg = require(packageName);
const pkgFunctionList = pkg.getFunctions();


Есть ли возможность получить доступ к пакету без установки вида 'npm install'?
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 2
notiv-nt
@notiv-nt
Как ваше ничего? Да, моё тоже
Что-то в этом духе

const { exec } = require('child_process');

try {
  require('nnn');
} catch (e) {
  if (e.code === 'MODULE_NOT_FOUND') {
    exec('npm i nnn', (err, stdout) => {
      if (err) {
        console.error(err);
      }

      console.log(stdout);
    });
  }
}


Например при установке моего скрипта в его конфиге будет прописываться список пакетов

или же устанавливать их в postinstall ?
Ответ написан
khusamov
@khusamov Автор вопроса
ReactJS, NodeJS, TypeScript, Sencha ExtJS
Теоретически можно установить через exec пакет глобально и импортировать при помощи https://github.com/sindresorhus/import-global
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы