问题标签 [babel-plugin]

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 投票
1 回答
1164 浏览

reactjs - 如何在 React 中使用 babel-plugin-rewire?

我看到这个错误:

我的测试如下所示:

我的生产代码如下所示:

我究竟做错了什么?我希望断言在安装组件 Header 时调用了 profileAction() 。

0 投票
0 回答
164 浏览

javascript - Babel 转译 async/away 但保留课程

我是 Babel 的新手,想知道如何在将 async/await 转换为 es6/5 的同时保留我的 ES6 类。

每次我尝试将其与 Webpack 进行转译和捆绑时,Chrome 53 支持的类都会向后转译。Webpack.config.js

babelrc

我希望有一个人可以帮助我。

(PS:我尝试使用 babel-plugin-transform-b​​uiltin-extend 但它被忽略了)

0 投票
1 回答
807 浏览

javascript - Babel 插件错误未知节点类型未定义,构造函数“String”

我正在构建一个共享组件库,React 和 Vue 都将使用它。

我正在使用 Styletron,它需要一个特定于框架的适配器,但在其他方面的工作原理几乎相同。

因此,从我的源代码(一堆函数)中,我需要生成一个文件夹,其中的代码正常转译,然后生成另一个文件夹,其中函数稍作修改。

这是我的代码:

它应该变成:

我实际上有一个在ASTExplorer中工作的工作示例,但是当我尝试用它制作插件时,我遇到了错误Babel plugin error unknown node of type undefined with constructor "String"

这是我的第一个插件,我知道我做错了一些事情,但现在我只需要找出我必须做什么才能在ASTExplorer之外完成这项工作。

这是我在 ASTExplorer 中编写的插件:

0 投票
0 回答
24 浏览

javascript - 在 babel 插件中检测文件是模块还是脚本

我正在编写一个 babel 插件,它在模块顶部添加了一个 polyfill。

我想对 EcmaScript 模块使用一种策略,否则假设它是一个 CommonJS 模块。

所以我有类似的东西

这让我可以处理 CommonJS。

我该如何表达

部分?

我可以访问并查看是否看到任何 Export*Declaration,但这似乎为时已晚,没有用处。

我可以试着带孩子走路,但这似乎不是很客气。

这是单独enterexit步骤的工作吗?

?

在 Babel 中执行此操作的惯用方式是什么?

0 投票
1 回答
592 浏览

javascript - 替换 babel 上不同类型的函数节点

几天前我已经在 babel slack 频道上问过这个问题,但我一直没有得到答案。我创建了一个插件来将函数转换为 curried 函数 ( npm )。尽管我成功构建了插件,但我发现了一些解决方法,但我更愿意简化我的逻辑,从而使其更加健壮和可靠。

我的第一种方法是为FunctionDeclaration. 这个非常简单:将每个参数展开为一个,然后用一个返回这些函数ArrowFunctionExpression的新节点替换当前节点。FunctionDeclaration

当您要处理FunctionExpressions 时,问题就来了。你可能知道,FunctionExpression一个 AST 可以出现在几个地方:

  • 作为变量声明的一部分
  • 作为一个AssignmentExpression
  • 作为匿名函数传递给另一个函数

所有这些都是有效的 FunctionExpressions,这带来了一个问题:我正在用 functionDeclaration 替换当前节点,但似乎 babel 拒绝用functionDeclaration. 这迫使我通过重新创建来替换整个父节点。到目前为止,这适用于包含 functionExpression 的赋值表达式和变量声明,但我必须完全重新创建它们以不破坏任何代码。当您想要支持更多场景时,这变得更加困难。

对我来说,理想的情况是只替换当前节点,而不用担心它在哪里,但正如我所说,当当前节点位于变量声明中时,babel 拒绝替换它。

代码可以在这里看到。注意:我不确定我是否也应该在这里发布代码,似乎没有必要

问候

0 投票
1 回答
3740 浏览

babeljs - Babel 插件:“transform-object-rest-spread”和“syntax-object-rest-spread”有什么区别

关于这两个插件的文档中没有太多细节,我知道它们都使语法像{...obj}作品一样。

但是我如何决定使用哪个插件呢?

0 投票
1 回答
1482 浏览

javascript - 如何覆盖 babel 的预设插件选项

我通过以下 .babelrc使用babel-preset-react-app :

我需要覆盖babel-plugin-transform-runtime选项。我尝试通过以下方式安装插件并将其添加到 .babelrc:

但这对我不起作用。

有什么方法可以在不将整个预设复制并粘贴到我的 .babelrc 的情况下做到这一点?

0 投票
0 回答
277 浏览

jestjs - 为什么简单的 babel 插件会破坏玩笑测试?

我写了一个简单的插件:

当我运行 webpack - 它成功编译了我的项目但是当我运行 jest test 时 - 它失败并出现错误:

如果我从 babel 配置中删除我的插件 - 测试通过

为什么它抱怨我的插件?它位于 jests rootDir - src 之外。

怎么了?

0 投票
1 回答
596 浏览

babeljs - @babel/preset-env 在升级 babel 6 到 7 后加载了错误的 babel 版本

我试图将我的 babel 从 6 升级到 7,但我遇到了这个问题。

有人可以帮忙解释发生了什么吗?我试图删除 node_modules 和 package-lock.json,并运行npm cache clean --force

但是这个错误还是出现了。如何强制此依赖项(@babel/preset-env)在其依赖项中使用 Babel 7 而不是 Babel 6.26.3?

0 投票
2 回答
1103 浏览

node.js - Babel 插件中的“Visitor.Program.enter()”和“pre()”有什么区别?

这个 Babel 插件:

为任何 javascript 文件生成此输出:

pre()在 之前Program.enter()post()之后被调用Program.exit()

如果我想在 AST 遍历的开始/结束时运行一些代码,我有什么理由应该将该代码放在pre/post而不是Program.enter/中Program.exit

它有什么不同吗?