【发布时间】:2021-03-24 10:31:01
【问题描述】:
我正在部署一个 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 prefix 和 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添加到.bashrc 中的PATH/NODE_PATH 定义中,即export PATH="/usr/local/bin/npm-global/bin:$HOME/bin:$HOME/.local/bin:$PATH"?
标签: node.js npm npm-scripts