【发布时间】:2019-06-30 15:21:19
【问题描述】:
我希望能够在构建时在节点中查找模块的路径。
我在文档中看到有这样的require.resolve
// get path to module 'foo'
console.log(require.resolve('foo'));
但这会寻找模块入口点的路径。如果模块没有入口点(它只是共享文件的集合),则require.resolve 失败。
我知道在某些情况下我可以查看node_modules/name-of-module,但在各种情况下这是错误的。例如,我将“foo”作为依赖项,将“foo”作为“bar”作为依赖项。然后默认情况下 bar 将在 project-root/node_modules/bar 但如果我 npm link 'foo' 那么 'bar' 将在 project-root/node_modules/foo(link)/node_modules/bar
我考虑过放置一个虚拟条目,它适用于我自己的模块,但不适用于我无法控制的模块。
有没有办法找到给定模块的根文件夹的路径?
还有一种方法可以从其他模块的上下文中获取模块的路径。
换句话说,如果我这样做,通常情况下
const bar = require('bar');
这就是我的 package.json 中引用的“bar”模块。想象一下,还有一些其他包 'foo' 包含不同版本的 'bar'。我想能够问“'bar'包'foo'会得到什么路径?”
我试图解决的实际问题是在构建时将一些文件从某个模块复制到我构建的输出文件夹中,但要做到这一点,我需要能够找到该模块。
我可以一起破解一些东西,但假设他们是正确的方式,那么以“正确”的方式来做会很好。
【问题讨论】:
标签: javascript node.js