Angular 8中的库摇树

时间:2019-11-29 03:17:46

标签: javascript angular typescript npm tree-shaking

我正计划为Angular 8+开发一个独立的角度服务,并且我一直在阅读如何使其可树状摇动。

IIUC all we need to do is this

@Injectable({
  providedIn: 'root',
  useFactory: () => new Service('dependency'),
})
export class Service {
  constructor(private dep: string) {
  }
}

这告诉Angular如何构造服务。

这是我们需要做的吗?我看过其他this one use ModuleWithProviders这样的NPM模块,如下所示:

 export class Module {
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: Module,
      providers: [
        StripeScriptTag
      ],
    }
  }

我认为这不是必需的,因为providers数组仍然没有描述如何实例化服务。

1 个答案:

答案 0 :(得分:2)

您需要的只是

"variables": {
    "certificateName": "[concat(parameters('certificatePrefixName'), uniqueString(resourceGroup().id))]"
  },
"resources": [
    {
      "apiVersion": "2015-08-01",
      "name": "[variables('certificateName')]",
      "type": "Microsoft.Web/certificates",
      "location": "[resourceGroup().location]",
      "properties": {
        "pfxBlob": "[parameters('certificatePfxBase64')]",
        "password": "[parameters('certificatePfxPassword')]"
      },
      "tags": {
        "displayName": "Certificate"
      }
    }
  ]

根目录中提供的服务可摇动树。如果它在根目录中提供,那么您将在整个应用程序中获得相同的单例实例。如果您希望跨模块的新服务实例而不是全局单例实例,则只需将其添加到providers数组。