2016-12-14 96 views
2

我正在寻找在Angular2 datepicker组件上工作,就像在多个项目中发布和包含一样。与使用angular-cli构建的常规Angular2项目相比,为此构建项目的最佳方式是什么?这样的任务是否有任何优秀的启动项目/种子的例子?还是应该组件库实际上是一个angular2应用程序本身?什么是构建Angular2组件库的最佳方式?

我最初的设想是,我可以创建一个标准的项目,angular-cli具有单个模块(例如MyDatepickerModule),其中包含成分的形成日期选择器,但是我不知道这是不是最好的方式,因为我的等级不需要完整应用程序提供的所有内容。

感谢您的任何指导!

+0

您仍然可以使用angular-cli并删除不需要的部分。 cli让你立即潜入编码而不用担心webpack安装的能力是相当不错的。 –

+0

你打算如何将代码分发给这些多个项目?通过npm? – snorkpete

回答

2

我会发布带有AoT兼容性的库。

这意味着使用ngc编译器编译源代码。在分发包中,我将发布JS源代码,原始html/css文件,d.ts typings文件和ngc生成的metadata.json文件。

我推荐使用es2015模块发布JS源代码,因为这会让你的库树变得震撼。我将目标es5 JS,但与es2015模块。 TypeScript允许通过将模块设置为ES2015并将目标设置为tsconfig.json中的es5来实现此混合模式。

发布这些文件将使您的图书馆AoT兼容和树可摇摆。

这是所有消费应用程序的需求,以便将您的库编译成完整的应用程序。

不建议在你的包中发布TypeScript,因为这将要求消费者复制你的构建环境(typings + TS编译器版本)。

你也可以发布一个JiT兼容的umd包,内嵌模板和css。这可能是有帮助的,因为编译过程中开发过程中可能不实际,因为编译有点慢。 umd软件包将使您可以在基于JiT的开发环境中使用您的库。对于生产,虽然你一定要使用AoT版本。

由于CLI主要是构建完整应用程序的工具,因此CLI不适合发布库。尽管如此,他们可能会更好地支持图书馆。

+0

非常感谢,我将不得不阅读您提到的内容,但它在概念层面上有意义。 –

1

结账https://github.com/angular/material2。一个正在进行的工作,它是一个应用材料设计的Angular2的控件和主题库,是学习构建自己的控件库的极好来源。

+0

感谢您的支持! –

相关问题