Javascript 避免在构建节点模块时自动添加大型依赖项。peerDependencies是唯一的方法吗?

Javascript 避免在构建节点模块时自动添加大型依赖项。peerDependencies是唯一的方法吗?,javascript,npm,Javascript,Npm,我正在为情态动词构建一个NPM模块。 我想使用一个名为的重量级UI包。我的大多数项目都已经有了它,因此我希望package.json遵循以下逻辑: 检查包是否已经可用 有空吗?好-不要安装它 没有?安装它 我知道peerDependencies会寻找现有的包,如果我的项目有它的话,这是很好的。如果我将包放在依赖项中会发生什么?它总是被安装,还是取决于它是否已经存在?它是否依赖于版本控制?这里有什么好的选择吗?显然,我希望避免复杂的安装说明,如: npm install modal-package

我正在为情态动词构建一个NPM模块。 我想使用一个名为的重量级UI包。我的大多数项目都已经有了它,因此我希望package.json遵循以下逻辑:

  • 检查包是否已经可用
  • 有空吗?好-不要安装它
  • 没有?安装它
  • 我知道peerDependencies会寻找现有的包,如果我的项目有它的话,这是很好的。如果我将包放在依赖项中会发生什么?它总是被安装,还是取决于它是否已经存在?它是否依赖于版本控制?这里有什么好的选择吗?显然,我希望避免复杂的安装说明,如:

    npm install modal-package
    
    如果您的项目没有材质ui:

    npm install material-ui@^0.17.1
    

    如果可能,npm会将同一包上的依赖项向上移动,是的。别担心,有记录吗?它与版本相关吗?如果我指定^0.17.1,而用户有0.17.4,会发生什么?顺便说一句-我删除了我用于强调的代码格式,只是为了你!;-)哦,你的格式很好;代码格式是
    ,不是粗体。无论如何,是的,这是版本相关的。只有当版本规范能够同时满足时,包才能共享一个依赖项。在您的示例中,在这两种情况下都将使用0.17.4。出于某种原因,它不能对React和React dom=>执行此操作,所以我只将它们移动到peerDependencies不,不要不适当地将它们移动到
    peerDependencies
    。你的磁盘空间用完了吗?请尝试运行
    npm重复数据消除