Angular:仅适用于dev的延迟加载模块(environment.production === false)

时间:2019-04-24 15:58:30

标签: angular

我有一个延迟加载的模块,仅用于开发目的,我不想将其部署到生产版本中。

在守卫的帮助下,我拒绝了激活和加载:

const routes: Routes = [
  {
    path: 'dev',
    loadChildren: './features/dev/dev.module#DevModule',
    canActivate: [DevelopmentGuard],
    canLoad: [DevelopmentGuard]
  },
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

后卫:

@Injectable({
  providedIn: 'root'
})
export class DevelopmentGuard implements CanActivate, CanLoad {

  constructor() {}

  canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    return this.can();
  }

  canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    return this.can();
  }

  canLoad(route: Route, segments: UrlSegment[]): boolean {
    return this.can();
  }

  private can(): boolean {
    return (environment.production === false);
  }
}

它起作用,我的dev模块仅在dev中起作用,但是dev模块的脚本在构建中。

有没有一种方法可以从生产版本中完全删除脚本?

1 个答案:

答案 0 :(得分:5)

选项1

consoleInputReadTask

选项2。

consoleInputReadTask.stop()

使用选项2,如果将devRoutes移至环境配置,则可以使其变得更好