mirror of
https://github.com/tj/n.git
synced 2024-11-24 19:46:56 +01:00
Add N_PRESERVE_COREPACK (#736)
This commit is contained in:
parent
36a85d120a
commit
e20a854ee8
@ -179,22 +179,24 @@ Or execute a command with `PATH` modified so `node` and `npm` will be from the d
|
||||
|
||||
## Preserving npm
|
||||
|
||||
A Node.js install normally includes `npm` as well, but you may wish to preserve an updated `npm` and `npx` leaving them out of the install using `--preserve`:
|
||||
A Node.js install normally also includes `npm`, `npx`, and `corepack`, but you may wish to preserve your current (especially newer) versions using `--preserve`:
|
||||
|
||||
$ npm install -g npm@latest
|
||||
...
|
||||
$ npm --version
|
||||
6.13.7
|
||||
# Node.js 8.17.0 includes (older) npm 6.13.4
|
||||
$ n -p 8
|
||||
installed : v8.17.0
|
||||
$ npm --version
|
||||
6.13.7
|
||||
|
||||
You can make this the default by setting `N_PRESERVE_NPM` to a non-empty string.
|
||||
You can make this the default by setting the environment variable to a non-empty string. There are separate environment variables for `npm` and `corepack`:
|
||||
|
||||
export N_PRESERVE_NPM=1
|
||||
export N_PRESERVE_COREPACK=1
|
||||
|
||||
You can be explicit to get the desired behaviour whatever the environment variable:
|
||||
You can be explicit to get the desired behaviour whatever the environment variables:
|
||||
|
||||
n --preserve nightly
|
||||
n --no-preserve latest
|
||||
@ -276,6 +278,7 @@ In brief:
|
||||
- support for [NO_COLOR](https://no-color.org) and [CLICOLOR=0](https://bixense.com/clicolors) for controlling use of ANSI color codes
|
||||
- `N_MAX_REMOTE_MATCHES` to change the default `ls-remote` maximum of 20 matching versions
|
||||
- `N_PRESERVE_NPM`: See [Preserving npm](#preserving-npm)
|
||||
- `N_PRESERVE_COREPACK`: See [Preserving npm](#preserving-npm)
|
||||
|
||||
## How It Works
|
||||
|
||||
|
11
bin/n
11
bin/n
@ -695,7 +695,7 @@ activate() {
|
||||
clean_copy_folder "$dir/lib/node_modules/npm" "$N_PREFIX/lib/node_modules/npm"
|
||||
fi
|
||||
# Takes same steps for corepack (experimental in node 16.9.0) as for npm, to avoid version problems.
|
||||
if [[ -e "$dir/lib/node_modules/corepack" ]]; then
|
||||
if [[ -e "$dir/lib/node_modules/corepack" && -z "${N_PRESERVE_COREPACK}" ]]; then
|
||||
mkdir -p "$N_PREFIX/lib/node_modules"
|
||||
clean_copy_folder "$dir/lib/node_modules/corepack" "$N_PREFIX/lib/node_modules/corepack"
|
||||
fi
|
||||
@ -707,7 +707,9 @@ activate() {
|
||||
# Copy bin items by hand, in case user has installed global npm modules into cache.
|
||||
cp -f "$dir/bin/node" "$N_PREFIX/bin"
|
||||
[[ -e "$dir/bin/node-waf" ]] && cp -f "$dir/bin/node-waf" "$N_PREFIX/bin" # v0.8.x
|
||||
[[ -e "$dir/bin/corepack" ]] && cp -fR "$dir/bin/corepack" "$N_PREFIX/bin" # from 16.9.0
|
||||
if [[ -z "${N_PRESERVE_COREPACK}" ]]; then
|
||||
[[ -e "$dir/bin/corepack" ]] && cp -fR "$dir/bin/corepack" "$N_PREFIX/bin" # from 16.9.0
|
||||
fi
|
||||
if [[ -z "${N_PRESERVE_NPM}" ]]; then
|
||||
[[ -e "$dir/bin/npm" ]] && cp -fR "$dir/bin/npm" "$N_PREFIX/bin"
|
||||
[[ -e "$dir/bin/npx" ]] && cp -fR "$dir/bin/npx" "$N_PREFIX/bin"
|
||||
@ -1422,6 +1424,7 @@ function show_diagnostics() {
|
||||
[[ -n "${N_PREFIX}" ]] && echo "PATH: ${PATH}"
|
||||
echo "ls-remote max matches: ${N_MAX_REMOTE_MATCHES}"
|
||||
[[ -n "${N_PRESERVE_NPM}" ]] && echo "installs preserve npm by default"
|
||||
[[ -n "${N_PRESERVE_COREPACK}" ]] && echo "installs preserve corepack by default"
|
||||
|
||||
printf "\nProxy\n"
|
||||
# disable "var is referenced but not assigned": https://github.com/koalaman/shellcheck/wiki/SC2154
|
||||
@ -1561,8 +1564,8 @@ while [[ $# -ne 0 ]]; do
|
||||
-q|--quiet) set_quiet ;;
|
||||
-d|--download) DOWNLOAD="true" ;;
|
||||
--insecure) set_insecure ;;
|
||||
-p|--preserve) N_PRESERVE_NPM="true" ;;
|
||||
--no-preserve) N_PRESERVE_NPM="" ;;
|
||||
-p|--preserve) N_PRESERVE_NPM="true" N_PRESERVE_COREPACK="true" ;;
|
||||
--no-preserve) N_PRESERVE_NPM="" N_PRESERVE_COREPACK="" ;;
|
||||
--use-xz) N_USE_XZ="true" ;;
|
||||
--no-use-xz) N_USE_XZ="false" ;;
|
||||
--latest) display_remote_versions latest; exit ;;
|
||||
|
@ -13,6 +13,7 @@ function unset_n_env(){
|
||||
unset N_NODE_DOWNLOAD_MIRROR
|
||||
unset N_MAX_REMOTE_MATCHES
|
||||
unset N_PRESERVE_NPM
|
||||
unset N_PRESERVE_COREPACK
|
||||
unset HTTP_USER
|
||||
unset HTTP_PASSWORD
|
||||
unset GREP_OPTIONS
|
||||
|
Loading…
Reference in New Issue
Block a user