尝试使用 Angular-CLI 发布和安装自定义 angular2 组件;只编译第一次

Trying to NPM publish and install a custom angular2 component with Angular-CLI; only compiles the first time

我遇到了一个最不寻常和最令人沮丧的问题。

我有一个名为 via-date-picker 的 Ng2 组件,我正在尝试将其发布到 NPM,以便它可以轻松地用于其他项目。为此,我把它做成一个Angular2组件库。 via-date-picker 导出一个名为 ViaDatePickerModule 的模块,我想将其导入其他地方。

为了测试并确保它被正确发布,我正在安装 NPM 并将其导入到一个空的 Angular-CLI 项目中,我正在调用 npm-测试

所以我 运行 我的 npm-test 应用程序使用 "ng serve",我得到这个错误:

ERROR in ViaDatePickerModule is not an NgModule webpack: Failed to compile

然而,尽管出现了这个错误,该项目仍然可以编译:

当我打开我的项目时,你瞧,一切正常!!

但这只发生在我 运行 项目的 第一次 时间。在通过 "ng serve" 对项目 运行 的连续尝试中,我得到了相同的编译错误,但这次项目完全拒绝完成它的编译:

我不知道为什么我会收到这个错误,也不知道为什么 Angular-CLI 有时会 运行 我的项目而不是其他项目。

我在网上搜索了答案并尝试了所有我能找到的解决此错误的方法,以及我能想到的所有其他方法:

无论我做什么,我总是遇到我在上面发布的相同的 webpack 错误; ViaDatePickerModule 不是 NgModule。我完全没有想法。任何人都可以提供的任何帮助都会非常有用。

为了完全彻底,我创建了一个 public repo on github here 包含所有涉及的文件,分为两个主要目录:

再次强调,任何人都可以提供任何帮助,我们将非常非常感谢!真的,我将永远感激不已。

如果您 %100 确定您的所有消费者都会从 TS 项目(例如 angular-cli)导入您的组件、模块等。您可以直接发布 TS 源代码而无需转译。 IE。您将发布静态 .ts 文件,这些文件可以导入任何将为您进行转译的项目。

但是,如果您希望您的库 也作为 JS es5es6 模块 使用,那么您 应该转译。

此外,您可以尝试使用 angular 编译器 ngc 而不是 typescript 编译器 tscngctsc 的包装。您可以从那里开始,那里有许多库启动器可以帮助您启动 angular 库并针对 AOT 编译对其进行优化。