当我的软件包是嵌套依赖项时,某些文件未安装,即使在将它们添加为直接依赖项时也确实安装了它们

时间:2019-02-11 21:03:27

标签: npm npm-install yarnpkg

我必须使用npm软件包,其中一个(例如“父”)依赖于另一个(“子”)。我的子软件包有多个.js文件,例如main.jsother.js。前者在孩子的main中列为package.json

这两个都应包含在包装中。当我检查由npm pack生成的包时,看起来不错。当我将发布的包添加为父包的依赖项并检查其在parent/node_modules/中的内容时,两个文件也都出现了,这与预期的一样。然后,我将父级作为单独的程序包发布,并将子级列为依赖项。

但是,当我然后以父级作为依赖项启动一个新项目,然后安装该项目的node_modules/client时,看到的是main.js,但没有看到other.js!无论我是通过Yarn还是npm安装它,都会发生这种情况。可能是什么原因造成的?

1 个答案:

答案 0 :(得分:0)

嗯...有一个更深层次的根本原因,所以这可能不会帮助任何人,但以防万一。问题是,当它是嵌套依赖项时,将安装该软件包的其他版本。这样做的原因是该依赖项是一个预发布版本,指定为^0.0.1-<commit hash>。由于提交哈希可以以数字开头,因此我有一个较旧的版本,该提交的哈希实际上以更高的数字开头,因此,当父使用尖号^指定子依赖项时,最终安装了该哈希,但当我直接添加了子依赖项。

在父级中将确切版本指定为依赖项可以解决该问题。