npm root
返回什么?
我知道npm
是如何找到node_modules
目录的:
在./node_modules目录中查找模块。如果不存在,请递归搜索父目录的./node_modules,直到找到模块或到达文件系统的根为止。
npm root
是否会返回相同的内容?
我在较高的位置有一个node_modules
目录,例如/path/to/mynpmroot
,但是在较低的位置进行了npm root
时,例如/path/to/mynpmroot/then/very/deep/here
,则{{1 }}为我提供了npm root
的路径。
正常吗?因为当我做/path/to/mynpmroot/then/very/deep/node_modules
时,我会得到:
ls /path/to/mynpmroot/then/very/deep/node_modules
这让我很烦。但是我需要照顾吗?
(因为在ls: /path/to/mynpmroot/then/very/deep/node_modules: No such file or directory
中运行节点脚本就可以了)。
它怎么会发生,我该如何解决?
答案 0 :(得分:1)
npm root
使用npm prefix
返回的文件夹,该文件夹搜索最近的package.json
文件。
通常,您在package.json
中将有一个/myproject/package.json
文件;从npm root
运行/myproject/src/controllers
应该返回/myproject/node_modules
。如果出于某种原因,您有一个package.json
文件 closer (由于某些原因,在您的controllers文件夹中...),则可以解释该行为。
这正在使用npm
v6.0 +;如果您看到不同的行为,请确保提及您使用的版本(npm -v
)。
还请注意,如果您从项目中的文件夹运行npm prefix
,而根本没有任何package.json文件,它将仅返回当前文件夹。这也可以解释您所看到的行为。