mirror of https://github.com/status-im/reagent.git
parent
95026c77fd
commit
fd93b09c96
4
Makefile
4
Makefile
|
@ -88,9 +88,9 @@ push-project-docs: gen-site gen-docs
|
|||
# build site into a gh-pages branch
|
||||
build-gh-pages: gen-site gh-pages-add
|
||||
|
||||
gen-site: clean
|
||||
lein with-profile prod cljsbuild once
|
||||
gen-site: clean node_modules
|
||||
lein with-profile prerender cljsbuild once
|
||||
node pre-render/main.js
|
||||
|
||||
gen-docs: clean
|
||||
lein codox
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
|
||||
var fs = require("fs");
|
||||
var vm = require("vm");
|
||||
var path = require("path");
|
||||
|
||||
var run = function (src) {
|
||||
global.require = require;
|
||||
vm.runInThisContext(fs.readFileSync(src), src);
|
||||
}
|
||||
|
||||
var imported = {};
|
||||
|
||||
var loadSrc = function (mainFile, outputDir, devFile) {
|
||||
var googDir = path.join(outputDir, "goog");
|
||||
var optNone = false;
|
||||
if (outputDir) {
|
||||
optNone = fs.existsSync(path.join(googDir, "deps.js"));
|
||||
}
|
||||
if (optNone) {
|
||||
var cwd = process.cwd();
|
||||
if (!global.goog) {
|
||||
global.goog = {};
|
||||
}
|
||||
global.CLOSURE_IMPORT_SCRIPT = function (src) {
|
||||
var s = path.resolve(path.resolve(cwd, path.join(googDir, src)));
|
||||
if (!(s in imported)) {
|
||||
imported[s] = true;
|
||||
run(s);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
run(path.join(googDir, "base.js"));
|
||||
run(path.join(outputDir, "cljs_deps.js"));
|
||||
run(path.join(outputDir, devFile));
|
||||
} else {
|
||||
run(mainFile);
|
||||
}
|
||||
return optNone;
|
||||
};
|
||||
|
||||
exports.load = loadSrc;
|
|
@ -1,40 +0,0 @@
|
|||
|
||||
var cljsLoad = require("./cljs-load");
|
||||
|
||||
var srcFile = "pre-render/main.js";
|
||||
var outputDirectory = "outsite/public/js/out";
|
||||
var devFile = "reagenttest/runtests.js";
|
||||
|
||||
var beep = "\u0007";
|
||||
|
||||
if (typeof location === "undefined") {
|
||||
// figwheel wants js/location to exist, even if it doesn't run,
|
||||
// for some reason
|
||||
global.location = {};
|
||||
}
|
||||
var gensite = function () {
|
||||
console.log("Pre-rendering or testing...");
|
||||
var optNone = cljsLoad.load(srcFile, outputDirectory, devFile);
|
||||
sitetools.server.genpages({"opt-none": optNone});
|
||||
}
|
||||
|
||||
var compileFail = function () {
|
||||
var msg = process.argv[process.argv.length - 1];
|
||||
if (msg && msg.match(/failed/)) {
|
||||
console.log("Compilation failed" + beep);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
process.env.NODE_ENV = "production";
|
||||
|
||||
if (!compileFail()) {
|
||||
try {
|
||||
gensite();
|
||||
} catch (e) {
|
||||
console.log(e + beep);
|
||||
console.error(e.stack);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
process.exit(0);
|
29
circle.yml
29
circle.yml
|
@ -1,17 +1,22 @@
|
|||
machine:
|
||||
node:
|
||||
version: v8.2.0
|
||||
dependencies:
|
||||
override:
|
||||
- lein deps
|
||||
# Install only test dependencies for start
|
||||
- npm install --only=dev
|
||||
test:
|
||||
override:
|
||||
# Run tests against Cljsjs
|
||||
- mv node_modules node_modules_disabled
|
||||
- lein with-profile dev do clean, cljsbuild once
|
||||
- node bin/gen-site.js
|
||||
- test -f outsite/public/js/out/cljsjs/react/development/react.inc.js
|
||||
- lein with-profile prod-test do clean, cljsbuild once
|
||||
# Run tests against Node Modules
|
||||
- mv node_modules_disabled
|
||||
- lein clean
|
||||
- lein with-profile dev do clean, cljsbuild once
|
||||
- node bin/gen-site.js
|
||||
- test -f outsite/public/js/out/node_modules/react/react.js
|
||||
# Cljsjs - browser
|
||||
- lein with-profile test do clean, doo chrome client once
|
||||
- test -f out/cljsjs/react/development/react.inc.js
|
||||
# Cljsjs - Production build - Browser
|
||||
- lein with-profile prod-test do clean, doo chrome client once
|
||||
# Node Modules - Browser
|
||||
- npm install
|
||||
- lein with-profile test do clean, doo chrome-headless client once
|
||||
- test -f out/node_modules/react/react.js
|
||||
# Node Modules - Node Target
|
||||
- lein with-profile node-test do clean, doo node client once
|
||||
- test -f out/node_modules/react/react.js
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
(ns reagentdemo.server
|
||||
"Used to pre-render HTML files."
|
||||
(:require [reagentdemo.core]
|
||||
[sitetools.server]))
|
|
@ -0,0 +1,18 @@
|
|||
(ns sitetools.prerender
|
||||
(:require [reagent.debug :refer-macros [log]]
|
||||
[sitetools.core :as tools]
|
||||
[sitetools.server :as server]
|
||||
reagentdemo.core))
|
||||
|
||||
(defn -main [& args]
|
||||
(log "Generating site")
|
||||
(let [conf @tools/config
|
||||
conf (assoc conf :timestamp (str "?" (js/Date.now)))
|
||||
{:keys [site-dir pages]} conf]
|
||||
(doseq [f (keys pages)]
|
||||
(server/write-file (->> f tools/to-relative (server/path-join site-dir))
|
||||
(server/gen-page f conf)))
|
||||
(server/write-resources site-dir conf))
|
||||
(log "Wrote site"))
|
||||
|
||||
(set! *main-cli-fn* -main)
|
|
@ -57,6 +57,7 @@
|
|||
($ (fs) mkdirSync d))))
|
||||
|
||||
(defn write-file [f content]
|
||||
(log "Write" f)
|
||||
(mkdirs ($ (path) dirname f))
|
||||
($ (fs) writeFileSync f content))
|
||||
|
||||
|
@ -68,16 +69,3 @@
|
|||
(->> css-infiles
|
||||
(map #($ (fs) readFileSync %))
|
||||
(string/join "\n"))))
|
||||
|
||||
;;; Main entry points
|
||||
|
||||
(defn ^:export genpages [opts]
|
||||
(log "Generating site")
|
||||
(let [conf (swap! tools/config merge (js->clj opts :keywordize-keys true))
|
||||
conf (assoc conf :timestamp (str "?" (js/Date.now)))
|
||||
{:keys [site-dir pages]} conf]
|
||||
(doseq [f (keys pages)]
|
||||
(write-file (->> f tools/to-relative (path-join site-dir))
|
||||
(gen-page f conf)))
|
||||
(write-resources site-dir conf))
|
||||
(log "Wrote site"))
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,14 +2,17 @@
|
|||
"dependencies": {
|
||||
"@cljs-oss/module-deps": "1.1.1",
|
||||
"create-react-class": "^15.6.2",
|
||||
"react": "^15.6.1",
|
||||
"react-dom": "^15.6.1"
|
||||
"react": "^16.0.0",
|
||||
"react-dom": "^16.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"bundle": "webpack && NODE_ENV=production webpack -p"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-core": "^5.8.25",
|
||||
"karma": "^1.7.1",
|
||||
"karma-chrome-launcher": "^2.2.0",
|
||||
"karma-cljs-test": "^0.1.0",
|
||||
"webpack": "^1.12.2"
|
||||
}
|
||||
}
|
||||
|
|
22
project.clj
22
project.clj
|
@ -14,6 +14,7 @@
|
|||
[cljsjs/create-react-class "15.6.2-0"]]
|
||||
|
||||
:plugins [[lein-cljsbuild "1.1.7"]
|
||||
[lein-doo "0.1.7"]
|
||||
[lein-codox "0.10.3"]]
|
||||
|
||||
:source-paths ["src"]
|
||||
|
@ -22,11 +23,12 @@
|
|||
:exclude clojure.string
|
||||
:source-paths ["src"]}
|
||||
|
||||
:profiles {:test {:cljsbuild
|
||||
:profiles {:node-test [:test {:cljsbuild
|
||||
{:builds {:client {:compiler {:target :nodejs}}}}}]
|
||||
|
||||
:test {:cljsbuild
|
||||
{:builds {:client {:source-paths ["test"]
|
||||
:notify-command ["node" "bin/gen-site.js"]
|
||||
:compiler
|
||||
{:main "reagenttest.runtests"}}}}}
|
||||
:compiler {:main "reagenttest.runtests"}}}}}
|
||||
|
||||
:fig [{:dependencies [[figwheel "0.5.13"]]
|
||||
:plugins [[lein-figwheel "0.5.13"]]
|
||||
|
@ -58,10 +60,11 @@
|
|||
:prerender [:prod
|
||||
{:cljsbuild
|
||||
{:builds {:client
|
||||
{:compiler {:main "reagentdemo.server"
|
||||
{:compiler {:main "sitetools.prerender"
|
||||
:target :nodejs
|
||||
;; Undefine module and exports so React UMD modules work on Node
|
||||
:output-to "pre-render/main.js"
|
||||
:output-dir "pre-render/out"}
|
||||
:notify-command ["node" "bin/gen-site.js"] }}}}]
|
||||
:output-dir "pre-render/out"}}}}}]
|
||||
|
||||
:webpack {:cljsbuild
|
||||
{:builds {:client
|
||||
|
@ -101,10 +104,7 @@
|
|||
:language-in :ecmascript6
|
||||
:language-out :ecmascript3
|
||||
;; Add process.env.NODE_ENV preload
|
||||
:process-shim true
|
||||
:npm-deps {:react "15.6.1"
|
||||
:react-dom "15.6.1"
|
||||
:create-react-class "15.6.2"}}}}}
|
||||
:process-shim true}}}}
|
||||
|
||||
:figwheel {:http-server-root "public" ;; assumes "resources"
|
||||
:repl false})
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
[reagenttest.testwithlet]
|
||||
[reagenttest.testwrap]
|
||||
[cljs.test :as test :include-macros true]
|
||||
[doo.runner :refer-macros [doo-tests]]
|
||||
[reagent.core :as r]
|
||||
[reagent.debug :refer-macros [dbg log]]
|
||||
[reagentdemo.core :as demo]
|
||||
|
@ -55,4 +56,11 @@
|
|||
(reset! demo/test-results [#'test-output-mini])
|
||||
(run-tests)))
|
||||
|
||||
(init!)
|
||||
(doo-tests 'reagenttest.testreagent
|
||||
'reagenttest.testcursor
|
||||
'reagenttest.testinterop
|
||||
'reagenttest.testratom
|
||||
'reagenttest.testratomasync
|
||||
'reagenttest.testtrack
|
||||
'reagenttest.testwithlet
|
||||
'reagenttest.testwrap)
|
||||
|
|
Loading…
Reference in New Issue