Dart 中的构建时值注入
Build-time value injection in Dart
我对 Dart 比较陌生,但我正在尝试使用 Dart 2 和 Angular 5 构建一个相当简单的 UI 来与 API 通信。我为自己设定的两个目标是
- API 托管在 App Engine 上,UI 托管在 Firebase 托管上,作为单独的模块;
- 这两个模块可以在我的本地开发机器上轻松使用,而无需在部署前修改代码。
为了实现这一点,我正在考虑使用 Maven 的 属性 注入或 Gradle 的 BuildConfigField 在构建期间注入 API 主机,设置 http://localhost:8080
在开发和 https://api.example.com
生产中,但我在 Dart/build_runner
.
中找不到任何为此目的的东西
这在 Dart-Angular 中被认为是一种好的做法吗?如果是这样,我该如何实现?如果不是, 什么是好的做法?
听起来您正在寻找
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
我对 Dart 比较陌生,但我正在尝试使用 Dart 2 和 Angular 5 构建一个相当简单的 UI 来与 API 通信。我为自己设定的两个目标是
- API 托管在 App Engine 上,UI 托管在 Firebase 托管上,作为单独的模块;
- 这两个模块可以在我的本地开发机器上轻松使用,而无需在部署前修改代码。
为了实现这一点,我正在考虑使用 Maven 的 属性 注入或 Gradle 的 BuildConfigField 在构建期间注入 API 主机,设置 http://localhost:8080
在开发和 https://api.example.com
生产中,但我在 Dart/build_runner
.
这在 Dart-Angular 中被认为是一种好的做法吗?如果是这样,我该如何实现?如果不是, 什么是好的做法?
听起来您正在寻找
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