diff --git a/.dir-locals.el b/.dir-locals.el index b8f7ecc76..f67ab4714 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -19,6 +19,7 @@ ;; Some buffer locals are referencing the project environment: ;; ;; - prj-root --> / +;; - nvm-dir --> /.nvm ;; - python-environment-directory --> /local ;; - python-environment-default-root-name --> py3 ;; - python-shell-virtualenv-root --> /local/py3 @@ -57,6 +58,9 @@ (setq-local python-environment-directory (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 (setq-local python-environment-default-root-name "py3") @@ -90,10 +94,9 @@ (js-mode . ((eval . (progn + ;; use nodejs from the (local) NVM environment (see nvm-dir) + (nvm-use-for-buffer) (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) )))) diff --git a/.nvm_packages b/.nvm_packages new file mode 100644 index 000000000..13eabc5c2 --- /dev/null +++ b/.nvm_packages @@ -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 + diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..5dbac1ed0 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16.13.0 \ No newline at end of file diff --git a/utils/lib_nvm.sh b/utils/lib_nvm.sh index d35abef2a..267ba8a4a 100755 --- a/utils/lib_nvm.sh +++ b/utils/lib_nvm.sh @@ -94,6 +94,7 @@ nvm.: use nvm (without dot) to execute nvm commands directly clean : remove NVM installation status : prompt some status informations about nvm & node nodejs : install Node.js latest LTS + cmd ... : run command ... in NVM environment bash : start bash interpreter with NVM environment sourced EOF } @@ -115,6 +116,8 @@ nvm.install() { NVM_VERSION_TAG="$(git describe --abbrev=0 --tags --match "v[0-9]*" "${NVM_VERSION_TAG}")" info_msg "checkout ${NVM_VERSION_TAG}" 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 } @@ -133,7 +136,7 @@ nvm.clean() { fi } -nvm.status(){ +nvm.status() { if command -v node >/dev/null; then info_msg "Node.js is installed at $(command -v node)" info_msg "Node.js is version $(node --version)" @@ -153,12 +156,12 @@ nvm.status(){ info_msg "NVM is installed at ${NVM_DIR}" else 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 } -nvm.nodejs(){ - nvm install --lts +nvm.nodejs() { + nvm install nvm.status } @@ -167,6 +170,11 @@ nvm.bash() { bash --init-file <(cat "${NVM_DIR}/nvm.sh" "${NVM_DIR}/bash_completion") } +nvm.cmd() { + nvm.ensure + "$@" +} + nvm.ensure() { if ! nvm.is_installed; then nvm.install