Mise à jour de Node.js avec nodebrew et script de la routine pour re-npm install -g

Si vous utilisez nodebrew (https://github.com/hokaccha/nodebrew) pour la gestion des versions de Node.js, il est difficile de déplacer le package global npm.

Procédure ordinaire

1. Notez la liste des packages npm installés globalement

Vous faites quelque chose comme ça.

$ npm ls -g --depth 0
/Users/kulikala/.nodebrew/node/v14.13.1/lib
├── @aws-amplify/cli@4.29.6
├── @vue/cli@4.5.7
├── aws-cdk@1.67.0
├── firebase-tools@8.12.1
├── nativescript@7.0.10
├── npm@6.14.8
└── npm-check-updates@9.0.4

Vous pouvez copier et laisser des notes.

2. Installez la dernière version de Node.js avec nodebrew

$ nodebrew install latest
$ nodebrew use latest

3. Réinstallez les packages npm que vous avez notés

$ npm i -g @aws-amplify/cli @vue/cli aws-cdk firebase-tools nativescript npm-check-updates

nodebrew a une commande appelée migrate-package qui a l'air bien, mais c'est un peu gênant car elle est gérée par des liens symboliques. Je fais toujours cela car une nouvelle installation propre nettoiera le dossier node_modules.

nodebrew migrate-package <version>    Install global NPM packages contained in <version> to current version

4. Dites adieu aux anciennes versions de Node.js

$ nodebrew uninstall <Ancienne version>
$ nodebrew clean all

Routine scriptée

J'utilise Bash, donc je l'ai écrit dans Bash. Si vous publiez le contenu suivant sur .bash_profile, la commande update_node fera toutes les routines pour vous.

.bash_profile


update_node () {
  check_env () {
    if ! command_exists nodebrew; then
      echo 'This script updates node via nodebrew.' 1>&2
      echo '    Please install nodebrew.' 1>&2
      echo '    https://github.com/hokaccha/nodebrew' 1>&2
      return 1
    fi

    if ! command_exists jq; then
      echo 'This script uses jq as JSON parser.' 1>&2
      echo '    Please install jq.' 1>&2
      echo '    https://stedolan.github.io/jq/' 1>&2
      return 1
    fi
  }

  command_exists () {
    command -v "$@" > /dev/null 2>&1
  }

  get_node_ver () {
    nodebrew ls \
      | grep current: \
      | cut -d ' ' -f 2
  }

  npm_ls_global () {
    npm ls -g --depth 0 --json \
      | jq --raw-output '.dependencies [].from | select(. != null)'
  }

  if ! check_env; then
    return 1
  fi

  echo 'Updating node...'

  local NODE_CURRENT="$(get_node_ver)"

  echo "Current node: ${NODE_CURRENT}"

  local NPM_GLOBAL="$(npm_ls_global)"

  nodebrew install latest
  nodebrew use latest

  local NODE_LATEST="$(get_node_ver)"

  if [ "${NODE_CURRENT}" = "${NODE_LATEST}" ]; then
    echo 'Already up to date.'
    return 0
  fi

  npm i -g ${NPM_GLOBAL}

  nodebrew uninstall "${NODE_CURRENT}"
  nodebrew clean all

  echo
  echo "Node is updated to: ${NODE_LATEST}"
}

À propos de nodebrew

Utilisez nodebrew pour gérer la version de node.js

Recommended Posts

Mise à jour de Node.js avec nodebrew et script de la routine pour re-npm install -g
Je veux revenir à l'écran précédent avec kotlin et java!
J'ai essayé de traduire la grammaire de R et Java [Mis à jour de temps en temps]
J'ai essayé de mesurer et de comparer la vitesse de Graal VM avec JMH
Installez le package avec npm install / yarn add
Je voulais démarrer un serveur AP et déboguer avec juste la commande Maven
Je souhaite terminer correctement l'installation de npm [2020]
J'ai essayé de lire et de sortir CSV avec Outsystems
J'ai démarré MySQL 5.7 avec docker-compose et j'ai essayé de me connecter
Que dois-je faire pour recharger le Dockerfile mis à jour?
Je souhaite utiliser le mode sombre avec l'application SWT
Je veux faire des transitions d'écran avec kotlin et java!
Comment installer Gradle et Kotlin avec SDKMAN (Mac)