【发布时间】:2019-09-27 06:36:25
【问题描述】:
我有一个用于演示目的的角度模块 (DevShowcaseModule)。此模块不应包含在生产版本中。为了向最终用户隐藏此演示并防止生产中的演示代码错误。
环境:
- Angular 版本:7.2.5
- Angular CLI:7.3.2
这是我的 app-routing.module.ts
{
path: APP_NAV_ITEMS.DEV_SHOWCASE,
canActivate: [ AuthGuard ],
loadChildren: './_dev-showcase/dev-showcase.module#DevShowcaseModule',
}
我试图从 tsconfig.json 中排除模块文件夹。但它不起作用,我仍然可以调用路由并加载演示模块。
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"importHelpers": true,
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
]
},
"exclude": [
"app/_dev-showcase/*"
]
}
知道如何正确地做到这一点吗?
谢谢!
【问题讨论】:
-
要么动态构建路由,要么使用路由保护来保护开发路由。
-
CanLoad - 决定是否可以延迟加载模块,控制是否可以加载路由。这对于延迟加载的功能模块很有用。如果守卫返回 false,它们甚至不会加载。
-
@ritaj 嗨,谢谢。我看到了那个解决方案,但是如果我通过路由执行,DevShowcaseModule 代码是否包含在产品构建中?我希望将 DevShowcaseModule 及其组件从产品构建代码中完全删除。
-
@Webworx23 我猜你指定的方法只在 Angular 4 之前有效。迁移到 angular 6 后,TS 似乎会构建它看到“import”语句的任何文件,无论它是否位于 tsconfig.json 的“exclude”属性中。如上所述,控制导入似乎是唯一可行的选择
标签: angular angular-cli production angular-cli-v7