Почему неиспользуемые методы publi c из сервисов удаляются с помощью tree-shake - PullRequest
0 голосов
/ 03 августа 2020

Мы разрабатываем веб-приложение с использованием довольно большого API, который включен как npm библиотека. В библиотеке есть много методов, которые не используются в приложении, и мы предполагали, что эти методы не включены в производственную сборку. Однако проверка для указанного метода c, который не используется в приложении, по-прежнему включена в производственную сборку.

Пример:

Созданная производственная сборка : unused method is included in production build which is not used in the application: метод не используется в проекте

Почему дерево не стряхивается, и есть ли способ поколебать его? (например, при более строгой настройке)

1 Ответ

0 голосов
/ 03 августа 2020

Tree shaking управляет служебным кодом, глядя на пути импорта. Если он импортирован, шейкер дерева предполагает, что он используется в приложении.

Например. Когда мы внедряем службу в @NgModule, мы упоминаем службу в импорте, и, следовательно, она удаляется и рассматривается как используемая сущность шейкером дерева

@NgModule({
  imports: [],
  declarations: [AppComponent],
  bootstrap: [AppComponent],
  providers: [SomeService]
});

Если мы внедряем службу с помощью @ Injectable ' providedIn ', сервис будет внедрен только тогда, когда модуль запросит его, в противном случае он будет удален treehaker. С помощью ' providedIn ' мы можем указать Angular, в каком модуле зарегистрировать нашу службу.

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class SomeService{
  constructor() {}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...