簡體   English   中英

如何獲取Meteor包中文件的路徑?

[英]How do I obtain the path of a file in a Meteor package?

我知道如何從Meteor包中獲取當前目錄 ,但是如何獲取項目中特定文件的路徑?

節點的__dirname__filename在Meteor中不起作用。

這很復雜。

  1. meteor run將項目文件復制到<project-dir>/.meteor/local/build內的目錄樹中,以非顯而易見的方式重新組織它們(例如,原始樹中的private子目錄成為assets子目錄)並混合它使用各種npm模塊創建一個可以作為nodejs項目執行的包。 實際上,為了避免重復,在.meteor目錄中會自動設置一個.gitignore文件,告訴git,如果你用它進行版本控制,則不要復制.meteor / local目錄。

  2. 在您更改文件時,將監視原始項目目錄。 然后將更改復制到當前項目構建目錄中並重建項目。

  3. 如果部署到遠程系統,則構建將復制到服務器然后運行。

process通常是一個定義的全局服務器端對象,並根據node.js API工作,因為流星服務器代碼最終在node.js中運行。

所以你可以運行console.log(process.cwd()); 在服務器端獲取服務器進程的當前工作目錄,通常類似於:

~/<meteor project directory>/.meteor/local/build/programs/server

這表明當meteor run在本地完成時,原始項目文件位於../../../../../ ,但不要使用它,因為它可能在將來發生變化。

相反,對於包含原始項目文件的目錄,您可以使用:

baseDir = process.cwd().replace(/\/\.meteor.*$/, '');

這將獲取工作目錄,並截斷以/.meteor開頭的所有/.meteor

但是,這不適用於服務器部署,因為服務器上不需要原始項目樹,只需要構建。 不打算作為客戶端或服務器代碼的文件可能會卡在私有子目錄中,正如我所提到的那樣,它成為構建中的資產子目錄。 當前在構建中查找文件的方法是在本地運行中手動檢查.meteor / local,或者使用調用或模仿gnu find的JS庫。

既然你提到了 ,我注意到在構建中,服務器端包代碼最終會出現在:

~/<project-dir>/.meteor/local/build/programs/server/packages

和客戶方:

~/<project-dir>/.meteor/local/build/programs/web.browser/packages

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM