diff --git a/.gitignore b/.gitignore index 855071b..2b15657 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ resources/public/js gh-pages/ gh-pages/ /.lsp +/dist +/.clj-kondo/.cache +/.clj-kondo/rewrite-clj diff --git a/bb.edn b/bb.edn index a8cc0d3..5e1d136 100644 --- a/bb.edn +++ b/bb.edn @@ -1,13 +1,35 @@ {:tasks {:requires ([babashka.fs :as fs]) + clean {:doc "Start from clean slate." :task (do (run! fs/delete (fs/list-dir (fs/file "resources" "public" "js") "**.*")) (fs/delete-tree ".cpcache") (fs/delete-tree ".shadow-cljs"))} + dev {:doc "Development build. Starts webserver and watches for changes." :task (clojure "-M:dev -m shadow.cljs.devtools.cli watch main")} + prod {:doc "Builds production artifacts." :task (clojure {:extra-env {"SCI_ELIDE_VARS" "true"}} "-M:dev -m shadow.cljs.devtools.cli release main")} - release {:doc "Updates Github pages with new release build." - :task (shell "script/release.clj")}}} + + dist {:doc "Prepare dist folder for npm package" + :depends [prod] + :task (do + (fs/delete-tree "dist") + (fs/create-dirs "dist") + (run! (fn [f] (fs/copy f "dist")) + (fs/glob "resources/public/js" "*.js")))} + + bump-version {:doc "Bumps package.json and pushes new git tag" + :task (do (shell "npm version patch") + (shell "git push --atomic origin main" + (str "v" (:version (json/parse-string (slurp "package.json") true)))))} + + npm-publish {:doc "Updates Github pages with new release build." + :task (do (run 'dist) + (run 'bump-version) + (shell "npm publish"))} + + gh-pages {:doc "Updates Github pages with new release build." + :task (shell "script/release.clj")}}} diff --git a/package-lock.json b/package-lock.json index c4c5d52..7b3c164 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,10 +1,10 @@ { - "name": "sci-script-tag", + "name": "scittle", "lockfileVersion": 2, "requires": true, "packages": { "": { - "dependencies": { + "devDependencies": { "react": "17.0.1", "react-dom": "17.0.1" } @@ -12,12 +12,14 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -29,6 +31,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -37,6 +40,7 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "dev": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -49,6 +53,7 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", + "dev": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -62,6 +67,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dev": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -72,12 +78,14 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } @@ -85,12 +93,14 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "react": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -100,6 +110,7 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", + "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -110,6 +121,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" diff --git a/package.json b/package.json index 4b98f1c..5e6bdcf 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,8 @@ { - "dependencies": { + "name": "scittle", + "version": "0.0.3-1", + "files": ["dist"], + "devDependencies": { "react": "17.0.1", "react-dom": "17.0.1" }