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'
соответствующей версией в соответствии с требованиями .
Это решение:
- Запускает команду
npm view express time --json
и передает JSON в сценарий nodejs.
- Сценарий nodejs использует встроенный
process.stdin
, чтобы прочитать переданный JSON из stdin
(fd 0) .
- Затем мы используем
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