使用semver包确定版本是否匹配

时间:2018-06-12 20:20:38

标签: node.js npm semantic-versioning npm-cache

说我在.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 :(得分:1)

semver包具有satisfies功能,完全符合以下条件:

semver.satisfies(v, version)

(其中v是您在缓存中获得的内容,version是您希望在v满足时测试的范围)