javascript - 条件环境变量摇树

标签 javascript angular typescript tree-shaking

目前我正在尝试根据环境变量删除未使用的代码。 在下面的代码中,当我运行 ng build --prod 并在 environment.prod.ts 中设置 evironment.showDevTools = false 时,我期望console.log 不会包含在最终的构建文件中,但不幸的是它是。我做错了什么?

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

if (environment.showDevTools) {
  console.log('showing dev-tools');
}

@Component({
  selector: 'app-component',
  templateUrl: './app.html',
  styleUrls: ['app.scss']
})
export class AppComponent {

}

main.js 的一部分

,ut=n("AytR");ut.a.showDevTools&&console.log("showing dev-tools");var st=function(){

最佳答案

我必须向 package.json 添加一个名为 "sideEffects": false 的字段。所以目前看起来像这样:

{
  "name": "myApp",
  "version": "1.0.0",
  "sideEffects": false,
  "scripts": {
    "ng": "ng",
    "test": "ng test",
    ...
  },
}

引用文献:https://webpack.js.org/guides/tree-shaking/ , https://github.com/stereobooster/package.json#sideeffects

关于javascript - 条件环境变量摇树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55355282/

相关文章:

javascript - 使用字符串名称访问对象成员

javascript - Angularjs 验证 JWT

javascript - Angular 6 : Prevent Browser Tooltip to show HTML tags in "innerHtml"

angular - 失败: Template parse errors: 'mat-card-title' is not a known element

javascript - TypeScript:一个接口(interface)属性依赖于另一个

javascript - 设置验证的默认值

javascript - 替代 PhantomJS 进行测试

javascript - (异步 () => { })();这是什么?

angular - 在 azure map 中创建具有一百万个点的矢量切片

angular - 在为子级使用 router-outlet 时如何向 Angular 父级添加 CSS 类