vue/cli 3 未满足的依赖项

3 vue.js vue-cli vue-cli-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.
Run Code Online (Sandbox Code Playgroud)

Col*_*rty 6

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

这是怎么回事

Yarn 提供这些警告是为了防止不同的依赖项需要不同版本的第三个子依赖项,这可能会导致非确定性行为。例如这里,babel-loader, eslint-loader, workbox-webpack-plugin, 和sass-loaderwebpack 上的版本约束都略有不同,这意味着如果没有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考虑,但我发现这篇文章提供了一些有用的建议,用于处理对等依赖项和对等依赖项警告。