我尝试了最新的vue-cli 3工具...完整安装 项目设置正确完成,但是一旦我添加了新的依赖项,我就会得到警告列表,未满足的依赖项……是由于yarn(我没有测试npm ..)引起的。无论如何要解决它们?
$ yarn add vue-i18n
yarn add v1.9.4
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning "@vue/cli-plugin-babel > babel-loader@8.0.0-beta.4" has unmet peer dependency "webpack@>=2".
warning "@vue/cli-plugin-eslint > eslint-loader@2.1.0" has unmet peer dependency "webpack@>=2.0.0 <5.0.0".
warning "@vue/cli-plugin-pwa > workbox-webpack-plugin@3.4.1" has unmet peer dependency "webpack@^2.0.0 || ^3.0.0 || ^4.0.0".
warning "@vue/eslint-config-prettier > eslint-config-prettier@2.10.0" has unmet peer dependency "eslint@>=3.14.1".
warning " > babel-core@7.0.0-bridge.0" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > sass-loader@7.1.0" has unmet peer dependency "webpack@^3.0.0 || ^4.0.0".
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ vue-i18n@8.0.0
info All dependencies
└─ vue-i18n@8.0.0
✨ Done in 34.88s.
答案 0 :(得分:2)
tl; dr:除了webpack
以外可能不是问题(但仍然可能不是问题)。由于webpack
是多个依赖关系的对等依赖关系,由于在不同的依赖关系中列出了不同的版本约束,因此可能会出现不确定性行为。
Yarn会显示这些警告,以防止需要不同版本的第三子依赖项的不同依赖项,这可能会导致不确定性行为。例如,这里babel-loader
,eslint-loader
,workbox-webpack-plugin
和sass-loader
在webpack上的版本限制都略有不同,这意味着没有yarn.lock
文件时版本限制并非完全可以预测。要解决此问题,您可以将webpack
添加为项目的显式依赖项,也可以将yarn upgrade webpack@x.x.x
添加到所需的版本中,然后依靠yarn.lock
来指定此版本。
在您的特定情况下,您应该担心的唯一同级依赖项是webpack
,因为所有其他依赖项只需要一个依赖项。但是,如果您不对这些警告进行任何操作,则很可能不会出现问题。
理想情况下,Vue应该通过在vue create
过程中将webpack
添加到package.json
来解决此问题,但是由于我最终能够重现此错误,所以我猜测他们还没有解决。如果尚未对此做出建议,我鼓励您create an issue。
当项目维护者认为使用软件包时可能会产生依赖关系冲突时,他们可以在项目的package.json
中指定对等依赖关系。例如,如果您访问package.json
的{{1}},则会在@vue/cli-plugin-babel
部分中看到webpack@>=2
。编写此Vue插件的人可能会添加peerDependencies
作为对等依赖项,因为他们知道webpack
的受欢迎程度,并想警告用户该插件使用了webpack
,以帮助他们应对潜在的冲突。
尽管我写的是webpack
而不是npm
,但我发现this article提出了一些有用的建议,可用于处理对等依赖性和对等依赖性警告。