使用带有 Rollup 的节点模块来构建 Web 客户端

Using node modules with Rollup to build web client

我正在尝试使用 rollup 而不是 browserify 和 babel 来构建一个 React 应用程序。我意识到我需要使用 rollup-plugin-babel 来转换 jsx,但是当我告诉 rollup 格式是 iife 时,最终页面加载时出现错误:

Uncaught ReferenceError: React is not defined

我需要向 rollup.config.js 添加什么才能在我的最终构建中包含我在 package.json 中安装的节点模块?

两个选项:

  1. 将 React 作为单独的 <script> 标签包含在您的应用程序包之前
  2. 在您的配置文件中包含 rollup-plugin-node-resolve,以从您的 node_modules 文件夹中提取依赖项。

如果你采用第二条路线,你还需要 rollup-plugin-commonjs(将 CommonJS 模块转换为 ES 模块)。我 认为 您还需要将 import * as React from 'react' 添加到包含 JSX 的每个模块,否则您将继续收到 ReferenceError。

注意:您可以使用 rollup-plugin-buble 来转译 JSX。它类似于 Babel 插件但速度更快(尽管它不会转换每个 ES2015 功能)