问题标签 [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.
reactjs - 如何在 React 中使用 babel-plugin-rewire?
我看到这个错误:
我的测试如下所示:
我的生产代码如下所示:
我究竟做错了什么?我希望断言在安装组件 Header 时调用了 profileAction() 。
javascript - Babel 转译 async/away 但保留课程
我是 Babel 的新手,想知道如何在将 async/await 转换为 es6/5 的同时保留我的 ES6 类。
每次我尝试将其与 Webpack 进行转译和捆绑时,Chrome 53 支持的类都会向后转译。Webpack.config.js
babelrc
我希望有一个人可以帮助我。
(PS:我尝试使用 babel-plugin-transform-builtin-extend 但它被忽略了)
javascript - Babel 插件错误未知节点类型未定义,构造函数“String”
我正在构建一个共享组件库,React 和 Vue 都将使用它。
我正在使用 Styletron,它需要一个特定于框架的适配器,但在其他方面的工作原理几乎相同。
因此,从我的源代码(一堆函数)中,我需要生成一个文件夹,其中的代码正常转译,然后生成另一个文件夹,其中函数稍作修改。
这是我的代码:
它应该变成:
我实际上有一个在ASTExplorer中工作的工作示例,但是当我尝试用它制作插件时,我遇到了错误Babel plugin error unknown node of type undefined with constructor "String"
这是我的第一个插件,我知道我做错了一些事情,但现在我只需要找出我必须做什么才能在ASTExplorer之外完成这项工作。
这是我在 ASTExplorer 中编写的插件:
javascript - 在 babel 插件中检测文件是模块还是脚本
我正在编写一个 babel 插件,它在模块顶部添加了一个 polyfill。
我想对 EcmaScript 模块使用一种策略,否则假设它是一个 CommonJS 模块。
所以我有类似的东西
这让我可以处理 CommonJS。
我该如何表达
部分?
我可以访问并查看是否看到任何 Export*Declaration,但这似乎为时已晚,没有用处。
我可以试着带孩子走路,但这似乎不是很客气。
这是单独enter
和exit
步骤的工作吗?
?
在 Babel 中执行此操作的惯用方式是什么?
javascript - 替换 babel 上不同类型的函数节点
几天前我已经在 babel slack 频道上问过这个问题,但我一直没有得到答案。我创建了一个插件来将函数转换为 curried 函数 ( npm )。尽管我成功构建了插件,但我发现了一些解决方法,但我更愿意简化我的逻辑,从而使其更加健壮和可靠。
我的第一种方法是为FunctionDeclaration
. 这个非常简单:将每个参数展开为一个,然后用一个返回这些函数ArrowFunctionExpression
的新节点替换当前节点。FunctionDeclaration
当您要处理FunctionExpression
s 时,问题就来了。你可能知道,FunctionExpression
一个 AST 可以出现在几个地方:
- 作为变量声明的一部分
- 作为一个
AssignmentExpression
- 作为匿名函数传递给另一个函数
所有这些都是有效的 FunctionExpressions,这带来了一个问题:我正在用 functionDeclaration 替换当前节点,但似乎 babel 拒绝用functionDeclaration
. 这迫使我通过重新创建来替换整个父节点。到目前为止,这适用于包含 functionExpression 的赋值表达式和变量声明,但我必须完全重新创建它们以不破坏任何代码。当您想要支持更多场景时,这变得更加困难。
对我来说,理想的情况是只替换当前节点,而不用担心它在哪里,但正如我所说,当当前节点位于变量声明中时,babel 拒绝替换它。
代码可以在这里看到。注意:我不确定我是否也应该在这里发布代码,似乎没有必要
问候
babeljs - Babel 插件:“transform-object-rest-spread”和“syntax-object-rest-spread”有什么区别
关于这两个插件的文档中没有太多细节,我知道它们都使语法像{...obj}
作品一样。
但是我如何决定使用哪个插件呢?
javascript - 如何覆盖 babel 的预设插件选项
我通过以下 .babelrc使用babel-preset-react-app :
我需要覆盖babel-plugin-transform-runtime
选项。我尝试通过以下方式安装插件并将其添加到 .babelrc:
但这对我不起作用。
有什么方法可以在不将整个预设复制并粘贴到我的 .babelrc 的情况下做到这一点?
jestjs - 为什么简单的 babel 插件会破坏玩笑测试?
我写了一个简单的插件:
当我运行 webpack - 它成功编译了我的项目但是当我运行 jest test 时 - 它失败并出现错误:
如果我从 babel 配置中删除我的插件 - 测试通过
为什么它抱怨我的插件?它位于 jests rootDir - src 之外。
怎么了?
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?
node.js - Babel 插件中的“Visitor.Program.enter()”和“pre()”有什么区别?
这个 Babel 插件:
为任何 javascript 文件生成此输出:
pre()
在 之前Program.enter()
和post()
之后被调用Program.exit()
。
如果我想在 AST 遍历的开始/结束时运行一些代码,我有什么理由应该将该代码放在pre
/post
而不是Program.enter
/中Program.exit
?
它有什么不同吗?