簡體   English   中英

在 ReasonReact 項目中禁用每個文件的 react-jsx

[英]Disable react-jsx per file in a ReasonReact project

有沒有辦法在 ReasonReact 項目的某些文件中禁用 react-jsx 轉換?

我認為另一種方法是不將"reason": { "react-jsx": 3 }添加到bsconfig.json並將@@bs.config({jsx: 3})到文件的頂部,其中你想要 react-jsx 轉換,但這會迫使我在太多文件中添加這個注釋。

我想在幾個文件中構建一個基於 JSX 的小型 DSL,同時在我項目的其余部分從 React 中受益。

注意:建議的解決方案不是很直接,我認為在所有必需的文件中顯式添加@@bs.config注釋要簡單得多,但如果您真的不想這樣做,以下可能有效。

如果我正確閱讀編譯器代碼,則在 ReasonReact ppx 之前應用用戶定義的 ppx。 在鏈接的編譯器模塊中, Cmd_ppx_apply.apply_rewriters將應用所有通過-ppx標志傳遞的參數,而Ppx_entry.rewrite_implementation是 ReasonReact ppx。

假設這是真的,那么可以有一個 ppx 來檢查文件頂部的諸如@@custom.jsx之類的頂級語句,ppx 將檢查該語句。 ReasonReact ppx 曾經有一個類似的檢查,以防它作為參考。

然后,如果找到此語句,自定義 ppx 將處理具有@JSX屬性的節點,並確保從它們中刪除屬性,因此當編譯器將 AST 傳遞給 ReasonReact ppx 時,它不會看到它們。

請注意,如果 ReScript ppx 管道有一天更新為基於驅動程序的管道(我不太可能這么說,因為這意味着 ReScript 應該以某種方式支持本機庫作為一等公民),或者如果上面提到的順序發生變化,這會中斷(ReasonReact ppx 在用戶定義的之前適用)。

暫無
暫無

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

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