我正在编写一个从lib
目录加载附加数据的包,并希望提供一种简单的方法来加载这些数据,如下所示:
const dataPath = 'mypackage/data/data.json';
initializeMyLibrary(dataPath).then((_) {
// library is ready
});
我制作了两个独立的库browser.dart
和standalone.dart
,类似于在Intl包中的完成方式。
从“浏览器”环境中加载这些数据很容易,但是在“独立”环境中,由于pub run
命令的原因,就不是那么容易了。
当脚本使用 simple 运行时,我可以使用dart:io.Platform和属性$ dart myscript.dart
找到包路径。 Platform.script
Platform.packageRoot
但是当脚本运行时$ pub run tool/mytool
,加载数据的正确方法应该是:
- 从 pub run 命令检测脚本是否正在运行
- 找到发布服务器主机
- 从这个服务器加载数据,因为可能有 pub 转换器,我们不能直接从文件系统加载数据。
即使我想直接从文件系统加载数据,当脚本运行时pub run
,Platform.script
返回/mytool
路径。
那么,问题是有什么方法可以找到正在运行的脚本pub run
以及如何找到 pub 服务器的服务器主机?