不兼容的babel-loader和babel-core版本

use*_*003 7 npm package.json babeljs babel-loader

我通过npm 安装了babel-core,babel-loader和其他一些软件包

npm install babel-loader babel-core ...
Run Code Online (Sandbox Code Playgroud)

这导致了我的以下定义 package.json

"dependencies": {
  "babel-core": "^6.26.3",
  "babel-loader": "^8.0.0",
  ...
},
Run Code Online (Sandbox Code Playgroud)

在这个问题的时候,最新版本babel-core确实6.26.3和最新版本babel-loader8.0.0根据npmjs.com存储库.

但是,当我npm install再次运行以验证所有内容时,我收到此消息:

npm WARN babel-loader@8.0.0 requires a peer of @babel/core@^7.0.0 but none is installed. You must install peer dependencies yourself.
Run Code Online (Sandbox Code Playgroud)

为什么babel-loader依赖于babel-core那个版本尚不存在?什么是解决此警告的推荐方法?

谢谢!

编辑看起来这个babel-loader图书馆仅在4天前发布.这可能是一个相对较新的问题,因为它被发布?

在此输入图像描述

log*_*yth 9

babel-loader@8.x是用于 Babel 7.x 的 Webpack 集成。Babel 7.x 将所有包从babel-前缀移动到@babel npm作用域。

错误是正确的,您安装的babel-core不是@babel/core.

如果你想安装 Babel 6.x,你可以这样做

npm install --save-dev babel-loader@7 babel-core
Run Code Online (Sandbox Code Playgroud)

但是如果你正在开始一个新项目,Babel 7 更有意义,所以你最好这样做

npm install --save-dev babel-loader @babel/core
Run Code Online (Sandbox Code Playgroud)


use*_*003 1

所以正如我怀疑的那样,这是一个版本控制问题。

我访问了babel-loader 版本历史页面,发现该版本babel-loader与最新版本大约在同一时间发布babel-core,因此它们很可能能够很好地配合使用。

在本例中,时间是7.1.46 个月前。

从那里开始一切都很顺利。令人难以置信的是,包管理器的主要好处之一是它们解决了依赖性问题,但像这样的项目却出现了如此严重的基本失败。

"dependencies": {
  "babel-core": "^6.26.3",
  "babel-loader": "^7.1.4",
  ...
},
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述