如何在没有 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 的情况下编译库?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 Cygwin 或 Visual Studio 的情况下编译 Magick++?
QRegexp 特质(与 perl 相比):如何在没有惰性量词的情况下编写此正则表达式?
如何在没有Android Studio的情况下编译JNI共享库,并在[关闭]中编译依赖项
如何在没有 JSF 标记库(h:datatable 或 ui:repeat)的情况下编写 <table> 标记,但仍使用 JSF 来控制页面流