38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
import subprocess
|
|
import sys
|
|
|
|
from tailwind import get_config
|
|
|
|
|
|
class NPMException(Exception):
|
|
pass
|
|
|
|
|
|
class NPM:
|
|
cwd = None
|
|
npm_bin_path = None
|
|
|
|
def __init__(self, cwd=None, npm_bin_path=None):
|
|
self.npm_bin_path = npm_bin_path if npm_bin_path else get_config("NPM_BIN_PATH")
|
|
self.cwd = cwd
|
|
|
|
def cd(self, cwd):
|
|
self.cwd = cwd
|
|
|
|
def command(self, *args):
|
|
try:
|
|
subprocess.run([self.npm_bin_path] + list(args), cwd=self.cwd, check=True)
|
|
return True
|
|
except subprocess.CalledProcessError:
|
|
sys.exit(1)
|
|
except OSError:
|
|
raise NPMException(
|
|
"\nIt looks like node.js and/or npm is not installed or cannot be found.\n\n"
|
|
"Visit https://nodejs.org to download and install node.js for your system.\n\n"
|
|
"If you have npm installed and still getting this error message, "
|
|
"set NPM_BIN_PATH variable in settings.py to match path of NPM executable in your system.\n\n"
|
|
""
|
|
"Example:\n"
|
|
'NPM_BIN_PATH = "/usr/local/bin/npm"'
|
|
)
|