首页 文章

如何创建可重用的角度2组件(库)

提问于
浏览
0
  • 我有一个使用角度CLI创建的简单角度组件(ng new component-name,它有示例模块) .

  • 将组件名称发布到我的私有npm存储库 .

  • ng build 用于创建分发文件 - dist / mySampleComponent.js ::

  • 使用角度CLI创建了另一个简单的角度应用程序 .

  • 是否安装了npm以安装模块组件名称

  • 模块已成功复制到node_modules / @ private-repo / component-name下的角度应用程序

  • 当我从AppModule中的'@private-repo/component-name'导入时;我收到以下错误

模块'“... / node_modules / @ private-repo / component-name / dist / mySampleComponent”'没有导出的成员'SampleModule' .

有什么想法吗?

2 回答

  • 0

    "ng build is used to create the distribution file - dist/ mySampleComponent.js"

    我怀疑这是你出错的地方 .

    当你 build 一个角项目时,它会将打字稿编译成javascript . Javascript没有模块或组件,因为它们被转换为本机javascript / webpack代码 .

    你收到错误的原因......

    Module '".../node_modules/@private-repo/component-name/dist/mySampleComponent"' has no exported member 'SampleModule'.`
    

    ...是因为你的 mySampleComponent.js 不再包含角度转换器可识别的相关模块装饰器/元数据 .


    如果你进入一个角度项目并浏览 node_modules 中的一些预编译导入,例如 @angular/corerxjs 等中的那些,你会发现这些都包含了打字稿文件 . 将其与编译后使用的文件进行比较,您可以看到它们只包含 .js 文件 . 这是由于前面提到的 .

  • 0
    • ng build只需编译typescript并吐出javascript

    • 要获得Javascript的转换版本,我们可以使用编译器'ngc'

    • 如果你的代码包含css和html,那么我们需要额外的bundle API,比如webpack

    所以为了构建一个角度库,我们需要ngc webpack(SystemJS,gulp或任何其他构建框架)

相关问题