在其他应用中重用Angular 2模块而不发布到npm?

时间:2016-10-18 19:59:53

标签: angular github module npm

假设您有两个不同的Angular 2应用程序,并且它们都需要使用相同的组件。

我创建了通用组件,按照本教程http://blog.angular-university.io/how-to-create-an-angular-2-library-and-how-to-consume-it-jspm-vs-webpack/创建了一个库,但是npm会将我的代码公开,我将不得不付费将其设为私有。

所以,问题是: 1.我应该如何创建可供工作团队使用的组件? 2.是否有必要发布到npm或者我可以将我的代码推送到私有github仓库吗?如果是这样,我该怎么做?在应用程序中重用代码的过程是什么?

提前致谢。

2 个答案:

答案 0 :(得分:0)

package.json允许您引用从git存储库下载的包,这可能是您在内部使用的包。见NPM documentation

格式示例:

git+ssh://git@github.com:npm/npm.git#v1.0.27
git+ssh://git@github.com:npm/npm#semver:^5.0
git+https://isaacs@github.com/npm/npm.git
git://github.com/npm/npm.git#v1.0.27

所以这会在你的package.json中给出类似的东西:

"dependencies": {
   "privatepackage":"git://localgitserver/git/privatepackage.git"
}

答案 1 :(得分:0)

我建议您使用NX,在应用程序之间共享代码很简单

  • 创建NX工作区

    npx --ignore-existing create-nx-workspace MY_WORK_SPACE
    

您现在可以在该工作区中创建multiplr应用程序,它们可以是Angular应用程序或React App或它们之间的混合体

   ng add @nrwl/angular --defaults
   ng g @nrwl/angular:application app1 // generate first app
   ng g @nrwl/angular:application app2 //generate second app

它们在应用目录下可见

enter image description here

因此,现在您有了应用程序,就可以通过生成库在应用程序之间共享代码

 ng g @nrwl/angular:lib ui // ui is the name of your library

它现在在libs目录下可用

enter image description here

您现在可以通过生成组件和服务来使用库:

ng g component sharedComponent --project=ui --export

最后,您可以通过导入UiModule来在应用程序(app1和app2)中使用您的库

import { UiModule } from '@MY_WORK_SPACE/ui'; // @nameOfYourCreatedWorkspace/nameOfLibrary

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, HttpClientModule, UiModule], // import here
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

还有瞧!