Dart中的构建时价值注入

时间:2018-08-18 11:02:03

标签: angular build dart development-environment

我对Dart还是比较陌生,但是我试图使用Dart 2和Angular 5构建一个相当简单的UI与API进行通信。我为自己设定的两个目标是

  1. 将API作为单独的模块托管在App Engine上,将UI托管在Firebase Hosting上;
  2. 这两个模块可以在本地开发机器上轻松使用,而无需在部署前修改代码。

为实现这一点,我当时考虑使用Maven的属性注入或Gradle的BuildConfigField之类的东西在构建过程中注入API主机,在开发过程中设置http://localhost:8080,在生产过程中设置https://api.example.com,但是在Dart / build_runner中找不到为此目的的任何东西。

在Dart-Angular中,这是否被认为是一种好习惯?如果是这样,我该如何实现?如果没有,什么 会是个好习惯?

1 个答案:

答案 0 :(得分:3)

您正在寻找的声音

https://github.com/dart-lang/webdev/issues/73
如果您使用webdev

https://github.com/dart-lang/build/issues/1053 如果您使用pub run build_runner --config=dev ...

您可以在build.dev.yaml中用不同的值为不同的配置配置变量

来自https://github.com/dart-lang/build/issues/1053#issuecomment-368345014

targets:
  runny:
    sources:
      exclude: ["lib/builder.dart"]
    builders:
      sass_builder|sass_builder:
        enabled: False
      angular_components|scss_builder:
        enabled: True
      build_web_compilers|entrypoint:
        generate_for:
        - web/main.dart
        options:
          compiler: dartdevc
          dart2js_args:
          - --define env=dev

您可以使用读取值

const currentEnv = String.fromEnvironment('env');

https://docs.flutter.io/flutter/dart-core/String/String.fromEnvironment.html