3

我尝试了最新的 vue-cli 3 工具...完全安装项目设置正确完成,但是一旦我添加了新的依赖项,我就会得到一个警告列表,未满足的依赖项...是由于纱线(我做了不测试 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.
4

1 回答 1

6

tl; dr:除了webpack(但仍然可能不是问题)之外可能不是问题。由于webpack是多个依赖项的对等依赖项,因此由于在不同的依赖项中列出了不同的版本约束,可能会出现非确定性行为。

这是怎么回事

Yarn 提供这些警告是为了防止不同的依赖项需要不同版本的第三个子依赖项,这可能会导致不确定的行为。例如,这里的 , babel-loader, eslint-loader, workbox-webpack-pluginand sass-loaderall 在 webpack 上的版本约束略有不同,这意味着如果没有yarn.lock文件,版本约束就不能完全预测。要解决此问题,您可以webpack为项目添加显式依赖项,或者您可以添加yarn upgrade webpack@x.x.x到您想要的版本,然后依赖您yarn.lock指定此版本。

解决方案

在您的特定情况下,您应该担心的唯一对等依赖项是webpack因为所有其他依赖项仅由单个依赖项需要。但是,如果您对这些警告不采取任何措施,则可能不会出现任何问题。

理想情况下,这应该由 Vue 在vue create处理过程中通过添加webpack到 来解决package.json,但由于我能够在我的最终重现此错误,我猜测他们还没有解决它。如果尚未为此创建问题,我会鼓励您创建一个问题。

有关对等依赖项的更多信息

当项目维护者package.json认为在使用包时可能出现依赖冲突时,他们可以在项目中指定对等依赖项。例如,如果您访问package.jsonfor@vue/cli-plugin-babel那么您将看到webpack@>=2在一个peerDependencies部分中列出。编写此 Vue 插件的人可能会将其添加webpack为对等依赖项,因为他们知道它的流行webpack程度,并希望警告用户该插件使用该插件webpack以帮助他们处理潜在的冲突。

虽然写的npm不是yarn考虑,但我发现这篇文章提供了一些有用的建议来处理对等依赖和对等依赖警告。

于 2018-08-20T18:48:51.050 回答