【问题标题】:@ngtools/webpack does not build by entrypoint imports@ngtools/webpack 不通过入口点导入构建
【发布时间】:2019-04-13 20:47:34
【问题描述】:

我直接在 angular-app(没有 angular-cli)中使用 @ngtools/webpack,但我得到了意外的行为。 Aot 插件构建项目中的所有 ts 文件,但某些文件不是由入口点文件 (main.ts) 导入的。例如 - ts-loader 仅构建在入口点文件 (main.ts) 中通过导入找到的文件。这是错误还是功能?

我创建了迷你仓库:https://github.com/alxpsr/ngtools-unexpected 运行 npm run build:aot 你得到一个错误。但是如果你运行 npm run build:tsloader - 构建不会有错误。

如果这不是错误,请告诉我这两个版本有什么区别?

附:我知道 tsconfig.json 中的文件和包含选项,我可以在那里更清楚地指定文件。我想了解这两个版本之间的区别。 ^_^

【问题讨论】:

  • 嘿!你是否设法让它工作,所以它不会编译整个代码?
  • @Skeeve 你好!如果我没记错的话,我是这样做的:1)从tsconfig.include中删除掩码2)直接将TS入口点添加到tsconfig.files

标签: angular aot ngtools


【解决方案1】:

两个版本都不一样。使用 AOT 构建时,代码使用 Angular 编译器进行编译。它在部署之前编译所有代码,因此客户端浏览器不必做太多工作。例如,如果您在 HTML 中调用了一个函数,但没有在您的组件中定义该函数,那么 Angular 编译器会在构建应用程序本身时给您错误。

另一方面,当您使用 tsloader 构建时,构建成功,但是当您遇到此类错误时,应用程序会在运行时中断。

【讨论】:

  • 好的,谢谢。但是我不明白为什么 ngtools 编译整个项目时,ts-loader 编译器会逐步导入。
  • 这不是 ngtools,而是您正在使用的 Angular 编译器插件会有所不同。 tsloader也会编译完整的工程,忽略HTML错误,比如不正确的标签结尾,函数调用。
  • 问题是这个插件出于某种原因正在编译所有东西。它编译兄弟模块,编译测试。此外,它还报告运行时不存在的错误。它们根本不存在。如果这个编译器坚持它应该根据entryModule 编译的东西,那也不是问题
猜你喜欢
  • 2019-01-15
  • 2017-01-23
  • 2018-08-19
  • 1970-01-01
  • 2020-12-21
  • 2020-06-20
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多