Dart 省道检查是否正在建造

Dart 省道检查是否正在建造,dart,dart2js,Dart,Dart2js,我想跳过一些关于pub构建的特定代码 例如: print('something${StackTrace.current}') 我希望上面的代码不会在生产模式下传输给JS。断言仅在选中模式下执行,默认情况下不会包含在生产模式下的发布版本中: assert(() { Log.print('something ${StackTrace.current}'); return true; }) 不打印它,因为它是在生产模式下生成的 您还可以将“环境”(不与OS环境变量混淆)传递到pub buil

我想跳过一些关于pub构建的特定代码

例如:

print('something${StackTrace.current}')


我希望上面的代码不会在生产模式下传输给JS。

断言仅在选中模式下执行,默认情况下不会包含在生产模式下的发布版本中:

assert(() {
  Log.print('something ${StackTrace.current}');
  return true;
})
不打印它,因为它是在生产模式下生成的

您还可以将“环境”(不与OS环境变量混淆)传递到
pub build
,并在代码中读取它

transformers: # or dev_transformers
- $dart2js:
  environment: { PROD: "true" }

另请参见

了解更多信息:如果我将整个Log.print函数放在一个assert中,那么对该函数的调用也将被树抖动删除?是的。如果您将它放在
assert(…)
之外,并且只从内部调用它,那么也应该删除它。如果它不是从任何地方使用的,那么树震动应该将其删除,如果它是从代码中使用的,而这些代码没有像
assert(…)
中的代码那样进入构建输出。有关更多信息,请参阅和
const prod = String.fromEnvironment('PROD')
print('PROD: $prod');
// prints 'PROD: null' in Dartium
// prints 'PROD: true' in Chrome