vue/cli 3 个未满足的依赖项

vue/cli 3 unmet dependencies

我试了最新的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.

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

发生了什么事

Yarn 提出这些警告是为了防止不同的依赖项需要不同版本的第三个子依赖项,这可能会导致不确定的行为。例如,babel-loadereslint-loaderworkbox-webpack-pluginsass-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 以获得 @vue/cli-plugin-babel,那么您将看到 webpack@>=2 列在 peerDependencies 部分中。编写此 Vue 插件的人可能将 webpack 添加为对等依赖,因为他们知道 webpack 的流行程度并希望警告用户此插件使用 webpack 以帮助他们处理潜在的冲突。

虽然在编写时考虑到了 npm 而不是 yarn,但我发现 this article 提供了一些关于处理对等依赖性和对等依赖警告的有用建议。