当我的包是嵌套依赖项时,某些文件未安装,即使它们在作为直接依赖项添加时已安装

Posted

技术标签:

【中文标题】当我的包是嵌套依赖项时,某些文件未安装,即使它们在作为直接依赖项添加时已安装【英文标题】:Some files not installed when my package is a nested dependency, even though they do get installed when it's added as a direct dependency 【发布时间】:2019-07-05 10:51:19 【问题描述】:

我必须 npm 包,一个(比如,“父”)取决于另一个(“子”)。我的子包有许多.js 文件,比如main.jsother.js。前者在孩子的package.json中列为main

这两个都应该包含在包中。当我检查使用npm pack 生成的包时,它看起来很好。当我将发布的包添加为父包的依赖项并在parent/node_modules/ 中检查其内容时,这两个文件也如预期的那样存在。然后我将父级作为单独的包发布,子级列为依赖项。

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

【问题讨论】:

【参考方案1】:

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

将确切版本指定为父项中的依赖项解决了该问题。

【讨论】:

以上是关于当我的包是嵌套依赖项时,某些文件未安装,即使它们在作为直接依赖项添加时已安装的主要内容,如果未能解决你的问题,请参考以下文章

npm命令用于卸载或修剪Node.js中未使用的包

bower ENORESTARGET 未找到标签问题

安装拉力编码依赖项时未安装 NPM 警告所需的对等依赖项

嵌套多个依赖项时如何模拟Python类

Npm help config - 没有要安装的包

当我的包是 Python 3.6 时,为啥 conda 要将所有内容降级到 Python 2.7?