如何使用React作为外部包

时间:2018-04-04 12:04:54

标签: javascript reactjs create-react-app

我正在制作一个小应用程序,它将作为外部程序包包含在另一个更大的项目中(我们称之为Main项目)。 我正在使用“Create React App”。

它运行正常,但我想构建我的应用程序而不将React包含到bundle文件中,因为Main项目也将React作为依赖项用于其他目的。

现在我正在尝试下一步:

  1. 我在项目中运行了“弹出”脚本,所以现在我可以访问webpack配置。

  2. 在webpack.config.dev.js文件中,我添加了下一个属性:

    $ bar () { MYVAR=bar; }
    $ bar
    $ echo $MYVAR
    bar
    
  3. 现在,据我所知,我需要将React和ReactDom包含在我公共文件夹中的index.html中。

  4. 在body标签中,我包含了两个来自React CDN的脚本:

    https://reactjs.org/docs/cdn-links.html

    但是当我运行npm start时它不起作用并抛出错误:

      

    未捕获的TypeError:无法读取未定义的属性“Component”

    如何配置“创建React App”以从捆绑包中排除React?

    谢谢!

2 个答案:

答案 0 :(得分:1)

不要构建你的应用程序,将其传递给其他人,并要求他将应用程序集成在一起,然后这两个应用程序将使用相同的依赖项。如果您构建应用程序,则有可能使用相同的依赖项。当第二个人再次构建应用程序时,将再次添加相同的依赖项。您可以使用Lerna将应用分成多个模块。它将单独处理所有包,您可以将一个包导入到其他包中,而所有包都具有独立的依赖关系。

根据Lerna

  

将大型代码库拆分为单独的独立版本包对于代码共享非常有用。但是,在许多存储库中进行更改很麻烦且难以跟踪,跨存储库的测试变得非常复杂。

答案 1 :(得分:0)

试试这个:

externals: {
  react: 'React',
  'react-dom': 'ReactDOM'
}

另外,请勿将它们添加到body标签中。将它们添加到头部。最后,必须在捆绑文件之前添加它们。