From ae08cd3a1fb0ed5a968689aabd858c612f8921e6 Mon Sep 17 00:00:00 2001 From: "Buster \"Silver Eagle\" Neece" Date: Tue, 29 Jan 2019 15:23:38 -0600 Subject: [PATCH] Bring back containerized static asset builds, but better! --- docker-compose.static.yml | 12 ++ docker.sh | 9 ++ util/docker/static/Dockerfile | 5 +- util/docker/static/build_entrypoint.sh | 5 +- web/static/gulpfile.js | 8 +- web/static/package-lock.json | 189 ++++++++++++------------- web/static/package.json | 8 +- 7 files changed, 127 insertions(+), 109 deletions(-) create mode 100644 docker-compose.static.yml diff --git a/docker-compose.static.yml b/docker-compose.static.yml new file mode 100644 index 000000000..93e494567 --- /dev/null +++ b/docker-compose.static.yml @@ -0,0 +1,12 @@ +version: '2.2' + +services: + static: + build: + context: ./util/docker/static + volumes: + - ./web/static:/data + - static_node_modules:/data/node_modules + +volumes: + static_node_modules: {} diff --git a/docker.sh b/docker.sh index e67c6b213..625300183 100755 --- a/docker.sh +++ b/docker.sh @@ -222,6 +222,15 @@ restore() { fi } +# +# Access the static console as a developer. +# Usage: ./docker.sh static [static_container_command] +# +static() { + docker-compose -f docker-compose.static.yml build + docker-compose -f docker-compose.static.yml run --rm static $* +} + # # Stop all Docker containers and remove related volumes. # Usage: ./docker.sh uninstall diff --git a/util/docker/static/Dockerfile b/util/docker/static/Dockerfile index 517e8ca27..c68a6d821 100644 --- a/util/docker/static/Dockerfile +++ b/util/docker/static/Dockerfile @@ -6,8 +6,6 @@ RUN apk update \ RUN mkdir -p /data/node_modules \ && chown -R node:node /data -RUN yarn global add gulp - COPY build_entrypoint.sh / RUN chmod a+x /build_entrypoint.sh @@ -20,4 +18,5 @@ USER node VOLUME /data/node_modules # Define default command. -CMD ["/build_entrypoint.sh"] +ENTRYPOINT ["/build_entrypoint.sh"] +CMD ["npm", "run", "build"] diff --git a/util/docker/static/build_entrypoint.sh b/util/docker/static/build_entrypoint.sh index ab35decfa..111199d49 100644 --- a/util/docker/static/build_entrypoint.sh +++ b/util/docker/static/build_entrypoint.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash cd /data -yarn install -bash \ No newline at end of file +npm install + +exec "$@" diff --git a/web/static/gulpfile.js b/web/static/gulpfile.js index 8065aa65e..a521731eb 100644 --- a/web/static/gulpfile.js +++ b/web/static/gulpfile.js @@ -2,7 +2,7 @@ const gulp = require('gulp'); const babel = require('gulp-babel'); -const clean = require('gulp-clean'); +const del = require('del'); const rev = require('gulp-rev'); const concat = require('gulp-concat'); const uglify = require('gulp-uglify'); @@ -114,8 +114,10 @@ gulp.task('bundle_deps', gulp.parallel( )); gulp.task('clean', function() { - return gulp.src(['./dist/**/*', './assets.json'], { read: false }) - .pipe(clean()); + return del([ + './dist/**/*', + './assets.json' + ]); }); gulp.task('concat-js', function() { diff --git a/web/static/package-lock.json b/web/static/package-lock.json index ea06ba38a..c07b04738 100644 --- a/web/static/package-lock.json +++ b/web/static/package-lock.json @@ -1235,6 +1235,21 @@ } } }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -2514,6 +2529,28 @@ } } }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -4016,6 +4053,19 @@ "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", "dev": true }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, "glogg": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", @@ -4099,103 +4149,6 @@ } } }, - "gulp-clean": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/gulp-clean/-/gulp-clean-0.4.0.tgz", - "integrity": "sha512-DARK8rNMo4lHOFLGTiHEJdf19GuoBDHqGUaypz+fOhrvOs3iFO7ntdYtdpNxv+AzSJBx/JfypF0yEj9ks1IStQ==", - "dev": true, - "requires": { - "fancy-log": "^1.3.2", - "plugin-error": "^0.1.2", - "rimraf": "^2.6.2", - "through2": "^2.0.3", - "vinyl": "^2.1.0" - }, - "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - } - }, - "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "dev": true, - "requires": { - "kind-of": "^1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", - "dev": true - }, - "plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", - "dev": true, - "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } - } - }, "gulp-clean-css": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-3.10.0.tgz", @@ -4948,6 +4901,30 @@ } } }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -6099,6 +6076,12 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -6303,6 +6286,12 @@ "p-limit": "^2.0.0" } }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", @@ -6436,6 +6425,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", diff --git a/web/static/package.json b/web/static/package.json index 3c5e2c352..31c283ab3 100644 --- a/web/static/package.json +++ b/web/static/package.json @@ -1,6 +1,9 @@ { "name": "azuracast", "license": "Apache-2.0", + "scripts": { + "build": "gulp" + }, "dependencies": { "@fancyapps/fancybox": "^3.5.6", "@flowjs/flow.js": "^2.13.1", @@ -29,9 +32,9 @@ "devDependencies": { "@babel/core": "^7.2.0", "@babel/preset-env": "^7.2.0", + "del": "^3.0.0", "gulp": "^4.0.0", "gulp-babel": "^8.0.0", - "gulp-clean": "^0.4.0", "gulp-clean-css": "^3.9.2", "gulp-concat": "^2.6.1", "gulp-rev": "^8.1.1", @@ -43,8 +46,5 @@ "vue-loader": "14.2.2", "vue-template-compiler": "^2.5.17", "webpack-stream": "^5.1.1" - }, - "scripts": { - "build": "gulp" } }