问题标签 [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 回答
3032 浏览

reactjs - React-App- Rewired 不会添加 Babel 插件

所以我正在尝试使用 react-native-web 运行 react-native。它需要添加一些 babel 插件。

我的应用是使用 react-app-rewired 创建的。我尝试了几种方法来添加 babel 插件,但是都没有成功。

我正在使用一个config-overrides.js看起来像这样的文件:

我知道其他配置覆盖有效,但是 babel 一直忽略新插件(已安装,以及其他所有插件)。

此外,我正在通过 react-app-rewired 构建构建应用程序。

这是我在尝试构建时收到的错误消息

非常感谢(:

加尔

0 投票
0 回答
72 浏览

javascript - 如何为某些依赖项应用 babel 插件?

我编写了一个 Babel 插件来转换一些特定的依赖项。

为了减少 babel 的编译时间,我只想将它用于这些依赖项,我babel.config.js的就像

我发现only这是一个非常有用的配置。

可以在 Babel 上做到这一点吗?

0 投票
1 回答
1606 浏览

babeljs - 如何在 vue 项目中添加对 nullishCoalescingOperator 的 Babel 支持?

在我的 Vue-CLI 项目中,当我尝试使用??操作符时,我得到了这个错误:

语法错误:SyntaxError:/Users/stevebennett/odev/freelancing/v-map/src/components/Map.vue:>当前未启用对实验语法“nullishCoalescingOperator”的支持(30:29):

...

将 @babel/plugin-proposal-nullish-coalescing-operator ( https://git.io/vb4Se ) 添加到 Babel 配置的“插件”部分以启用转换。

我安装了@babel/plugin-syntax-nullish-coalescing-operator(它的名字似乎已经改变了),将它添加到我的 babel.config.js 中:

现在错误消息似乎已经倒退,根本没有提到操作员名称:

我究竟做错了什么?

0 投票
0 回答
40 浏览

javascript - 如何知道 bable/webpack 初始编译是否完成

我正在制作我的第一个在开发过程中转换代码的 bable 插件。

这个插件将与 webpack 一起使用,并且应该处理多个文件。

我需要一种方法来知道 babel 或 webpack 何时完成第一次编译并启动 watch 模式,所以此时它会在文件更改后转换代码。

像这样的东西:

查看文档没有告诉编译是否完成的事件、变量或函数,但肯定有一个!任何想法?

0 投票
1 回答
284 浏览

javascript - Babel 插件 - 如何在不做出反应的情况下转换 JSX

我已经编写了自己的模块,该模块将 JSX 字符串作为参数并将其转换为 javascript 对象,所以我这样称呼它:

这行得通,但我真正需要的是在编译时将 JSX 转换为对象,所以我可以像普通的 JSX 表达式一样编写它:

并从我的函数中获取结果作为输出,如下所示:

我不明白有很多像“babel-plugin-transform-jsx”这样的 babel 插件可以做到这一点,但是我想了解 babel 插件以及它们是如何工作的,这样我就可以自己制作了。

我试图分析上面提到的插件的代码,但仍然无法理解事情是如何工作的,例如,插件如何知道他正在使用 JSXElement?

我唯一想做的就是提取该 JSX,将其放入我的函数中并将其转换为函数的返回

我怎样才能做到这一点?谢谢

0 投票
1 回答
4533 浏览

typescript - Next.js typescript 使用 babel-plugin-module-resolver 导入别名

我正在使用打字稿设置 Next.js 项目。我一直在关注几个指南,但我似乎遇到了导入别名的问题。

我不确定这是我的配置还是 Next.js 的问题。

以下是一些引用类似问题的页面,我遵循了这些提示但没有成功:

我尝试使用 Next.js 的 webpack 配置来解决问题(将 resolve.alias 选项直接添加到 next.config.js,但这没有帮助,而且 Next.js 现在应该支持开箱即用的打字稿(resolve.扩展名定义明确)

Next.js 版本 9.3.5

b abel-plugin-module-resolver 版本 4.0.0

tsconfig.json

.babelrc

0 投票
0 回答
1095 浏览

npm - npm run build 在反应应用程序中无法正确编译

我正在尝试在我的反应应用程序中设置一个构建文件夹,但它无法编译。我希望运行“npm run build”并获得一个可以部署到我的服务器的构建包。当我尝试运行此命令时,出现以下错误:



此时,我尝试使用此处建议的“npm i @babel/plugin-proposal-export-default-from”命令手动安装@babel/plugin-proposal-export-default-from:

https://www.npmjs.com/package/@babel/plugin-proposal-export-default-from

当我尝试上述命令时,我收到以下错误消息:



此时,我为 plugin-proposal-export-default-from 创建了目录并添加了一个 package.json 文件。一旦我这样做了,我尝试了相同的命令,并得到了一个稍微不同的错误消息:


我不确定在这里还能做什么。最后,我只想运行“npm run build”,以便我可以将此应用程序部署到我的服务器和/或 github 上的托管站点。我试图跳过这一步并将所有文件上传到我的自托管站点(使用 cpanel),但由于 index.html 文件没有更新,我无法让它工作。我对如何更新 index.html 文件的理解是通过运行“npm run build”。对不起,如果这变得冗长。只是想给出一个很好的解释。谢谢你读到这里。

0 投票
1 回答
804 浏览

javascript - 如何使用 babel-plugin-module-resolver 为根路径设置别名并禁用其他根导入?

我想做这样的进口import Foo from '~/components/Foo'

https://github.com/tleunen/babel-plugin-module-resolver

如果我将我的设置.babelrc为:

我也尝试过(以及许多其他组合):

然后我可以在这样的脚本中使用它:

  1. 如果我这样做是行不通的import Foo from '~/components/Foo'(我希望它)
  2. 我想强制用户必须预先添加,~/所以没有多种使用模式。
0 投票
0 回答
143 浏览

javascript - 使用 Babel 插件将 JSX 属性转换为函数调用

我正在尝试将 JSX 属性的输出值从字符串转换为表达式/函数调用。

鉴于源代码看起来像......

Babel 翻译代码后的期望输出将是......

我有以下找到该属性的内容,但我正在努力用表达式/函数调用替换字符串值。

第 13 行myFunctionCallHere(${classNames})是我无法弄清楚如何变成 AST 样式表达式的地方,这样做的正确方法是什么?

谢谢

0 投票
0 回答
178 浏览

javascript - Babel 自定义插件 - 插件顺序

我有一个自定义的 babel 插件。如果一个项目包含多个插件(可能还有来自 vue/angular 的加载器),这意味着,例如,如果两个转换都访问“程序”节点,则转换将按照插件的第一个到最后一个顺序运行(babel 文档)。

但这并不经常发生。如果我的插件依赖于例如类组件的存在,但另一个插件首先进入访问者将类转换为函数,那么我的自定义插件访问者将无用(跳过)。

是否可以确保我的自定义插件是第一个输入的,然后其他任何东西都会像另一个 babel 插件/预设、vue/angular 加载器等那样转换代码?