为使用 redux 的站点创建 npm 包

Posted

技术标签:

【中文标题】为使用 redux 的站点创建 npm 包【英文标题】:Creating npm package for site which uses redux 【发布时间】:2018-08-14 22:47:59 【问题描述】:

我编写了一个依赖于 Redux 的 create-react 应用程序。我想将我的应用打包到一个 NPM 包中,这样我就可以在我正在构建的另一个也使用 redux 的站点中使用它。

我想知道如果我的应用程序依赖于 Redux,是否可以打包它?

【问题讨论】:

您可以创建一个新项目,其中仅包含您要共享的包。给包一个通用名称。发布docs.npmjs.com/getting-started/publishing-npm-packages发布后可以分享给大家:) 其他选项是 -> 创建一个项目,其中仅包含您要共享的包。在项目的 package.json (docs.npmjs.com/files/package.json#local-paths) 中引用该包 您还可以考虑为所有未来的应用程序创建样板。 【参考方案1】:

当然可以!但是这种方法有一些注意事项:

    您需要同步两个包中的 React/Redux 版本,因为在您的网站上拥有这些库的多个版本(性能)会非常糟糕。 如果您想在这两个应用程序之间传输数据,则必须公开某种 API 以允许这样做(因为这两个应用程序将在单独的 Redux 实例上运行。

如果您想制作模块化应用程序,您可以采用另一种方式:

    创建一个 React/Redux 应用,但不要让它自己设置 Redux - 只需公开 reducer。 您想在任何地方使用创建的应用程序 - 只需导入 reducer 并将其插入您的 Redux 实例。

这种方法对用户来说会轻松很多:)

【讨论】:

我想尝试第二种暴露reducer的方法。我已经尝试在 create-react-library 中一开始就这样做,但我不确定如何导出 reducer 并使其可供父应用程序导入。有什么建议吗? @mfcss 你可以从这个 github 链接github.com/diegoddox/react-redux-toastr/blob/master/src/… 中获取想法

以上是关于为使用 redux 的站点创建 npm 包的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Gatsby 混合站点连接到 Apollo/Graphcool(或 Redux)?

react+webpack+redux+router+ant 构架react开发环境

如何在通过 NPM 分发时管理 React 组件(Redux、CSS)的自定义方面

结合2个不同项目的2个redux商店

为 React (web) 和 React Native (Mobile) 创建单个 npm 包

如何确定旧 npm 包版本的依赖关系