如何将反应应用程序创建为服务/包并将其导入另一个应用程序的“package.json”

Posted

技术标签:

【中文标题】如何将反应应用程序创建为服务/包并将其导入另一个应用程序的“package.json”【英文标题】:How to create react app as a service/package and import it into 'package.json' of another app 【发布时间】:2020-02-20 19:52:33 【问题描述】:

您好,我目前正在 react 中的 monorepo 应用程序中工作。

我需要提取它的一些“组件”和“样式”并创建位于主项目之外的单独模块/包,然后像普通模块一样将它们导入package.json

初始文件结构和未来提案结构:

 myMainproject:
 
    \src
      \components
        component-styles.scss
        \button
        \label
        \list
        \item
        .......
      \modules
        \calendar
        \header
        \footer
        \support
      .....
      package.json
      ....
      
 
 // I extract calendar, footer modules 
 
 calendarService:
 
     \src
      \components
        component-styles.scss
        \button
        \label
        \list
        \item
        .......
      \modules
        \calendar
      .....
      package.json
      ....
      
      
 footerService:
 
     \src
      \components
        component-styles.scss
        \button
        \label
        \list
        \item
        .......
      \modules
        \footer
      .....
      package.json
      ....
      
 
 // Extract style and create a separate service
 
 styleService
      \src
        \styles
         .....
      package.json
      ....
      
      

final 'package.json' of 'myMainproject':

  ......
  "dependencies": 
      "calendarService": ...,
      "footerService": .... ,
      "styleService": ...,
      .....
  

您是否有任何想法,不仅是技术上的,还有架构上的,或者有任何文档来实现这一点?

【问题讨论】:

你试过github.com/lerna/lerna吗? 并非如此。我刚开始。我愿意接受建议。你用 lerna 做到了吗? 【参考方案1】:

尝试使用 Yarn 工作区,文档here

【讨论】:

【参考方案2】:

根据设计,对于您要创建的每个 React 模块(日历、页脚和样式),您还需要将 index.js 文件添加到结构中。您可以随意命名文件。这是在您的模块需要时将执行的文件。

您只需从 index.js 文件中导出您的组件。在单独的 React 模块的 package.json 文件中,您必须指明在需要或导入该模块时要执行的 JS 文件。为此,您可以为 package.json 中的 ma​​in 字段提供文件名

【讨论】:

以上是关于如何将反应应用程序创建为服务/包并将其导入另一个应用程序的“package.json”的主要内容,如果未能解决你的问题,请参考以下文章

通过将组件名称指定为输入参数,将 Angular 组件导入另一个组件

从 Backand 应用程序导出表格并将其导入另一个 Backand 应用程序

如何在 PyCharm 中创建模块并将其导入?

在尝试使用一个图像创建网格并将其应用于另一个图像时,我需要帮助补偿图像的移动

如何将整个 Vue 应用程序捆绑为单个 UMD 模块

ORACLE11g将数据库内容全部复制,并将其加为本数据库的一个新实例