Merge pull request #529 from return42/nvm-improve

Various improvements of the NVM environment
This commit is contained in:
Markus Heiser 2021-11-21 23:49:05 +01:00 committed by GitHub
commit deca799e9f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 7 deletions

View file

@ -19,6 +19,7 @@
;; Some buffer locals are referencing the project environment: ;; Some buffer locals are referencing the project environment:
;; ;;
;; - prj-root --> <repo>/ ;; - prj-root --> <repo>/
;; - nvm-dir --> <repo>/.nvm
;; - python-environment-directory --> <repo>/local ;; - python-environment-directory --> <repo>/local
;; - python-environment-default-root-name --> py3 ;; - python-environment-default-root-name --> py3
;; - python-shell-virtualenv-root --> <repo>/local/py3 ;; - python-shell-virtualenv-root --> <repo>/local/py3
@ -57,6 +58,9 @@
(setq-local python-environment-directory (setq-local python-environment-directory
(expand-file-name "./local" prj-root)) (expand-file-name "./local" prj-root))
;; to get in use of NVM enviroment, install https://github.com/rejeep/nvm.el
(setq-local nvm-dir (expand-file-name "./.nvm" prj-root))
;; use 'py3' enviroment as default ;; use 'py3' enviroment as default
(setq-local python-environment-default-root-name (setq-local python-environment-default-root-name
"py3") "py3")
@ -90,10 +94,9 @@
(js-mode (js-mode
. ((eval . (progn . ((eval . (progn
;; use nodejs from the (local) NVM environment (see nvm-dir)
(nvm-use-for-buffer)
(setq-local js-indent-level 2) (setq-local js-indent-level 2)
;; flycheck should use the eslint checker from simple theme
(setq-local flycheck-javascript-eslint-executable
(expand-file-name "searx/static/themes/simple/node_modules/.bin/eslint" prj-root))
(flycheck-mode) (flycheck-mode)
)))) ))))

8
.nvm_packages Normal file
View file

@ -0,0 +1,8 @@
# -*- coding: utf-8; mode: conf-unix -*-
#
# Developement tools pre-installed in NVM's node installation [1]
#
# [1] https://github.com/nvm-sh/nvm#default-global-packages-from-file-while-installing
eslint

1
.nvmrc Normal file
View file

@ -0,0 +1 @@
v16.13.0

View file

@ -94,6 +94,7 @@ nvm.: use nvm (without dot) to execute nvm commands directly
clean : remove NVM installation clean : remove NVM installation
status : prompt some status informations about nvm & node status : prompt some status informations about nvm & node
nodejs : install Node.js latest LTS nodejs : install Node.js latest LTS
cmd ... : run command ... in NVM environment
bash : start bash interpreter with NVM environment sourced bash : start bash interpreter with NVM environment sourced
EOF EOF
} }
@ -115,6 +116,8 @@ nvm.install() {
NVM_VERSION_TAG="$(git describe --abbrev=0 --tags --match "v[0-9]*" "${NVM_VERSION_TAG}")" NVM_VERSION_TAG="$(git describe --abbrev=0 --tags --match "v[0-9]*" "${NVM_VERSION_TAG}")"
info_msg "checkout ${NVM_VERSION_TAG}" info_msg "checkout ${NVM_VERSION_TAG}"
git checkout "${NVM_VERSION_TAG}" 2>&1 | prefix_stdout " ${_Yellow}||${_creset} " git checkout "${NVM_VERSION_TAG}" 2>&1 | prefix_stdout " ${_Yellow}||${_creset} "
popd &> /dev/null
cp "${REPO_ROOT}/.nvm_packages" "${NVM_DIR}/default-packages"
nvm.env nvm.env
} }
@ -133,7 +136,7 @@ nvm.clean() {
fi fi
} }
nvm.status(){ nvm.status() {
if command -v node >/dev/null; then if command -v node >/dev/null; then
info_msg "Node.js is installed at $(command -v node)" info_msg "Node.js is installed at $(command -v node)"
info_msg "Node.js is version $(node --version)" info_msg "Node.js is version $(node --version)"
@ -153,12 +156,12 @@ nvm.status(){
info_msg "NVM is installed at ${NVM_DIR}" info_msg "NVM is installed at ${NVM_DIR}"
else else
warn_msg "NVM is not installed" warn_msg "NVM is not installed"
info_msg "to install NVM and Node.js (LTS) use: ${main_cmd} nvm install --lts" info_msg "to install NVM and Node.js (LTS) use: ${main_cmd} nvm.nodejs"
fi fi
} }
nvm.nodejs(){ nvm.nodejs() {
nvm install --lts nvm install
nvm.status nvm.status
} }
@ -167,6 +170,11 @@ nvm.bash() {
bash --init-file <(cat "${NVM_DIR}/nvm.sh" "${NVM_DIR}/bash_completion") bash --init-file <(cat "${NVM_DIR}/nvm.sh" "${NVM_DIR}/bash_completion")
} }
nvm.cmd() {
nvm.ensure
"$@"
}
nvm.ensure() { nvm.ensure() {
if ! nvm.is_installed; then if ! nvm.is_installed; then
nvm.install nvm.install