【问题标题】:Create multiple application from one Angular 9 project从一个 Angular 9 项目创建多个应用程序
【发布时间】:2020-08-31 01:54:07
【问题描述】:

我的目标是创建一个具有共享部分的 Angular 项目:功能、类、外观、服务和页面组件(页眉、页脚、一些指令)。然后它内部有 2 个(或更多应用程序)将使用共享部分并在其顶部添加自己的组件(页面)和路由。

那么这两个应用程序应该构建到不同的 dist 文件夹,因此可以部署到不同的位置(URL)。而且我希望能够同时运行(服务)它们(可能在不同的端口上)。

我想我应该从在项目中创建新的应用程序开始:

ng generate application app1 --routing
ng generate application app1 --routing

还有图书馆? (对于共享组件)。对吗?

我应该如何配置 angular.json 文件以进行服务和构建? 以及应该如何配置 app.module.ts 文件?

【问题讨论】:

    标签: angular angular-cli angular9 angular-json


    【解决方案1】:

    直接来自 Angular 指南 Workspace and project file structure - Multiple projects

    多个项目

    多项目工作区适用于对所有 Angular 项目(“monorepo”模型)使用单个存储库和全局配置的企业。多项目工作区也支持库开发。

    设置多项目工作区

    如果您打算在一个工作区中有多个项目,您可以在创建工作区时跳过初始应用程序生成,并为工作区指定一个唯一名称。以下命令创建一个包含所有工作区范围的配置文件的工作区,但没有根级应用程序。

    ng new my-workspace --createApplication="false"
    

    然后,您可以生成名称在工作区中唯一的应用和库。

    cd my-workspace
    ng generate application my-first-app
    

    多项目文件结构

    第一个显式生成的应用程序与工作区中的所有其他项目一起进入projects/ 文件夹。在projects/ 下也添加了新生成的库。这样创建项目时,工作区的文件结构与workspace configuration fileangular.json的结构完全一致。

    my-workspace/
      ...             (workspace-wide config files)
      projects/       (generated applications and libraries)
        my-first-app/ --(an explicitly generated application)
          ...         --(application-specific config)
          e2e/        ----(corresponding e2e tests)
             src/     ----(e2e tests source)
             ...      ----(e2e-specific config)
          src/        --(source and support files for application)
        my-lib/       --(a generated library)
          ...         --(library-specific config)
          src/        --source and support files for library)
    

    库项目文件

    当您使用 CLI(使用诸如 ng generate library my-lib 之类的命令)生成库时,生成的文件将进入工作区的 projects/ 文件夹。有关创建自己的库的更多信息,请参阅Creating Libraries

    库(与应用程序及其关联的 e2e 项目不同)有自己的 package.json 配置文件。

    projects/ 文件夹下,my-lib 文件夹包含您的库代码。

    它继续在表格中描述库项目文件及其用途。我建议进一步阅读上面的文档和相关链接,因为它有详细的文档记录,可能会让您快速启动和运行。

    要在不同的端口上运行多个 Angular 应用程序,只需打开另一个终端并为每个应用程序运行 ng serve --port 1234。见Angular(2) - Running two projects with CLI

    【讨论】:

    • 谢谢。我问了一个后续问题。 stackoverflow.com/q/61343113/1351452
    • 这是否对部署有特殊处理,或者 Angular 应该知道单独处理具有多个应用程序的 Angular 工作区的部署?
    【解决方案2】:

    听起来您想使用 monorepo 方法。我建议使用https://nx.dev/angular

    【讨论】:

    • 谢谢。我将首先尝试上述解决方案(不使用其他库)。
    【解决方案3】:

    我会为不同的应用推荐不同的项目,然后执行以下操作之一

    1. 将可重用代码放入可以为每个项目发布和安装的包中
    2. 利用 git 子模块来保存可重用代码并为每个项目安装 git 子模块

    我更喜欢选项 2 而不是 1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 2011-09-30
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 2018-02-12
      相关资源
      最近更新 更多