semver + последний с зависимостями NPM

Допустимая зависимость NPM может выглядеть так:

dependencies:{
  "lodash":"latest"
}

но я использую semver следующим образом:

semver.eq('2.1.3','latest');

то я получаю:

TypeError: Invalid Version: latest

есть ли способ справиться с «последними» с помощью semver или просто ad-hoc?


person Alexander Mills    schedule 11.10.2018    source источник


Ответы (1)


Есть ли способ справиться с «последними» с помощью semver ....?

Нет, не используя сам пакет semver, так как он не знает, что такое "последний". Метаданные, хранящиеся в реестре npm, связывают «последний» для данного пакета с semver.

Попробуйте использовать команду npm-view, используя execSync() или exec(), чтобы получить "последнюю" версию пакета в реестре npm 1. Затем передайте возвращенное значение в качестве второго аргумента для сравнения thesemver.eq(...).

Например:

const semver = require('semver');
const execSync = require('child_process').execSync;

function getLatestVersion(pkg) {
  return JSON.parse(execSync(`npm view ${pkg} version --json`,
      { stdio: ['ignore', 'pipe', 'pipe'] }).toString());
}

const isEqual = semver.eq('2.1.3', getLatestVersion('lodash'));
console.log(isEqual); // --> false

  1. Как вы сами знаете из предыдущего вопроса здесь. Во что именно преобразуется 'последняя' версия, будь то 'стабильная', 'альфа', 'бета', 'rc' и т. д. могут различаться. Однако, если владелец пакета правильно опубликовал обновления, скорее всего, он будет стабильным.
person RobC    schedule 11.10.2018