IMHO that is not something you should handle at compile time. I would suggest creating a proper API and a "main" namespace that serves as an entry point to your application and configures it before starting.
For example: (ns my-app.log) (defprotocol ILog (-log [this msg])) (def logger (atom nil)) (def set-logger! [new-log] (reset! logger new-log)) (def log [something] ;; call protocol fn (-log @logger something)) Note that the protocol might not be needed it just expresses a proper API and doesn't rely on there being a obj.log function. Then one "main" for nodejs: (ns my-app.start-node (:require [my-app.log :as log])) (log/set-logger! something-from-node-wrapped-in-reify) (start-my-app) or something similar for the browser. CLJS recently got support for :main and everyone should use it. Just my 2 cents, /thomas On Tuesday, March 10, 2015 at 11:53:25 AM UTC+1, Greg wrote: > I have a project which targets both Node.js and the browser - the vast > majority of code is shared and kept in the 'src' folder, with anything that > needs to differ being held in 'src-client' and 'src-server'. It's getting a > little clunky to maintain this, though, so I'm hoping to move everything to a > single folder and use a macro to detect whether or not it's built with Node > extensions. > > Essentially, I want to allow something like this: > (def logger > (client-or-server > js/log ; Use a globally namespaced library on the client > (nodejs/require "loglevel") ; Use a 'require' statement on the server > )) > > But I'm finding myself a little lost in documentation when it comes to safely > detecting the existence of 'cljs.nodejs', and I'm wondering if it might be a > bad idea for as-yet unforeseen reasons? -- 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 http://groups.google.com/group/clojurescript.