同时运行 ng build --watch 和 ngserve 时,Angular 7 库 html 模板更改不会影响应用程序

2024-05-24

当 Angular 7 库 html 模板更改使用“ng build library --watch”和“ngserve application”在不同的 cmd 中同时运行时,不会影响 Angular 应用程序。

所以我首先使用 watch 标志启动库,然后使用 ngserve 启动应用程序。库中对 ts 文件的更改将在应用程序上启动 HMR,并且更改会正确受到影响。但是,当我更改某些组件 html 或 css 文件时,HMR 将检测更改并开始更新应用程序,但在 UI 中看不到更改。如果我停止 ng 服务并再次启动它,那么这些 html 和 css 更改就会影响到 UI。

我已经检查过更改会影响库构建将输出文件的 dist 目录。因此,即使 ngserve 注意到它们,也不会接受它们。

我使用 tsconfig.json 路径引用库。因为我的应用程序的 baseUrl 是 src 我需要在这样的配置中使用 ../

"@lw/common": [
    "../dist/@lw/common"
  ]

我在部署路径中使用@,因为我需要从库导入scss文件。如果我从 npm 安装这个包,这样导入路径是相同的。因此,我正在寻找的配置是通过使用 --watch 模式来简化库开发。

dist
    @lw
        common
projects
    lw
        common
src
    app
    index.html

封装版本

Angular CLI: 7.3.1
Node: 10.15.0
OS: win32 x64
Angular: 7.2.4
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router, service-worker

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.13.1
@angular-devkit/build-angular      0.13.1
@angular-devkit/build-ng-packagr   0.13.1
@angular-devkit/build-optimizer    0.13.1
@angular-devkit/build-webpack      0.13.1
@angular-devkit/core               7.3.1
@angular-devkit/schematics         7.3.1
@angular/cdk                       7.3.2
@angular/cli                       7.3.1
@angular/flex-layout               7.0.0-beta.19
@angular/material                  7.3.2
@ngtools/json-schema               1.1.0
@ngtools/webpack                   7.3.1
@schematics/angular                7.3.1
@schematics/update                 0.13.1
ng-packagr                         4.7.0
rxjs                               6.3.3
typescript                         3.1.3
webpack                            4.29.0

编辑:此问题已在 Angular cli github 存储库中报告https://github.com/angular/angular-cli/issues/13588 https://github.com/angular/angular-cli/issues/13588所以这是 cli 中的错误。


我今天遇到了这个问题。经过几个小时的尝试,我以不同的方式找到了解决方案。它在开发模式下直接导入库代码,并在构建应用程序时使用构建的库。 以下是步骤:

  • 在库项目的public-api文件夹下添加index.ts,内容为

    export * from './public-api';
    
  • 在根 tsconfig.json 中添加路径别名

    "paths": {
      "lib-name": ["projects/lib-name/src"],
      "lib-name/*": ["projects/lib-name/src/*"]
    }
    
  • 在 src\tsconfig.app.json 中添加路径别名,此配置将用于ng build.

    "paths": {
      "lib-name": ["../dist/lib-name"],
      "lib-name/*": ["../dist/lib-name/*"]
    }
    
  • 在 tsconifg.app.json 文件夹中添加新的 tsconfig.dev.json

    {
        "extends": "./tsconfig.app.json",
        "compilerOptions": {
            "baseUrl": "./",
            "paths": {
                "lib-name": ["../projects/lib-name/src"],
                "lib-name/*": ["../projects/lib-name/src/*"]
            }
        },
        "exclude": [
            "test.ts",
            "**/*.spec.ts"
        ],
    }
    
  • 更新 angular.json

    • 在构建 -> 配置部分添加新配置“dev”
    "dev": {
        "tsConfig": "src/tsconfig.dev.json"
        }
    
    • 在服务->配置部分添加新配置“dev”,请将AppName重命名为您的项目名称
    "dev": {
        "browserTarget": "AppName:build:dev"
    }
    
  • 启动开发模式ng serve -c=dev现在我不需要启动 2 ng 进程来分别观看库和应用程序,也避免了以下问题Running ng build --watch并不总是接受一些代码更改#9572 https://github.com/angular/angular-cli/issues/9572

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同时运行 ng build --watch 和 ngserve 时,Angular 7 库 html 模板更改不会影响应用程序 的相关文章

随机推荐

  • 如何在 python 3.x 中操作嵌套字典?

    我被这个问题困扰了 你能解决这个挑战吗 开始了 我们在二级字典中表示一系列比赛中球员的分数 如下所示 match1 player1 57 player2 38 match2 player3 9 player1 42 match3 playe
  • 为什么用户名不能更改?

    我到处都读到 并在实践中看到 用户名不应该更改 当我问为什么时 给出的理由是 安全 我一直在寻找关于为什么更改用户名不安全的明确答案 但我似乎找不到答案 这里有哪位有安全经验的人可以回答这个问题吗 注 如果您不知道答案 请不要猜测 我自己也
  • 如何使用类路径位置

    为了解决这个问题 我到处寻找 但找不到解决方案 问题如下 我在 Tomcat 7 服务器上构建了一个 Spring mvc web 应用程序 准确地说是 7 0 12 并且我在获取
  • 扩展 TabViewStyle styleData

    我目前正在尝试找到一种更好的方法来执行此操作 将图标添加到选项卡 现在 我正在放弃 styleData title 以包含图标源 但如果能够扩展 styleData 就更好了 这样我就可以包含其他自定义属性 这是我当前的黑客 Tab tit
  • Docker 端口未映射

    如果这很明显 我很抱歉 但我很难从主机上的容器外部访问 Docker 化服务器 这就是我正在做的 我使用以下命令运行容器 docker run it rm name aurelia dev p 8888 8080 v Users tersk
  • 仅适用于 Firefox 的不同字体大小

    我只是为我的网站添加一个帐户标题 仅显示玩家的用户名 我正在使用自定义字体 它在 Chrome 和 IE 上运行良好 但是对于 Firefox 它不显示自定义字体 只显示下一个可用字体 即 Verdana 我不介意 但我的问题是 Verda
  • 如何防止 VC++ 9 链接器链接不必要的全局变量?

    我正在玩功能级链接 http msdn microsoft com en us library xsa71f43 VS 80 aspx在VC 中 我已启用 OPT REF 和 OPT ICF http msdn microsoft com
  • 在webview android上显示网页的一部分

    我想制作一个将网页内容加载到 webview 中的应用程序 我只想显示整个网页视图中的特定内容 而不是网页的全部内容 这是一个例子 如果我使用 作为 webview 的 URL 它会加载 webview 上页面的所有内容 但我想删除页面的横
  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • 如何在应用程序中从 Xcode 的“支持文件”组访问文件?

    我有一个应用程序 现在我几乎已经完成了 在数据输入流程结束时发送电子邮件 发送两个 pdf 文件 其中一个是根据输入的数据生成的 另一个是静态文件 在每个实例中都相同 第一个 pdf 生成正常 它已保存到应用程序的 文档 文件夹中 并且我已
  • 面向 Delphi 开发人员的 Qt

    有人知道为 Delphi C Builder VCL 开发人员解释 Qt 的书籍或教程吗 对于具有该背景的开发人员来说 学习 Qt 的最佳方法是什么 我对如何使用 Qt 完成我知道如何在 Delphi 中完成的事情特别感兴趣 例如 Qt 相
  • VBA 按用户范围选择排序

    在过去的三天里我一直在为这个问题苦苦挣扎 所以请帮忙 我想做的是当我运行 Macro1 时 为了论证 将弹出窗口以选择应排序的单元格范围 通过选择的最后一列 或第五列 对这些进行排序 从最低数字到最高数字 这里的问题是所选区域每次都会改变
  • 无法单步执行远程 SQL Server 2008 上的存储过程

    我在虚拟上安装了一个域控制器Windows Server 2008 x64 SQL Server 2008 Express x64正在运行Windows Server 2008 x64和客户端Windows 7 RTM x86 两者都已加入
  • NumPy 或 SciPy 计算加权中位数

    我正在尝试自动化 JMP 执行的流程 分析 gt 分布 输入 A 列作为 Y 值 使用后续列 作为 权重 值 在 JMP 中 您必须一次执行一列 我想使用 Python 循环所有列并创建一个数组 显示每列的中位数 例如 如果质量数组为 0
  • Javascript:函数的“无限”参数?

    在 Chrome 中 当我输入console log在下面的一项中 console log A parameter A parameter A parameter A parameter A parameter A parameter A
  • 查找导航属性的相关 FK 属性

    在运行时 我想查找 EntityObject 是否也具有给定 NavigationProperty 的外键属性 我在下面的两个步骤中做到了这一点 我想这将需要一些元数据查询 我不确定如何测试元数据类是否指向特定 EntityObject 类
  • 检索用户关注的所有用户的帖子 -rails -ActiveRecord

    我有一个简单的 Rails 应用程序 用户可以在其中互相赠送虚拟礼物 每件礼物都属于两个用户 赠送者和接收者 In my User rb has many given gifts class name Gift foreign key gi
  • 如何使第一行变成第二级MultiIndex

    我有一个现有的 DataFrame 如下所示 1 1 1 2 2 2 2 abc def ghi jkl mno pqr stu 1 00 2 00 3 00 4 00 5 00 6 00 7 00 1 00 2 00 3 00 4 00
  • 何时计划 (SELECT) 查询?

    在 PostgreSQL 中 什么时候计划 SELECT 查询 Is it 在报表准备时 或者 在处理 SELECT 开始时 或者 别的东西 我问的原因是 Stackoverflow 上有一个问题 相同的查询 两种不同的方式 性能截然不同
  • 同时运行 ng build --watch 和 ngserve 时,Angular 7 库 html 模板更改不会影响应用程序

    当 Angular 7 库 html 模板更改使用 ng build library watch 和 ngserve application 在不同的 cmd 中同时运行时 不会影响 Angular 应用程序 所以我首先使用 watch 标