diff --git a/project.clj b/project.clj index 01b38be9..54761b86 100644 --- a/project.clj +++ b/project.clj @@ -11,37 +11,88 @@ [com.taoensso/tufte "1.0.2"] [jamesmacaulay/cljs-promises "0.1.0"]] - :cljsbuild {:builds {:release { - :source-paths ["src"] - :assert false - :compiler {:output-to "release-js/datomish.bare.js" - :optimizations :advanced - :pretty-print false - :elide-asserts true - :output-wrapper false - :parallel-build true} - :notify-command ["release-js/wrap_bare.sh"]} - :advanced {:source-paths ["src"] - :compiler {:output-to "target/advanced/datomish.js" - :optimizations :advanced - :source-map "target/advanced/datomish.js.map" - :pretty-print true - :recompile-dependents true - :parallel-build true - }} - :test { - :source-paths ["src" "test"] - :compiler {:output-to "target/test/datomish.js" - :output-dir "target/test" - :main datomish.test - :optimizations :none - :source-map true - :recompile-dependents true - :parallel-build true - :target :nodejs - }} - } - } + :cljsbuild {:builds + { + :release-node + { + :source-paths ["src-node" "src"] + :assert false + :compiler + { + :elide-asserts true + :hashbang false + :language-in :ecmascript5 + :language-out :ecmascript5 + :optimizations :advanced + :output-dir "release-node" + :output-to "release-node/datomish.bare.js" + :output-wrapper false + :parallel-build true + :pretty-print false + :target :nodejs + } + :notify-command ["release-node/wrap_bare.sh"]} + + :release-browser + ;; Release builds for use in Firefox must: + ;; * Use :optimizations > :none, so that a single file is generated + ;; without a need to import Closure's own libs. + ;; * Be wrapped, so that a CommonJS module is produced. + ;; * Have a preload script that defines what `println` does. + ;; + ;; There's no point in generating a source map -- it'll be wrong + ;; due to wrapping. + { + :source-paths ["src-browser" "src"] + :assert false + :compiler + { + :elide-asserts true + :language-in :ecmascript5 + :language-out :ecmascript5 + :optimizations :advanced + :output-dir "release-browser" + :output-to "release-browser/datomish.bare.js" + :output-wrapper false + :parallel-build true + :preloads [datomish.preload] + :pretty-print true + :pseudo-names true + :static-fns true + } + :notify-command ["release-browser/wrap_bare.sh"]} + + :advanced + {:source-paths ["src-node" "src"] + :compiler + { + :language-in :ecmascript5 + :language-out :ecmascript5 + :output-dir "target/advanced" + :output-to "target/advanced/datomish.js" + :optimizations :advanced + :parallel-build true + :pretty-print true + :source-map "target/advanced/datomish.js.map" + :target :nodejs + }} + + :test + { + :source-paths ["src-node" "src" "test"] + :compiler + { + :language-in :ecmascript5 + :language-out :ecmascript5 + :main datomish.test + :optimizations :none + :output-dir "target/test" + :output-to "target/test/datomish.js" + :parallel-build true + :source-map true + :target :nodejs + }} + }} :profiles {:dev {:dependencies [[cljsbuild "1.1.3"] [tempfile "0.2.0"] @@ -59,7 +110,26 @@ :doo {:build "test"} - :clean-targets ^{:protect false} ["target" - "release-js/datomish.bare.js" - "release-js/datomish.js"] + :clean-targets ^{:protect false} + [ + "target" + "release-node/cljs/" + "release-node/cljs_promises/" + "release-node/clojure/" + "release-node/datascript/" + "release-node/datomish/" + "release-node/honeysql/" + "release-node/taoensso/" + "release-node/datomish.bare.js" + "release-node/datomish.js" + "release-browser/cljs/" + "release-browser/cljs_promises/" + "release-browser/clojure/" + "release-browser/datascript/" + "release-browser/datomish/" + "release-browser/honeysql/" + "release-browser/taoensso/" + "release-browser/datomish.bare.js" + "release-browser/datomish.js" + ] ) diff --git a/release-js/README.md b/release-browser/README.md similarity index 100% rename from release-js/README.md rename to release-browser/README.md diff --git a/release-js/test_include_node.js b/release-browser/test_include_node.js similarity index 100% rename from release-js/test_include_node.js rename to release-browser/test_include_node.js diff --git a/release-browser/wrap_bare.sh b/release-browser/wrap_bare.sh new file mode 100755 index 00000000..6d5ae26a --- /dev/null +++ b/release-browser/wrap_bare.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +(cat release-browser/wrapper.prefix; cat release-browser/datomish.bare.js; cat release-browser/wrapper.suffix) > release-browser/datomish.js + +echo "Packed release-browser/datomish.js" diff --git a/release-js/wrapper.prefix b/release-browser/wrapper.prefix similarity index 100% rename from release-js/wrapper.prefix rename to release-browser/wrapper.prefix diff --git a/release-js/wrapper.suffix b/release-browser/wrapper.suffix similarity index 100% rename from release-js/wrapper.suffix rename to release-browser/wrapper.suffix diff --git a/release-js/wrap_bare.sh b/release-js/wrap_bare.sh deleted file mode 100755 index 0256ad22..00000000 --- a/release-js/wrap_bare.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -set -e - -(cat release-js/wrapper.prefix; cat release-js/datomish.bare.js; cat release-js/wrapper.suffix) > release-js/datomish.js - -echo "Packed release-js/datomish.js" diff --git a/release-node/README.md b/release-node/README.md new file mode 100644 index 00000000..f31204bf --- /dev/null +++ b/release-node/README.md @@ -0,0 +1,5 @@ +# Datomish + +Datomish is a persistent, embedded knowledge base. It's written in ClojureScript, and draws heavily on [DataScript](https://github.com/tonsky/datascript) and [Datomic](http://datomic.com). + +For more info, check out the [project page](https://github.com/mozila/datomish). diff --git a/release-node/test_include_node.js b/release-node/test_include_node.js new file mode 100644 index 00000000..683261cd --- /dev/null +++ b/release-node/test_include_node.js @@ -0,0 +1,2 @@ +var d = require('./datomish'); +console.log(d.q("[:find ?e ?v :where [?e \"name\" ?v] {:x :y}]")); diff --git a/release-node/wrap_bare.sh b/release-node/wrap_bare.sh new file mode 100755 index 00000000..13707e8f --- /dev/null +++ b/release-node/wrap_bare.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +(cat release-node/wrapper.prefix && cat release-node/datomish.bare.js && cat release-node/wrapper.suffix) > release-node/datomish.js + +echo "Packed release-node/datomish.js" diff --git a/release-node/wrapper.prefix b/release-node/wrapper.prefix new file mode 100644 index 00000000..d852baf1 --- /dev/null +++ b/release-node/wrapper.prefix @@ -0,0 +1,29 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +// Datomish 0.1.0-SNAPSHOT + +(function (definition) { + // This file will function properly as a