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