JHipster 应用程序中的功能标志

Feature flags in JHipster applications

在基于 jhipster/angular 的应用程序中使用功能标志的推荐方式/最佳实践是什么?

我修改了我的webpack.dev.js:

    plugins: [
        new webpack.DefinePlugin({
          'EXPERIMENTAL_FEATURE': true
        }),

我也试过:

    plugins: [
        new webpack.DefinePlugin({
          'EXPERIMENTAL_FEATURE': JSON.stringify(true)
        }),

不幸的是,我无法在任何 TS 组件/代码中以这种方式使用 EXPERIMENTAL_FEATURE

Webpack: Starting ...

  √ Compile modules
  > Build modules (75%)
    → 0 of 2 modules :: src/main/webapp/app/entities/microservice/microservice-dashboard/microservice-card/microservice-card.component.ts ~ internal

ERROR in src/main/webapp/app/entities/microservice/microservice-dashboard/microservice-card/microservice-card.component.ts:21:31 - error TS2304: Cannot find name 'EXPERIMENTAL_FEATURE'.

21     const hideSomeComponent = EXPERIMENTAL_FEATURE;

                                 ~~~~~~~~~~~~~~~~~~~~

问题不在于你如何定义常量,而在于你如何在打字稿代码中使用它。

看看它是如何为 BUILD_TIMESTAMP 完成的,它是使用 DefinePlugin webpack 插件定义的,但关键是使用 process.env.BUILD_TIMESTAMP 定义一个新常量 BUILD_TIMESTAMPapp.constant.ts 中导出。

然后在microservice-card.component.ts

中导入
import { BUILD_TIMESTAMP} from 'app/app.constants';