是否可以忽略其中一个依赖项的特定依赖项?假设我安装了内部依赖于A
的模块B
,并且我想忽略B
并在安装A
时不安装它。
(之所以这样,是因为我知道我永远不会使用A
中使用B
的代码段,所以我想减小node_modules的大小)。
让我们说:
// module A
exports.B = require('module-B');
exports.C = require('module-C');
当我npm install A
时,我知道我永远只想使用C
,所以我想忽略module-B
的安装。
答案 0 :(得分:0)
您使用NPM's local paths feature(在NPM> 2.0.0中) 可以 。
是否 应该 不是另一回事...
可能会这样:
创建一个虚拟本地包:
index.js
或同等功能的东西,只需导出与实际包使用的类型或键匹配的内容即可。例如,如果实际包导出了一个包含名为someFunc
的函数和一个对象someObj
的对象,那么您可能会导出类似{ someFunc: () => {}, someObj: {} }
的对象,这样文件就不会崩溃例如,`const {someFunc} = require('unwanted-nested-dep')package.json
中,给它起一个名字,传达您在做什么以及原因:{ "name": "skip-this-dependency", "description": "This is a dummy package to prevent unwanted nested dependencies from being installed",
然后,在主package.json
中,为每个指向此嵌套嵌套的不需要的dep添加一个条目;像这样的最后一行:
"dependencies": { "async": "^2.4.2", "pumpify": "^1.3.0", "unwanted-nested-dep": "file:../skip-this-dependency" }
但是请注意,这样做会产生副作用!
例如,您可以尝试通过固定需要不需要的嵌套dep的依赖项的版本号来防止将来发生错误...但是,如果更新执行其他依赖项将跳过的嵌套dep添加为依赖,使用它,并期望它起作用。
这是一个粗鲁的选项,请尽可能避免使用。通常,您应该找到另一种解决根本问题的方法(例如fork或替换直接依赖项,或者使用npm缓存或prune等)。