如何在没有 Ivy 的情况下编译库?

Posted

技术标签:

【中文标题】如何在没有 Ivy 的情况下编译库?【英文标题】:How to compile a library without Ivy? 【发布时间】:2020-03-25 12:56:13 【问题描述】:

我正在发布一个库,当我 cd 到 dist/my-library 时,我收到消息:

错误:试图发布已由 Ivy 编译的包。这是不允许的。 请在尝试发布之前删除并重新构建包,不要使用 Ivy 进行编译。

没有常春藤我们如何重建?

【问题讨论】:

你试过禁用常春藤吗? "enableIvy": false? 我们把它放在 angular.json 中 它应该在 tsconfig.json 文件中作为angularCompilerOptions的一部分 【参考方案1】:

修复此警告:

尝试通过在"angularCompilerOptions" 中添加以下行来禁用tsconfig.lib.json 中的Ivy:-

"enableIvy": false

或者

使用--prod构建

例如:ng build your-package-name --prod

【讨论】:

【参考方案2】:

修复angular 9.x.x

如果您将应用迁移到 Angular 9 并看到此类错误,请确保使用 --prod 选项构建您的库,它不会使用 IVY 构建

ng build yourLibraryName --prod

当您通过--prod 时,它将在没有常春藤选项的情况下构建,并且将被允许发布。

作为迁移的一部分,Angular CLI 创建 tsconfig.lib.prod.json 并配置为不使用 IVY,一切就绪

【讨论】:

【参考方案3】:

在库项目中有一个tsconfig.lib.json 文件。这是我的 Angular 编译器配置:

  "angularCompilerOptions": 
    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "enableResourceInlining": true,
    "enableIvy": false
  ,

【讨论】:

以上是关于如何在没有 Ivy 的情况下编译库?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CL 在没有主函数的情况下编译 C?

如何在没有 Cygwin 或 Visual Studio 的情况下编译 Magick++?

QRegexp 特质(与 perl 相比):如何在没有惰性量词的情况下编写此正则表达式?

如何在没有递归的情况下编写Max Heap代码

如何在没有Android Studio的情况下编译JNI共享库,并在[关闭]中编译依赖项

如何在没有 JSF 标记库(h:datatable 或 ui:repeat)的情况下编写 <table> 标记,但仍使用 JSF 来控制页面流