强制忽略 npm/yarn 安装的某个依赖项的依赖关系

问题描述 投票:0回答:2

我的nodejs项目使用了一些库。一个库

pouchdb
将尝试安装相当多的依赖项。有一个名为
leveldown
,它将尝试从 Internet 下载 Node.js 标头,然后从头开始重建所有内容。事实上我根本不需要
leveldown
。但他们的社区建议我私下分叉一个
pouchdb
并修改 package.json 以排除我不需要的任何依赖项。

这是我向 npm/yarn 人员提出的一般性问题。是否可以在运行

npm install
yarn install
时阻止下载特定库?

node.js npm pouchdb yarnpkg
2个回答
4
投票

不,无法从安装中排除子依赖项。


但是,就您而言,您不需要私下分叉

pouchdb
。 PouchDB 具有作为 npm 包发布的自定义版本:https://pouchdb.com/custom.html.

如果您想安装 pouchdb 以在浏览器中使用,

npm install pouchdb-browser

如果您使用其他存储适配器(例如内存适配器),您可能需要改为

npm install pouchdb-core
。请注意,
pouchdb-core
不包含
pouchdb
附带的一些功能。

  • 如果需要使用
    query()
    viewCleanup()
    ,则需要安装
    pouchdb-mapreduce
    并将其作为插件传递。
  • 如果需要使用
    replicate()
    sync()
    ,则需要安装
    pouchdb-replication
    并将其作为插件传递。

使用示例:

const PouchDB = require('pouchdb-core')
  .plugin(require(WHATEVER_STORAGE_ADAPTER_YOU_ARE_USING))
  .plugin(require('pouchdb-mapreduce'))
  .plugin(require('pouchdb-replication'));

0
投票

当然,完全可以,只需添加:

    "resolutions": {
        "leveldown": "npm:empty-npm-package",
        "other-package-to-exclude": "npm:empty-npm-package"
    }

npm 中有很多管理不善的库,yarn 还没有对此做出反应,所以上面的解决方案有点诡计。对 stackoverflow 问题进行投票,以引起纱线和 npm 对问题的关注并制定一个很好的解决方案,例如

"exclude-libraries": ["lib1", "lib2"]

© www.soinside.com 2019 - 2024. All rights reserved.