在Angular2中将某些组件从生产中撤出?

时间:2017-07-31 23:48:37

标签: angular compilation

有没有办法在Angular2 / 4中的生产版本的构建时省略我选择的代码的组件/部分?

我有一个应用程序,它有一个我在本地使用的管理工具。我希望这个管理工具不在应用程序的生产版本中。我当然可以 - 每次进行生产构建时都会对代码进行注释,但是有更优雅的解决方案吗?像条件构建代码的某些部分一样?

我正在寻找类似* ngIf =" buildingForProduction"类型解决方案的类型。它存在吗?

2 个答案:

答案 0 :(得分:2)

基于@cyrix的回答。

使用ang cli时,有一个名为environment的文件夹,默认情况下包含文件environment.prod.ts和environment.ts。如果需要,可以为不同的版本添加更多内容,并相应地配置您的应用程序。

这些文件包含如下对象:

export const environment = {
  production: false,
  myVariable: 'This variable is not included in production build'
};

使用

构建应用时
ng build --env=prod

然后ang cli将使用environment.prod.ts。如果你用

构建
ng build

然后使用默认的environment.ts。

通过向此环境对象添加变量,您可以在应用程序中导入它并读取变量。像这样你可以检查你是否在生产版本中:

import { Component } from '@angular/core';
import { environment } from './../environments/environment';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  constructor() {
    console.log(environment.production); // Logs false for default environment
  }
  title = 'app works!';
}

答案 1 :(得分:-1)

一种可能的解决方案是修改tsconfig.json并添加要添加的排除,文件夹或文件。

"exclude": [
  "**/*file.ts", 
  "**/*config.ts"
]

不幸的是,每个项目只能有一个tsconfig.json文件,如果有多个像dev,prod,很希望看到这个功能很快就会出现https://github.com/Microsoft/TypeScript/issues/3645。希望它有所帮助。