Я развертываю сайт WordPress, на котором есть множество настраиваемых плагинов mu и настраиваемая тема, и все они имеют процессы сборки gulp и все используют одни и те же пакеты npm. Из-за этого я хочу установить все пакеты npm глобально, чтобы я мог запускать сценарий узла корневого уровня, который, в свою очередь, запускает каждый из файлов gulp (темы и плагины) и создает все необходимое. Просто использую узел child_process.execSync()
для запуска файлов sub gulp.
К сожалению, похоже, что мои сценарии не могут найти глобально устанавливаемые пакеты npm. мой .bashrc
скрипт определяет следующее:
PATH="/usr/local/bin/npm-global/bin:$HOME/bin:$HOME/.local/bin:$PATH"
NODE_PATH="/usr/local/bin/npm-global/lib/node_modules:$NODE_PATH"
NPM_CONFIG_PREFIX=/usr/local/bin/npm-global/
и если я запускаю префикс npg -g и npm -g root, я получаю следующее:
$ npm -g prefix
/usr/local/bin/npm-global
$ npm -g root
/usr/local/bin/npm-global/lib/node_modules
однако, если я запускаю свой скрипт узла, я получаю такие ошибки, как Error: Cannot find module 'glob'
Я МОГУ заставить свои скрипты работать, если добавлю что-то вроде
module.paths.push('/usr/local/bin/npm-global/lib/node_modules')
в мой основной скрипт, но мне также придется добавить это в каждый файл gulp. Я также должен отметить, что если я запускаю что-то вроде child_process.execSync('npm -g root')
, он выводит /usr/local/bin/npm-global/lib/node_modules
Итак, как я могу заставить все мои сценарии использовать по умолчанию только глобально установленные пакеты?
export
в определения PATH / NODE_PATH в .bashrc, т.е.export PATH="/usr/local/bin/npm-global/bin:$HOME/bin:$HOME/.local/bin:$PATH"
? - person DylanSp   schedule 15.12.2020