我正在尝试使用 npm peerDependencies
,但似乎没有像宣传的那样工作。我错过了什么?
设置是,我有两个模块,mod
并且plugin
,这两个模块都依赖于 npm 的外部模块。mod
声明对两者和外部模块的硬依赖plugin
,并且插件声明对等依赖项,以便访问父模块正在使用的版本。
文件如下所示:
~/plugin/package.json:
{
"name": "plugin",
"version": "1.0.0",
"main": "index.js",
"peerDependencies": {
"pad-right": "^0.2.2"
}
}
~/plugin/index.js
var peerDependency = require('pad-right')
module.exports = 'this is a plugin'
~/mod/package.json:
{
"name": "mod",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"pad-right": "^0.2.2",
"plugin": "../plugin"
}
}
~/mod/index.js:
var hardDependency = require('pad-right')
var plugin = require('plugin')
正如我从文档和示例中了解的那样,我认为这应该是使用对等依赖项的标准方式,并且npm install
在任一目录中运行都不会给出任何错误或警告。
但是,当我在文件夹中运行 webpack 时mod
,出现如下错误:
ERROR in ../plugin/index.js
Module not found: Error: Can't resolve 'pad-right' in '~/plugin'
@ ../plugin/index.js 1:21-41
@ ./index.js
这里出了什么问题,webpack不应该plugin
用父mod
模块的对等依赖来解析内部的require语句吗?