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

Ole*_*Ole 9 javascript node.js npm typescript angular

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

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

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

Ani*_*Das 11

修复 angular 9.x.x

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

ng build yourLibraryName --prod
Run Code Online (Sandbox Code Playgroud)

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

作为迁移的一部分,angular CLI 创建tsconfig.lib.prod.json并配置为不使用 IVY,您就完成了


Ole*_*Ole 10

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

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

Run Code Online (Sandbox Code Playgroud)


小智 5

要修复此警告:

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

"enableIvy": false

或者

构建与--prod

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