我希望在发布构建时跳过一些特定的代码。
例如:
Log.print('something $ {StackTrace.current}');
我希望上述代码在生产环境中不被转换为JS。
断言只在检查模式下执行,并且默认情况下不会被pub build
在生产模式中包含:
assert(() {
Log.print('something ${StackTrace.current}');
return true;
})
DartPad示例没有输出,因为它是在生产模式下构建的。
您还可以将“环境”(不要与操作系统环境变量混淆)传递给pub build
并在代码中读取它。
transformers: # or dev_transformers
- $dart2js:
environment: { PROD: "true" }
const prod = String.fromEnvironment('PROD')
print('PROD: $prod');
// prints 'PROD: null' in Dartium
// prints 'PROD: true' in Chrome
assert(...)
之外并且只从内部调用它,那么它也应该被删除。如果它没有被任何地方使用,树摇应该会将其移除,即使它被用在不包括构建输出的代码中,例如在assert(...)
内部的代码中。 - Günter Zöchbauer