pouchdb
将尝试安装相当多的依赖项。有一个名为 leveldown
,它将尝试从 Internet 下载 Node.js 标头,然后从头开始重建所有内容。事实上我根本不需要leveldown
。但他们的社区建议我私下分叉一个 pouchdb
并修改 package.json 以排除我不需要的任何依赖项。
这是我向 npm/yarn 人员提出的一般性问题。是否可以在运行
npm install
或 yarn install
时阻止下载特定库?
不,无法从安装中排除子依赖项。
但是,就您而言,您不需要私下分叉
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'));
当然,完全可以,只需添加:
"resolutions": {
"leveldown": "npm:empty-npm-package",
"other-package-to-exclude": "npm:empty-npm-package"
}
npm 中有很多管理不善的库,yarn 还没有对此做出反应,所以上面的解决方案有点诡计。对 stackoverflow 问题进行投票,以引起纱线和 npm 对问题的关注并制定一个很好的解决方案,例如
"exclude-libraries": ["lib1", "lib2"]