Используйте пакет semver, чтобы определить, соответствует ли версия - PullRequest
0 голосов
/ 12 июня 2018

Скажем, у меня есть это в кэше .npm:

lodash/
  1.2.4/
  1.3.3/
  2.11.2/

Что я хочу сделать, это прочитать каталоги в папке lodash и посмотреть, приемлемы ли какие-либо версии.

Скажите, я ищу эту версию:

"lodash":"^2.11.1"

или

"lodash":"~2.11.1"

Как я могу сравнить версии в кеше с желаемой версией, чтобы увидеть, есть ли версия в кеше, удовлетворяет?

Это то, что у меня сейчас есть:

'use strict';

import semver = require('semver');
import async = require('async');
import * as cp from 'child_process';
import * as fs from 'fs';
import * as path from 'path';

export const cacheHas = function (getCacheLocation: string, dep: string, version: string, cb: any) {

  const dir = path.resolve(getCacheLocation + '/' + dep);

  fs.readdir(dir, function (err, items) {

    if (err) {
      return cb(err);
    }

    const matches = items.some(function (v) {
      return semver.eq(v, version);
    });

    return cb(null, matches);

  });

};

, поэтому я просто использую semver.eq() .... поэтому мой вопрос, есть ли лучший вызов дляиспользовать кроме semver.eq()?

1 Ответ

0 голосов
/ 14 июня 2018

Пакет semver имеет функцию satisfies, которая делает именно это:

semver.satisfies(v, version)

(где v - это то, что у вас есть в кеше, а version - диапазонВы хотите проверить, удовлетворяет ли v)

...