This dates back to over a year ago, but here's what I did to use React 15.1.0 from a CDN when using Reagent 0.7:
My Reagent dependency in project.clj looks like this: [reagent "0.7.0" :exclusions [cljsjs/react cljsjs/react-dom cljsjs/react-dom-server]] Then I just created a set of dummy namespaces in my source tree to fake out the compiler: solace:eris2 jfischer$ find src/cljsjs src/cljsjs src/cljsjs/react.cljs src/cljsjs/react src/cljsjs/react/dom.cljs src/cljsjs/react/dom src/cljsjs/react/dom/server.cljs solace:eris2 jfischer$ cat src/cljsjs/react.cljs (ns cljsjs.react "Dummy namespace to let me exclude React from my compiled output.") And in my HTML loaded React from the CDN: <script src="https://unpkg.com/react@15.1.0/dist/react.min.js"></script> <script src="https://unpkg.com/react-dom@15.1.0/dist/react-dom.min.js"></script> On Monday, March 5, 2018 at 11:02:53 PM UTC-8, al...@hill.net.au wrote: > > Hi all, > > I want to use reagent 0.8 with an external React 16, available as > `window.React` (equivalent to using React from a CDN, but in reality built > and exported from a separate webpack bundle). > > My goal is to build a bundle which uses React, ReactDOM and > createReactClass from the window object, instead of inlining its own copies > of those libraries. > > I talked to @Deraen about this on Slack a couple of months ago who helped > me get this working. I'm currently able to build a bundle as described > above, but I have to vendor in all the extern files from the relevant > cljsjs React libraries, and add them to :exclusions. My :compiler key in my > cljsbuild config looks like this: > > :foreign-libs [{:file "src/js/empty.js" > :provides ["react" "react-dom" "create-react-class" > "react-dom/server"] > :requires [] > :global-exports {react React > react-dom ReactDOM > create-react-class createReactClass > react-dom/server ReactDOMServer}}] > :externs ["src/js/externs/react.ext.js" > "src/js/externs/react-dom.ext.js" > "src/js/externs/create-react-class.ext.js"] > > He thought at the time that it should be possible without the externs and > :exclusions, as mentioned on this page: > https://github.com/reagent-project/reagent/blob/master/docs/0.8-upgrade.md#browser---loading-react-from-cdnjs-or-custom-webpack-bundle > > > it should be possible to override the Cljsjs foreign-libs, while still > using externs from Cljsjs packages. > > But I can't figure it out - if I don't exclude the cljsjs libraries, I get > a bundle with React 15 built-in, and if I do exclude them, the bundle is > broken because the externs are missing and the names get eaten by the > closure compiler. > > Is there any way around having to commit the externs? > > Thanks, > Alex > > -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescript@googlegroups.com. Visit this group at https://groups.google.com/group/clojurescript.