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.
Vous faites quelque chose comme ça.
$ 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]
Vous pouvez copier et laisser des notes.
$ nodebrew install latest
$ nodebrew use latest
$ 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
$ nodebrew uninstall <Ancienne version>
$ nodebrew clean all
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}"
}
Utilisez nodebrew pour gérer la version de node.js
Recommended Posts