如何创建可重用的angular 2组件(库) 我使用angular CLI创建了一个简单的angular组件(ng新组件名称,这有示例模块) 已将组件名称发布到我的专用npm存储库 ng build用于创建分发文件-dist/mySampleComponent.js : : 使用angular CLI创建了另一个简单的angular应用程序 是否安装了npm以安装模块组件名称 模块已成功复制到节点_modules/@private repo/component name下的angular应用程序 当我从AppModule中的“@private repo/component name”导入{SampleModule}时;我得到以下错误

如何创建可重用的angular 2组件(库) 我使用angular CLI创建了一个简单的angular组件(ng新组件名称,这有示例模块) 已将组件名称发布到我的专用npm存储库 ng build用于创建分发文件-dist/mySampleComponent.js : : 使用angular CLI创建了另一个简单的angular应用程序 是否安装了npm以安装模块组件名称 模块已成功复制到节点_modules/@private repo/component name下的angular应用程序 当我从AppModule中的“@private repo/component name”导入{SampleModule}时;我得到以下错误,angular,Angular,模块“…/node_modules/@private repo/component name/dist/mySampleComponent”没有导出的成员“SampleModule” 有什么想法吗?“ng build用于创建分发文件-dist/mySampleComponent.js” 我怀疑这就是你出错的地方 当您构建一个角度项目时,它会将typescript编译为javascript。Javascript没有模块或组件,因为它们被转换为本机Javascript/webpack代码 您得到错误

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

有什么想法吗?

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

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

当您
构建一个角度项目时,它会将typescript编译为javascript。Javascript没有模块或组件,因为它们被转换为本机Javascript/webpack代码

您得到错误的原因

 Module '".../node_modules/@private-repo/component-name/dist/mySampleComponent"' has no exported member 'SampleModule'.` 
。。。这是因为您的
mySampleComponent.js
不再包含角度传输程序可识别的相关模块装饰器/元数据


如果您进入angular项目并浏览
node_模块
中的一些预编译导入,例如
@angular/core
rxjs
等中的导入,您将看到这些都包括typescript文件。将其与编译后使用的文件进行比较,您可以看到它们只包含
.js
文件。这是由于上述原因

  • ng build只编译typescript和javascript
  • 要获得Javascript的传输版本,我们可以使用编译器“ngc”
  • 如果您的代码包含css和html,那么我们需要额外的捆绑API,比如webpack

  • 因此,为了构建angular库,我们需要ngc+webpack(SystemJS、gulp或任何其他构建框架)

    似乎您使用angular的方式并不完全符合标准。Angular是一个用于开发单页web应用程序的框架,并不是为创建独立的npm模块而设置的。使用
    ng build
    构建web应用程序后,它只是一个单页web应用程序。在导出部分的sample.module:[…]放置您的模块和组件。ts配置中的以下编译器选项{''target:“es5”,“module:“es2015”}是否足以生成适合任何浏览器的最终包