Aktualisierte Node.js mit Nodebrew und schrieb die Routine per Skript, um -g erneut zu installieren

Wenn Sie Nodebrew (https://github.com/hokaccha/nodebrew) für die Node.j-Versionierung verwenden, ist es schwierig, das globale Paket npm zu verschieben.

Ordentliches Verfahren

1. Notieren Sie sich die Liste der global installierten npm-Pakete

Du machst so etwas.

$ npm ls -g --depth 0
/Users/kulikala/.nodebrew/node/v14.13.1/lib
├── @aws-amplify/[email protected]
├── @vue/[email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]

Sie können Notizen kopieren und hinterlassen.

2. Installieren Sie die neueste Version von Node.js mit Nodebrew

$ nodebrew install latest
$ nodebrew use latest

3. Installieren Sie die von Ihnen notierten npm-Pakete neu

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

nodebrew hat einen Befehl namens "migrate-package", der gut aussieht, aber etwas unpraktisch ist, da er von symbolischen Links verarbeitet wird. Ich mache das immer, weil eine saubere Neuinstallation den Ordner "node_modules" bereinigt.

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

4. Verabschieden Sie sich von älteren Node.js-Versionen

$ nodebrew uninstall <Alte Version>
$ nodebrew clean all

Skript-Routine

Ich benutze Bash, also habe ich es in Bash geschrieben. Wenn Sie den folgenden Inhalt in ".bash_profile" veröffentlichen, erledigt der Befehl "update_node" alle Routinen für Sie.

.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}"
}

Über Nodebrew

Verwenden Sie nodebrew, um die Version von node.js zu verwalten

Recommended Posts

Aktualisierte Node.js mit Nodebrew und schrieb die Routine per Skript, um -g erneut zu installieren
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
Ich habe versucht, die Geschwindigkeit von Graal VM mit JMH zu messen und zu vergleichen
Installieren Sie das Paket mit npm install / yarn add
Ich wollte einen AP-Server starten und nur mit dem Befehl Maven debuggen
Ich möchte von npm richtig abschließen [2020]
Ich habe versucht, CSV mit Outsystems zu lesen und auszugeben
Ich habe MySQL 5.7 mit Docker-Compose gestartet und versucht, eine Verbindung herzustellen
Was muss ich tun, um die aktualisierte Docker-Datei neu zu laden?
Ich möchte den Dunkelmodus mit der SWT-App verwenden
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
So installieren Sie Gradle und Kotlin mit SDKMAN (Mac)