Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用semver包确定版本是否匹配_Node.js_Npm_Semantic Versioning_Npm Cache - Fatal编程技术网

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

Node.js 使用semver包确定版本是否匹配,node.js,npm,semantic-versioning,npm-cache,Node.js,Npm,Semantic Versioning,Npm Cache,假设我在.npm缓存中有这个: lodash/ 1.2.4/ 1.3.3/ 2.11.2/ 我想做的是阅读lodash文件夹中的目录,看看是否有任何版本可以接受 假设我正在寻找此版本: "lodash":"^2.11.1" 或 如何将缓存中的版本与所需版本进行比较,以查看缓存中的版本是否满足要求 这就是我现在拥有的: 'use strict'; import semver = require('semver'); import async = require('async');

假设我在.npm缓存中有这个:

lodash/
  1.2.4/
  1.3.3/
  2.11.2/
我想做的是阅读lodash文件夹中的目录,看看是否有任何版本可以接受

假设我正在寻找此版本:

"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()
,还有更好的调用吗?

这个
semver
包有一个
满足
函数,该函数正好做到:

semver.satisfies(v, version)

(其中
v
是缓存中的内容,
version
是要测试
v
是否满足的范围)

这就是您要查找的内容吗<代码>满足(版本,范围):如果版本满足范围,则返回true。可能是的,因此
范围
是具有
~
^
的版本,并且
版本
是严格的版本,对吗?请随意添加带有一些基本测试的答案,我将接受thanks@ZachB想补充一个答案吗?我认为你的想法是正确的
semver.satisfies(v, version)