2015-05-19 59 views
1

我使用reagent 0.5.0,這取決於cljsjs/react。後者具有以下deps.cljs如何從ClojureScript編譯器輸出中排除繼承的外部庫?

{:foreign-libs [{ 
:file "cljsjs/development/react.inc.js", 
:file-min "cljsjs/production/react.min.inc.js", 
:provides ["cljsjs.react"]}], 
:externs ["cljsjs/common/react.ext.js"]} 

這使得該陣營的JavaScript編譯器輸出結束。

我想阻止這種情況發生,因爲我也想在普通的JavaScript頁面中使用React。

此外,reagent/core.cljs有一個:require [cljsjs.react]指令(強制包含?),所以不能簡單地省略依賴項。

有沒有辦法阻止React在編譯器輸出中結束?

+0

是否有一個原因,你不能在你的本地JS代碼中使用捆綁的react.js?我認爲它輸出到'window',所以你應該可以這樣使用它。 – skrat

+0

我不希望本機JS依賴於由ClojureScript編譯器生成的輸出。事實上,我希望有ClojureScript編譯代碼,並且本機JS依賴於Webjars版本的React。不過,如果沒有其他選擇,我可能會最終做你的建議。 –

回答

1

從試劑自述(https://github.com/reagent-project/reagent):

If you want the version of React with addons, you'd use something like this instead: 

[reagent "0.5.0" :exclusions [cljsjs/react]] 
[cljsjs/react-with-addons "0.12.2-4"] 

If you want to use your own build of React (or React from a CDN), you have to use :exclusions variant of the dependency, and also provide a file named "cljsjs/react.cljs", containing just (ns cljsjs.react), in your project. 

所以,只需使用:排除選項,在你的依賴,並提供自己的cljsjs /反應空間和你的好去。然而,在這一點上你要確保React在Reagent之前加載。

+0

錯過了添加我自己空的'clsjs.react'命名空間的技巧。完美的作品。謝謝! –