Angular Ivy 编译器和 webpack

Angular Ivy compiler and webpack

我们想将新的 Angular 8 Ivy 编译器与 webpack 一起使用。我们不使用 Angular CLI。这可能吗?如何才能做到这一点?我似乎找不到有关此要求的信息。

Ivy 尚未正式发布。对于 Angular 的第 8 版,您可以选择使用 CLI 进行预览。

参见:https://blog.angular.io/a-plan-for-version-8-0-and-ivy-b3318dfc19f7

Angular 应该在版本 9 中完全切换到 Ivy。届时您可能会找到更多关于使用 Ivy 和自定义 webpack 配置的文档。

在那之前我会建议以下之一:

  1. Angular Builders repository and ask this question there. Angular builders is the go-to ng eject alternative 上打开一个新问题,当涉及到此类问题时,他们可能比堆栈溢出上的普通人有更多的答案。
  2. 在 Angular 存储库上打开一个问题并在那里提出这个问题。

Ivy 仍处于预览模式。如果您想尝试按照以下屏幕截图中的步骤操作,

官方文档中有提到,https://angular.io/guide/ivy#using-ivy-in-an-existing-project

要了解该怎么做,您必须深入研究 Angular CLI 代码,看看他们到底在哪里使用了 enableIvy 标志。

我还没有看到你的 Webpack 配置,但我猜你正在使用 AngularCompilerPlugin
如果是这种情况,那么您必须在 compilerOptions 中提供 enableIvy

有关更多详细信息,请查看 here (where the flag is defined), here (where the plugin options are defined) and here(插件的 compilerOptions 已初始化)。

插件配置可能如下所示:

... // The rest of your webpack config
plugins: [
  new AngularCompilerPlugin({
    compilerOptions: {
      enableIvy: true,
      ...// the rest of compiler options
    }
    ...// The rest of options you provide to AngularCompilerPlugin
  })
  ...// The rest of your plugins 
]

我不确定他们是否在其他地方使用这个标志,但这个地方是必须的,它可能会给你想要的东西。

无论如何,如果您想避免让自己头疼,我建议您坚持使用 Angular CLI。
否则你将不得不经常访问他们的代码库。

如果您使用的是 Webpack,那么很可能可以使用 Angular CLI 和 Custom Webpack Builder.
来完成您需要的操作 如果您在配置构建器时遇到困难,非常欢迎您访问 Angular Builders Slack channel.