谁捆绑了 react-native 代码?

Posted

技术标签:

【中文标题】谁捆绑了 react-native 代码?【英文标题】:Who bundles react-native code? 【发布时间】:2017-03-01 06:44:54 【问题描述】:

当我们创建React app时,我们需要将jsx转换成js babel 就是这样做的。

我们也可以使用 gulp 或 webpack 来构建可以由浏览器执行的最终代码。

对于 React-Native,我们仍在使用 jsx.babelrc > 包含 "react-native" 的文件作为唯一必需的预设。很明显,babel 正在将 jsx 转换为原生代码。

我的查询是“ReactNative 正在使用哪个捆绑程序?”。 babel 如何将 jsx 转换为原生代码? ReactNative 是否使用 gulp、grunt、webpack 或其他方式?

如果是,如何自定义此配置?是哪个文件 可用于此目的? (假设我想使用 traceur 而不是 babel) 如果没有,我们可以使用 gulp 或 webpack 吗? react-native 不使用 react-native init 命令创建项目?

【问题讨论】:

【参考方案1】:

React Native 使用自己的打包器(包含在 React Native 的代码中:https://github.com/facebook/react-native/tree/master/packager)。

在底层它使用 Babel,这就是为什么你会在项目的根目录中看到 .babelrc

他们没有使用像 webpack 这样更标准的东西的主要原因是因为它对于 React Native 的项目来说似乎不够快,所以 Facebook 决定创建自己的打包器。如果您想了解更多信息,可以在 github 中查看此问题:https://github.com/facebook/react-native/issues/5 他们讨论了如何克服使用 webpack 时遇到的打包问题。如果您了解 React Native 的内部结构,这是第一个问题,阅读起来真的很有趣

【讨论】:

您错过了回答“如果是,如何自定义此配置?哪个文件可用于此目的?(假设我想使用 traceur 而不是 babel)”我很想知道的问题.

以上是关于谁捆绑了 react-native 代码?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法让 react-native 忽略一些不捆绑它们的文件?

反应原生,捆绑失败

开发服务器返回响应错误代码:500 react-native 为啥这个错误谁能告诉我

在 react-native 中迭代 JSON 数组

React-Native Metro 捆绑器无法提供任何文件

react-native Metro 捆绑器错误:捆绑失败:ReferenceError:文件的 SHA-1