ES6應用程序與webpack和babel插件捆綁在一起。是否可以修改一些源代碼,在每個對象中注入隱藏字段?通過webpack/babel修改ES6源代碼中的對象
一些巴貝爾/的WebPack插件,其中的WebPack替換,插件和巴貝爾,縮小替換,允許互操作現場訪問,並創建一些宏定義
但問題是包裝所有對象的創建,並插入一些領域以獨特的名字。它應該是無處不在 - 在對象創建文字,在休息傳播副本等,所以天真的取代正則表達式不是解決方案。
原始代碼:
const obj1 = { aaa:10, bbb:20 };
const obj2 = new Object();
const obj3 = { ...obj1, ddd: 20 };
const arr = [1, 2, 3];
const str = new String("ABC");
轉化代碼:
const obj1 = { aaa:10, bbb:20, SECRET_PROPERTY: true };
const obj2 = new Object(); obj2.SECRET_PROPERTY = true;
const obj3 = { ...obj1, ddd: 20, SECRET_PROPERTY: true };
const arr = [1, 2, 3]; arr.SECRET_PROPERTY = true;
const str = new String("ABC"); str.SECRET_PROPERTY = true;
當然,這樣的操作會降低原有的代碼優化,而且它僅需要調試/開發模式。
更新:找到了babel插件,它具有最接近原始任務的功能 - https://github.com/JonAbrams/elsa。它執行不同的任務,但可以很容易地適應原始任務
,你可以寫你自己的babel插件來做到這一點。 –
@FelixKling當然!也許,爲此目的的某個插件已經存在?或者有一些具有類似功能的插件,它們可以分叉並適用於原始任務? –
也許,但要求提供軟件建議是一個非主題。 –