我正在編寫一個包,用於從lib
目錄加載其他數據並希望提供一種簡單的方法來加載此類數據這樣的:如何通過`pub run`命令在腳本運行時找到包目錄的路徑
const dataPath = 'mypackage/data/data.json';
initializeMyLibrary(dataPath).then((_) {
// library is ready
});
我做了兩個獨立的庫browser.dart
和standalone.dart
,類似於它是如何在Intl包完成。
從「瀏覽器」環境加載這些數據是相當容易的,但是對於「獨立」環境來說,由於使用pub run
命令,並不容易。
當腳本運行簡單的$ dart myscript.dart
時,我可以使用dart:io.PlatformPlatform.script
和Platform.packageRoot
屬性找到程序包路徑。
但是,當腳本與$ pub run tool/mytool
運行,正確的方式來加載數據應該是:
- 檢測腳本從酒吧運行命令
- 運行找到酒館服務器主機
- 從此服務器加載數據,因爲可能存在酒吧轉換器,我們無法直接從文件系統加載數據。
即使我想直接從文件系統,當該腳本與pub run
,Platform.script
回報/mytool
路徑運行加載數據。
所以,問題是有什麼方法可以找到該腳本從pub run
運行,以及如何找到pub服務器的服務器主機?
「有沒有辦法找到該腳本是從酒吧跑跑步嗎?」。可能不會。 「如何找到pub服務器的服務器主機?」。如果沒有記錄某些行爲,只有在查看「pub」的源代碼後才能找到(臨時)解決方案。這種方法的可靠性非常低,但這一切都取決於您希望分配給代碼的可靠性級別。 – mezoni 2014-10-18 13:04:05