Как определить зависимости старых версий пакета npm - PullRequest
1 голос
/ 25 сентября 2019

Мне кажется, что связь с зависимостями на сайте npm применима только к текущей / последней версии.

Есть некоторая часть информации, о которой я не знаю, как определить, какую зависимостьверсию пакета, отличную от его загрузки и проверки файла package.json?

Мне кажется, что я трачу ЧАСЫ на выполнение чего-то, что, как я ожидаю, будет намного проще.

1 Ответ

1 голос
/ 26 сентября 2019

"Мне кажется, что связь с зависимостями на сайте npm применима только к текущей / последней версии."

Да, это правильно, www.npmjs.com будет только отображать зависимости для последней версии пакета.

Вот несколько способов узнать, что вам нужно как программно, так и непрограммно.

Программно:

  1. Используя команду npm view со следующим синтаксисом;

    npm view <pkg_name> versions --json
    

    получает список всех версий, доступных дляуказанный пакет в реестре npm.

    Примечание: Часть <pkg_name>, указанную выше, должна быть заменена реальным именем пакета.

    Например,;выполнив следующую команду, скажем, для пакета eslint :

    npm view eslint versions --json
    

    выводит на консоль следующее:

    [
      "0.0.4",
      "0.0.5",
      "0.0.6",
      "0.0.7",
      "0.1.0-dev",
      "0.1.0",
      "0.1.1",
      "0.1.2",
      ...
    ]
    
  2. Теперь мы знаем, какие версии доступны, допустим, мы хотим перечислить зависимостей для eslint версии 0.1.2. Мы можем запустить следующую команду:

    npm show eslint@0.1.2 dependencies --json
    

    Это напечатает:

    {
      "optimist": "*",
      "estraverse": "~1.3.0",
      "esprima": "*",
      "escope": "1.0.0"
    }
    

    Аналогично, мы можем обнаружить devDependencies для eslint версии 0.1.2, выполнив следующую команду:

    npm show eslint@0.1.2 devDependencies --json
    

    Это даст что-то вроде этого:

    {
      "vows": "~0.7.0",
      "sinon": "*",
      "commonjs-everywhere": "~0.9.0",
      "mocha": "~1.13.0",
      "chai": "~1.8.1",
      "grunt": "~0.4.1",
      ...
    }
    
  3. Если вы знаете, что пакет заранее имеет определенную зависимость.

    Например;ретроспективно после выполнения вышеупомянутой команды мы теперь знаем, что eslint версия 0.1.2 имеет escope в качестве зависимости.

    Итак, если мы хотим узнать версию escope, то eslint версия0.1.2 необходимо, мы можем запустить следующую команду:

    npm show eslint@0.1.2 dependencies.escope
                                      ^
    

    Примечание: Имя пакета следует за точкой (.), то есть .escope

    Это печатает следующее:

    1.0.0


Непрограммный способ

Я не могу придумать причину, по которой вы хотели бы выполнить следующий непрограммный способ вместо вышеупомянутого программного способа, когда у вас есть инструмент CLI, доступный для вас.Однако, если вы предпочитаете ручные задачи, то здесь ...

Примечание : YMMV использует следующие ручные шаги, поскольку это зависит от того, как пакет был обработан / поддержан.

Как правило, исходный код пакета npm будет размещен на GitHub, поэтому вы можете выполнить следующие шаги вручную.Это избавит вас от необходимости загружать пакет для проверки файла package.json .

Для этого мы продемонстрируем для пакета eslint:

  1. Посетите npmjs.com и введите имя пакета в поле ввода «Поиск пакетов» .Мы введем eslint и нажмем клавишу возврата.

  2. Далее нажмите eslint из списка пакетов, и вы попадете на эту страницу .

  3. Нажмите на ссылку github , которая обычно появляется в правой части веб-страницы и выглядит следующим образом:

    github rep link icon

  4. Это приведет вас к репо eslint, т.е. этот

  5. ВклНа странице Github нажмите кнопку «Ветвь» , которая появляется над списком файлов исходного кода и выглядит следующим образом:

    Github branch button

  6. Во всплывающей панели , которая появляется впоследствии, нажмите кнопку «Теги» , затем найдите и щелкните тег версии из списка, который вы хотитеобнаружить его зависимости. (Примечание. Эти имена тегов обычно соответствуют версии, выпущенной / опубликованной для npm)

    После этого будут загружены файлы исходного кода в браузере для этого конкретного выпуска / версии.

  7. Найдите файл package.json в списке файлов и щелкните по нему.Это загрузит содержимое package.json в браузер, после чего вы сможете прочитать его и выяснить его зависимости.


Визуализация дерева зависимостей

Я иногда использую этот онлайн-инструмент https://npm.anvaka.com, который может помочь вам визуализировать полное дерево / график зависимостей для данного пакета - однако это только для последней версии пакета.

Здесь - полное дерево / график зависимостей (многоуровневая глубина) для последней версии eslint.

...