Смотрите точную дату публикации пакета npm - PullRequest
0 голосов
/ 05 ноября 2018

В npm 6.x, когда я использую команду npm view [package], я вижу дату публикации относительно сегодняшнего дня, например:

$ npm view express

express@4.16.4 | MIT | deps: 30 | versions: 261

[... other info about express package ]

published 3 weeks ago by dougwilson <doug@somethingdoug.com>

Как получить точную дату и время публикации в таком формате, как ГГГГ-ММ-ДД ЧЧ: мм: сс?

1 Ответ

0 голосов
/ 05 ноября 2018

tl; dr - Используйте раствор, указанный в разделе «Раствор» ниже.


Используя npm view, вы можете запустить следующую команду:

$ npm view express time --json

Это записывает в консоли что-то вроде следующего:

{
  "modified": "2018-10-31T23:01:06.660Z",
  "created": "2010-12-29T19:38:25.450Z",
  "0.14.0": "2010-12-29T19:38:25.450Z",
  "0.14.1": "2010-12-29T19:38:25.450Z",
  ...
  "4.16.3": "2018-03-12T17:50:14.119Z",
  "4.16.4": "2018-10-11T03:59:14.308Z",
  "5.0.0-alpha.7": "2018-10-27T03:12:11.060Z"
}

Как видите, команда (выше) возвращает объект JSON, содержащий свойства; modified, created, а также имеет свойства для каждой версии (например, "0.14.0", "0.14.1" и т. Д.). Для каждого свойства присваивается значение даты.


Как получить опубликованную дату для конкретной версии?

Документы для npm-view указывают следующее:

Вы можете просматривать дочерние поля, разделяя их точкой.

Поэтому, получая значения (то есть даты) для modified и created, вы можете запустить одну из следующих команд соответственно:

$ npm view express time.modified

# prints --> `2018-10-31T23:01:06.660Z`

и

$ npm view express time.created

# prints --> `2010-12-29T19:38:25.450Z`

Однако при получении значения / даты для определенного свойства / ключа версии, такого как 4.16.4, вам нужно будет использовать другой подход, поскольку такие команды, как следующие , не работают :

# This does not work...
$ npm view express time.4.16.4
# This also does not work...
$ npm view express time.'4.16.4'
# This does not work either...
$ npm view express time["4.16.4"]

Решение:

Следующая команда демонстрирует, как успешно получить дату публикации для версии 4.16.4 пакета express:

$ npm view express time --json | node -e "process.stdin.on('data', function(data) {console.log(JSON.parse(data)['4.16.4'])});"

# prints: --> 2018-10-11T03:59:14.308Z

Примечание. Вам потребуется заменить деталь '4.16.4' соответствующей версией в соответствии с требованиями .

Это решение:

  1. Запускает команду npm view express time --json и передает JSON в сценарий nodejs.
  2. Сценарий nodejs использует встроенный process.stdin, чтобы прочитать переданный JSON из stdin (fd 0) .
  3. Затем мы используем JSON.parse для анализа строки JSON и получения значения свойства / ключа с именем 4.16.4

Примечание

Если вы хотите опубликовать дату для последней версии, вы можете запустить следующие две команды bash:

$ version=$(npm view express version)
$ npm view express time --json | node -e "process.stdin.on('data', function(data) {console.log(JSON.parse(data)['"$version"'])});"

# prints: --> 2018-10-11T03:59:14.308Z

Здесь мы сначала запускаем npm view express version (чтобы получить номер последней версии) и присваиваем возвращаемое значение переменной с именем version (т.е. мы используем Подстановка команд ). Затем мы ссылаемся на значение version в скрипте узла.

Вы также можете объединить две команды с помощью оператора && для формирования однострочной команды следующим образом:

$ version=$(npm view express version) && npm view express time --json | node -e "process.stdin.on('data', function(data) {console.log(JSON.parse(data)['"$version"'])});"

# prints: --> 2018-10-11T03:59:14.308Z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...