问题标签 [babel-6]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
274 浏览

webpack - 我应该使用 babel 预设 'stage-2' 吗?

我必须安装 babel 动态导入插件,因此我还在预设数组中添加了“stage-2”。从文档中我看到预设'stage-2'已经包含动态导入插件 https://babeljs.io/docs/en/6.26.3/babel-preset-stage-2

并且还根据文档阶段预设描述如下:

stage-0 - Strawman:只是一个想法,可能的 Babel 插件。

stage-1 - 提案:这是值得努力的。

阶段 2 - 草稿:初始规范。

stage-3 - 候选:完整的规范和初始浏览器实现。

第 4 阶段 - 已完成:将添加到下一个年度版本中。

所以我的问题是:

  • 如果它已经包含,为什么我必须单独安装插件?
  • 使用“stage-2”安全吗?我在哪里可以检查浏览器对它的支持?

我正在使用 babel 6.23.0,webpack 3

0 投票
1 回答
156 浏览

webpack - Babel 在编译时检查目标模块的 package.json 以进行配置

我有一个问题,我想转换我正在使用的包的 ...spread 运算符。

请注意,我使用的是 babel 6,在脚本版本 1.1.5 中弹出 create-react-app 的上下文中。我对此有一个最小的复制。

我现在找不到它,但我正在使用一些 babel 文档建议的技术,我将它添加到我的 webpack 配置中:

基本上说'不要在 node_modules 中转换任何东西,除了那个包,并使用这个插件进行转换'。

运行此程序时遇到的问题,您会收到此错误:

请注意,它抱怨的 babel 预设是 babel 7 @babel/preset-env 预设,而我使用的是 babel 6。

但是 - 如果您导航到 node_modules/@monaco-editor/react/package.json 并从中删除以下 babel 属性:

然后代码开始工作。

这对我来说意味着 babel 正在检查 package.json 并决定开始使用 @babel/preset-env 开始转换它,而不是只使用我在 webpack 配置中指定的配置。

为什么 babel 会这样做,有没有我可以用来解决这个问题的配置选项?

此问题的最低重现:https ://github.com/dwjohnston/cra1-monaco/tree/eject-solve-attempt

关于@monaco-editor/react 的问题我已经提出了这个问题(要求他们转换传播运算符:https ://github.com/suren-atoyan/monaco-react/issues/221 )