我最近创建了my first npm package ,当我尝试使用 npm install -g pre-commit-lint
在运行 macOS 的计算机上安装它时,我得到以下输出:
/usr/local/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/bin/pc-lint ->/usr/local/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/pre-commit-lint/index.js
+ 预提交-lint@1.0.1
在 1.457 秒内更新了 1 个包
安装位置出乎我的意料。
为什么我的包会安装在:
/usr/local/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/
而不是:
/usr/local/lib/node_modules/
最佳答案
经过进一步研究,我找到了 npm config ls -l
命令,并在其输出中找到了这一行:
前缀=“/usr/local/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/Node ”
这似乎是造成奇怪路径的原因。
这个默认值是如何设置的,我不知道。我同事的 Mac 的前缀
设置为/usr/local
,就像我家用的 Linux 笔记本电脑一样。根据npm docs ,这是大多数系统上的默认值。在我的工作笔记本电脑的早期,我可能无意中搞砸了一些东西。
为了解决此问题,我运行了以下命令来覆盖默认的 prefix
值:
npm 配置设置前缀“/usr/local”
然后我卸载并重新安装了我的软件包,二进制文件出现在:
/usr/local/bin/
而不是:
/usr/local/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/Node/bin/
现在一切都按预期进行。
关于node.js - npm 包安装在意外的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54068431/