ng build不包含库模块的组件类代码

时间:2018-07-05 17:19:52

标签: angular

我创建了一个库,其中包含带有组件的模块。

我的图书馆public_api.ts具有此功能:

export * from './src/app/modules/my-mod-1/my-mod-1.module';

现在,此模块具有可在module.ts文件中导出并声明的组件

@NgModule({
    imports:      [
        ...
    ],
    declarations: [
        MyOneComponent
    ],
    exports:      [
        MyOneComponent
    ]
})

现在,我使用ng-packagr创建软件包,并使用.tgz文件中的npm install将其导入另一个项目中。

当我在开发模式下运行该组件时,它可以与所有生命周期挂钩正常工作。

但是,当我使用ng build创建构建时,它不会调用生命周期挂钩。尽管它确实在组件的html文件中打印了所有内容,但是似乎缺少了组件类代码。

在运行开发模式时,我签入了vendor.js文件,在那里我可以轻松找到组件类代码(实际上,我搜索了打印在组件类代码中的console.log代码,该代码正在显示在那里)

但是由build命令生成的main.xxxxxx.js中缺少相同的代码。而且build命令根本不会创建vendor.js文件,因为main.js中包含了vendor.js

所以问题是项目构建中未包含库类代码,为什么会发生这种情况?

项目中有太多代码,我想不到应该在此处粘贴代码的哪些部分来帮助您理解问题。所以请让我知道我还要在这里复制什么。

谢谢

1 个答案:

答案 0 :(得分:1)

我从这里得到了一些帮助: https://github.com/angular/angular-cli/issues/11394

似乎:

1)您应该将库使用的所有组件和模块导出到user-id文件中。

2)显然删除了public_api.ts文件夹,然后通过node_modules重新安装似乎可行,库中的缓存文件似乎已损坏

现在我的应用程序也可以在生产中使用!