为啥我不能在汇总配置文件中使用 ES6 导入/导出?
Posted
技术标签:
【中文标题】为啥我不能在汇总配置文件中使用 ES6 导入/导出?【英文标题】:Why can't I use ES6 import/export in Rollup config files?为什么我不能在汇总配置文件中使用 ES6 导入/导出? 【发布时间】:2020-06-18 05:25:23 【问题描述】:在汇总文档中,有一个基本教程可以帮助您创建第一个包。有一个说明:
注意:汇总本身处理配置文件,这就是我们能够 使用导出默认语法——代码没有被转译 Babel 或类似的东西,所以你只能使用 ES2015 的特性 在您运行的 Node.js 版本中受支持。
我讨厌当我很好地遵循某件事然后到达我不完全理解的一两句话时。这个 sn-p 就是这种情况。
教程示例显示我可以使用 ES6 模块语法编写配置。 “Rollup 本身处理配置文件”,这是一个精确的陈述还是仅仅意味着 Rollup 在幕后做了一些事情? “代码没有被转译”,“您只能使用您正在使用的节点版本支持的 ES2015 功能”,这是否意味着 Rollup 正在使用节点来处理配置文件?但我认为 node 还不支持 ES6 模块。
有人能以更精确的方式解释这个 sn-p,并准确详尽地说明它的含义吗?
【问题讨论】:
这只是意味着 Rollup 手动解析配置文件,而不使用任何花哨的 node.js 功能或像 Babel 这样的转译器。因此,Rollup 对导出语法的支持由其程序员硬编码到 rollup 中(同样,不依赖于任何 javascript 功能,Rollup 可以用 php 编写,它仍然支持导出语法,因为 Rollup 的程序员编写了代码来解析它) .但是,任何来自 ES6 的其他功能,例如类和解构,都需要您使用 Node.js 或支持它的转译器,因为 Rollup 的开发人员没有为它编写代码 我认为“自身进程”的非正式意思很清楚,“嘿,我是编写 Rollup 的人,我编写代码来读取文件中的每个字节,我手动和亲自编写代码手动解析” 感谢您的解释。我认为这些东西是隐含的,但并不是每个人都能始终理解隐含的内容,尤其是在实施方面。 【参考方案1】:实际上,Rollup 确实在执行之前将配置文件转换为 commonjs 格式。它只是不将其保存到文件中,而是将其保存在内存中。
它将所有import
s 转换为require
s。
如果您在调试器中运行汇总,您可以轻松看到它。
您必须在rollup.config.js
文件的开头设置断点。启动调试器并等到在断点处停止,然后您将看到生成的rollup.config.js
的内存副本的源代码,而不是原始的。
【讨论】:
以上是关于为啥我不能在汇总配置文件中使用 ES6 导入/导出?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 React + ES6 + webpack 导入和导出组件?