是否可以让npm安装“伞依赖项”的所有依赖项,即使依赖项可传递地级联回到需求模块?
场景:
./lib:
package.json: dependencies {foo, bar}
./app
package.json: dependencies: {file:../lib}
因此,从app
开始,我希望能够使用模块foo
和bar
,这两个模块又是lib
的依赖项,而<{> 对app
的依赖。
但是,在执行上面的npm install
之后,我只会拥有
./app/node_modules/lib/node_modules/foo
./app/node_modules/lib/node_modules/bar
这不会使app
要求foo
或bar
,因为它们只是子依赖项。
我的一个用例是使用本地层测试AWS lambda代码。如果我的lambda函数使用A层和B层,我想将devDependency设置为file:layers/A
和file:layers/B
,然后能够访问这些层所需的模块。目前,我不得不将A和B的所有依赖项都包含为devDependencies,因为我无法将它们“级联”。部署lambda时,AWS会整理使层中的所有模块进入node_modules路径,但这在本地运行时无济于事。我也许可以用SAM解决此问题,但无论如何我还是对基于npm的解决方案感兴趣,因为lambda场景主要用于说明。
基本上我正在寻找一个标志,使其具有依赖关系,包括其所有依赖关系以及返回给调用包的自身。另外,我正在寻找一种方法让节点在./node_modules
和自定义目录(例如./node_modules/lib/node_modules
)中查找模块。
这可能吗?