我正在寻找一个Angular2 datepicker组件,好像要发布并包含在多个项目中一样。与使用angular-cli
构建的常规Angular2项目相比,为此构造项目的最佳方法是什么?有没有很好的入门项目/种子可以完成此类任务的示例?还是组件库实际上应该是angular2应用程序本身?
我最初的假设是,我可以使用angular-cli
创建一个标准项目,该项目具有单个模块(例如MyDatepickerModule
),其中包含构成日期选择器的组件层次结构,但是我不知道这是否是最好的方法,因为不需要完整的应用程序提供的所有内容。
感谢您的指导!
最佳答案
我会考虑AoT兼容性发布该库。
这意味着使用ngc
编译器编译源。在分发包中,我将发布JS源,原始html / css文件,d.ts键入文件和ngc
生成的meta.json文件。
我建议使用es2015模块发布JS源代码,因为这会使您的库树可摇动。我的目标是es5 JS,但使用es2015模块。 TypeScript通过在tsconfig.json中将模块设置为ES2015并将目标设置为es5来实现此混合模式。
发布这些文件将使您的库AoT兼容并且可摇树。
这就是所有需要使用的应用程序,以便AoT将您的库编译为完整的应用程序。
不建议在您的程序包中发布TypeScript,因为这将要求使用者复制您的构建环境(类型+ TS编译器版本)。
您还可以发布具有内联模板和CSS的与JiT兼容的umd软件包。这可能会有所帮助,因为在开发过程中进行AoT可能不切实际,因为编译有点慢。 umd软件包将使您可以在基于JiT的开发环境中使用您的库。对于生产,尽管您绝对应该使用AoT版本。
CLI不是发布库的理想选择,因为CLI主要是用于构建完整应用程序的工具。他们将来可能会更好地支持图书馆。
关于javascript - 构造Angular2组件库的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41153438/