Browse Source

Merge pull request #529 from return42/nvm-improve

Various improvements of the NVM environment
Markus Heiser 3 years ago
parent
commit
deca799e9f
4 changed files with 27 additions and 7 deletions
  1. 6 3
      .dir-locals.el
  2. 8 0
      .nvm_packages
  3. 1 0
      .nvmrc
  4. 12 4
      utils/lib_nvm.sh

+ 6 - 3
.dir-locals.el

@@ -19,6 +19,7 @@
 ;; Some buffer locals are referencing the project environment:
 ;;
 ;; - prj-root                                --> <repo>/
+;; - nvm-dir                                 --> <repo>/.nvm
 ;; - python-environment-directory            --> <repo>/local
 ;; - python-environment-default-root-name    --> py3
 ;; - python-shell-virtualenv-root            --> <repo>/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)
                ))))
 

+ 8 - 0
.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
+

+ 1 - 0
.nvmrc

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

+ 12 - 4
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