2015-05-19 3 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 в конечном итоге на выходе компилятора.

Я хотел бы предотвратить это, потому что я также хочу использовать React в простых страницах JavaScript.

Кроме того, reagent/core.cljs имеет директиву :require [cljsjs.react] (чтобы включить включение?), Поэтому зависимость не может быть просто опущена.

Есть ли способ предотвратить возвращение Реакта в выход компилятора?

+0

Есть ли причина, по которой вы не можете использовать связанный файл response.js в своем родном коде JS? Я думаю, что он экспортируется в 'window', поэтому вы сможете использовать его таким образом. – skrat

+0

Я бы предпочел не иметь собственный JS, зависящий от вывода, сгенерированного компилятором ClojureScript. На самом деле, я хотел бы, чтобы скомпилированный код ClojureScript и родной JS зависел от версии React. Тем не менее, я мог бы сделать то, что вы предлагаете, если альтернативы нет. –

ответ

1

С Реагентом Readme (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 загружен до Реагента.

+0

Пропустил трюк, чтобы добавить собственное пустое пространство имен 'clsjs.react'. Работает отлично. Благодаря! –