Пакет Node global npm, в курсе - PullRequest
0 голосов
/ 12 мая 2019

Я опубликовал глобальный пакет узлов через npm для создания шаблонов шаблонов для проектов в моей компании.

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

  1. Какие библиотеки узлов вы бы порекомендовали проверить на наличие последней версии.

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

Помните, что это внутренний инструмент для моей компании, поэтому очень важно, чтобы они создавали проекты с использованием новейших шаблонов, и я бы хотел, чтобы они могли обновляться настолько автоматически или легко, насколько это возможно

1 Ответ

1 голос
/ 12 мая 2019

Личное предложение

Вместо того, чтобы заставлять пользователя обновляться, другой вариант - публиковать ваши шаблоны (в виде zip) на удаленном статическом сервере (например, S3).В таком случае вы часто можете обновить zip-файл до последнего шаблона без обновления генератора шаблонов.

generate-template angularjs-template:latest
generate-template angularjs-template:4.3

Ответы на ваши вопросы

  1. Какие библиотеки узлов вы бы порекомендовали проверить на наличие последней версии.

Я не уверен, есть ли для этого библиотека.Однако его можно создать очень легко.

  1. Создайте файл JSON, содержащий информацию о пакете (например, последнюю стабильную версию, сообщение об устаревании и т. Д.).
  2. Загрузите файл JSONна удаленный статический сервер.
  3. Всякий раз, когда пользователь запускает вашу программу, загрузите файл JSON и проверьте текущий package.json.
  4. Покажите предупреждение об устаревании , еслипользователь должен обновить.
  5. process.exit() приложение, если пользователь должен обновить.
Есть ли способ автоматического обновления глобального пакета, если обнаружена новая версия.

Я думаю, что лучше оставить управление пользователю, потому что могут быть некоторыепричины, почему он не предпочитает обновление.Например, если у пользователя есть несколько проектов, запущенных 10 месяцев назад, он может захотеть использовать тот же шаблон для новых проектов.Но если вы действительно хотите автоматизировать его, вы можете использовать следующий код (не тестировался) .

const { execSync } = require('child_process');
const pkg = require('./package.json')
execSync(`npm update -g ${pkg.name}`)

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