Web*_*x23 5 production angular-cli angular angular-cli-v7
我有一个用于演示目的的角度模块(DevShowcaseModule)。此模块不应包含在生产版本中。为了向最终用户隐藏此演示并防止生产中的演示代码错误。
环境:
这是我的 app-routing.module.ts
{
path: APP_NAV_ITEMS.DEV_SHOWCASE,
canActivate: [ AuthGuard ],
loadChildren: './_dev-showcase/dev-showcase.module#DevShowcaseModule',
}
Run Code Online (Sandbox Code Playgroud)
我试图从 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/*"
]
}
Run Code Online (Sandbox Code Playgroud)
知道如何正确地做到这一点吗?
谢谢!
我认为您可以利用 CLI fileReplacements 功能,例如:
angular.json
"configurations": {
"production": {
"fileReplacements": [
...
{
"replace": "src/app/demo.routes.ts",
"with": "src/app/demo.routes.prod.ts"
}
],
Run Code Online (Sandbox Code Playgroud)
演示.routes.ts
import { Routes } from '@angular/router';
export const demoRoutes: Routes = [
{
path: 'demo',
loadChildren: './demo/demo.module#DemoModule'
}
];
Run Code Online (Sandbox Code Playgroud)
演示.routes.prod.ts
export const demoRoutes = [];
Run Code Online (Sandbox Code Playgroud)
根路由器配置应如下所示:
import { demoRoutes } from './demo.routes';
RouterModule.forRoot([
{
path: '',
component: HomeComponent
},
...demoRoutes
])
Run Code Online (Sandbox Code Playgroud)
使用这种方法,cli 只会DemoModule在开发模式下捆绑。
| 归档时间: |
|
| 查看次数: |
2277 次 |
| 最近记录: |