Почему узел semver использует «последние» в тегах dist в качестве максимальной версии для довольных версий? - PullRequest
0 голосов
/ 21 февраля 2020

Я пытался выяснить, как npm установить выбранные версии для зависимостей, вот мой вывод:

rollup-plugin-uglify@3.0.0 имеет следующие зависимости:

dependencies: {
    uglify-es: "^3.3.7"
}

После установки , это результат npm ls:

└─┬ rollup-plugin-uglify@3.0.0
  └─┬ uglify-es@3.3.9
    ├── commander@2.13.0
    └── source-map@0.6.1

Установленная версия для uglify-es - 3.3.9, а самая последняя версия - 3.3.10 ref link .
Затем я проверил этот официальный онлайн semver calculator и нашел этот лог c в исходном коде сайта:

$scope.checkVersions = function() {
          var maxVersion = latest
           if (!semver.satisfies(maxVersion, $scope.range)) maxVersion = null;
          for (var i=0, len=versions.length; i<len; i++) {
            $scope.versions[i].satisfies = distTags[$scope.range] === $scope.versions[i].version ||
              (semver.satisfies($scope.versions[i].version, $scope.range) &&
               (!maxVersion || semver.lte($scope.versions[i].version, maxVersion)));
          }
        }

Кажется, удовлетворяет ли 'последняя' версия в dist-tag заданный диапазон, то это будет максимальная версия довольной версии. В этом случае «последний» в dist-tag для uglify-es равен 3.3.9, поэтому 3.3.10 не выбран.

Я просто хочу спросить причину такого дизайна, и, поскольку я также работаю над npm вычислением дерева зависимостей, есть ли документация для подробных правил анализа зависимостей для таких маленьких хитростей, как этот?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...