簡體   English   中英

檢測ES2015代碼是由babel編譯還是在本地運行?

[英]Detect if ES2015 code was transpiled by babel or is running native?

由於babel的操作受到某些限制,因此我需要編寫變通方法代碼,以使項目的一部分在被編譯時能夠正常工作。 我想將此代碼設為條件代碼,因此僅當它已被babel編譯時才運行(因為在本機ES6環境中是不必要的)。 有什么辦法嗎?

來自Babel插件文檔

現在,Babel不會執行任何操作。 它基本上就像const babel = code => code; 通過解析代碼,然后再次生成相同的代碼。

因此,通常您無法檢測到Babel是否已對代碼進行了轉譯,因為沒有任何插件,它是無操作的。 但是,您也許能夠通過某些插件或預設來檢測代碼是否已被Babel轉移。

由於您正在談論轉譯ES2015代碼,因此我假設您使用的是es2015預設。 例如,此預設會轉換ES2015類。 由於您可以輕松檢測出某些東西是否是本機ES2015類 ,因此您可以檢查Babel是否已轉譯了代碼。

例如,現代瀏覽器中的以下代碼片段應輸出false

 const isBabel = !(class {}.toString().indexOf('class ') === 0); console.log(isBabel); 

盡管此輸出為true (我在代碼片段選項中選中了“ Use BabelJS / ES2015”選項):

 const isBabel = !(class {}.toString().indexOf('class ') === 0); console.log(isBabel); 

暫無
暫無

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

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