From 67421a68b0b367b561e909c7cdf57ae4a49ff940 Mon Sep 17 00:00:00 2001 From: Bob den Otter Date: Sun, 25 Oct 2020 11:54:27 +0100 Subject: [PATCH] Keep track of assets version on "About" page --- assets/js/app/common.js | 3 + assets/js/version.js | 2 + package-lock.json | 68 +++++++-- package.json | 258 ++++++++++++++++---------------- templates/pages/about.html.twig | 12 +- 5 files changed, 201 insertions(+), 142 deletions(-) create mode 100644 assets/js/version.js diff --git a/assets/js/app/common.js b/assets/js/app/common.js index 1e9c10dff..4ad150ad5 100644 --- a/assets/js/app/common.js +++ b/assets/js/app/common.js @@ -1,6 +1,9 @@ import $ from 'jquery'; import { DateTime } from 'luxon'; +import { version } from '../version'; +window.assetsVersion = version; + $(document).ready(function() { // add a js class to indicate we have JS enabled. Might need a change to either modernizr or somethng comparable $('html').addClass('js'); diff --git a/assets/js/version.js b/assets/js/version.js new file mode 100644 index 000000000..5e1c06a21 --- /dev/null +++ b/assets/js/version.js @@ -0,0 +1,2 @@ +// generated by genversion +export const version = '4.1.3'; diff --git a/package-lock.json b/package-lock.json index e205c008c..9ef82e03b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9207,6 +9207,15 @@ "pkg-dir": "^4.1.0" } }, + "find-package": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-package/-/find-package-1.0.0.tgz", + "integrity": "sha1-13ONpn48XwVcJNPhmqGu7QY8PoM=", + "dev": true, + "requires": { + "parents": "^1.0.1" + } + }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -9228,6 +9237,12 @@ "resolve-dir": "^1.0.1" } }, + "firstline": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/firstline/-/firstline-1.3.1.tgz", + "integrity": "sha512-ycwgqtoxujz1dm0kjkBFOPQMESxB9uKc/PlD951dQDIG+tBXRpYZC2UmJb0gDxopQ1ZX6oyRQN3goRczYu7Deg==", + "dev": true + }, "flagpack": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/flagpack/-/flagpack-1.0.5.tgz", @@ -10036,6 +10051,18 @@ "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", "dev": true }, + "genversion": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/genversion/-/genversion-2.2.1.tgz", + "integrity": "sha512-q/QoXvB22iLpGvvkhJYTaJTpYgTBLJiMfwNtvGoEIBWHF5Vr1/dnbasYX9CGmqs6O4dZE4f/xjvxqp+DAyDgRg==", + "dev": true, + "requires": { + "commander": "^2.11.0", + "find-package": "^1.0.0", + "firstline": "^1.2.1", + "mkdirp": "^0.5.1" + } + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -11179,7 +11206,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-path-cwd": { @@ -13613,7 +13640,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -14109,7 +14136,7 @@ }, "semver": { "version": "5.3.0", - "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true } @@ -14837,6 +14864,15 @@ } } }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "dev": true, + "requires": { + "path-platform": "~0.11.15" + } + }, "parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", @@ -14960,6 +14996,12 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "dev": true + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -16909,7 +16951,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { "ret": "~0.1.10" @@ -17597,9 +17639,9 @@ } }, "sortablejs": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.12.0.tgz", - "integrity": "sha512-bPn57rCjBRlt2sC24RBsu40wZsmLkSo2XeqG8k6DC1zru5eObQUIPPZAQG7W2SJ8FZQYq+BEJmvuw1Zxb3chqg==" + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" }, "source-list-map": { "version": "2.0.1", @@ -17987,7 +18029,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" @@ -18011,7 +18053,7 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-final-newline": { @@ -19931,11 +19973,11 @@ } }, "vuedraggable": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.2.tgz", - "integrity": "sha512-y1NbVhLFOVHHdJl7qsYOtExiTq4zyxF+PxiF9NC8kHEtI6sAFhUHtHYp+ONa8v4S3bAspzGHOHuOq0pNO4fFtA==", + "version": "2.24.3", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz", + "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==", "requires": { - "sortablejs": "^1.10.1" + "sortablejs": "1.10.2" } }, "vuex": { diff --git a/package.json b/package.json index edb98c174..e2fd2e668 100644 --- a/package.json +++ b/package.json @@ -1,133 +1,135 @@ { - "name": "bolt", - "version": "4.1.3", - "homepage": "https://boltcms.io", - "author": "Bob den Otter (https://boltcms.io)", - "license": "MIT", - "description": "Bolt 4 npm/javascript packages", - "keywords": [ - "bolt", - "cms", - "php", - "symfony", - "vue", - "content", - "management", - "system" - ], - "bugs": { - "url": "https://github.com/bolt/core/issues" - }, - "main": "webpack.config.js", - "directories": { - "tests": "tests" - }, - "repository": { - "type": "git", - "url": "git://github.com/bolt/core.git" - }, - "dependencies": { - "@vue/cli-service": "^4.5.8", - "axios": "^0.19.2", - "baguettebox.js": "^1.11.1", - "bootbox": "^5.5.1", - "bootstrap": "^4.5.3", - "browserslist": "^4.14.5", - "caniuse-lite": "^1.0.30001150", - "codemirror": "^5.58.1", - "dropzone": "^5.7.2", - "flagpack": "^1.0.5", - "hotkeys-js": "^3.8.1", - "jquery": "^3.5.1", - "locutus": "^2.0.14", - "luxon": "^1.25.0", - "no-scroll": "^2.1.1", - "node-vibrant": "^3.1.6", - "popper.js": "^1.16.1", - "register-service-worker": "^1.7.1", - "selectize": "^0.12.6", - "simplemde": "^1.11.2", - "stylelint-config-recommended-scss": "^4.2.0", - "stylelint-scss": "^3.18.0", - "terser": "^4.8.0", - "tinycolor2": "^1.4.2", - "vue": "^2.6.12", - "vue-flatpickr-component": "^8.1.6", - "vue-multiselect": "^2.1.6", - "vue-simplemde": "^1.1.2", - "vue-trumbowyg": "^3.6.2", - "vuedraggable": "^2.24.2", - "vuex": "^3.5.1", - "zxcvbn": "^4.4.2" - }, - "devDependencies": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-runtime": "^7.12.1", - "@babel/polyfill": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@fortawesome/fontawesome-free": "^5.15.1", - "@symfony/webpack-encore": "^0.30.2", - "@vue/test-utils": "^1.1.0", - "ajv-keywords": "^3.5.2", - "autoprefixer": "^9.8.6", - "babel-core": "^7.0.0-bridge.0", - "babel-eslint": "^10.1.0", - "babel-jest": "^25.5.1", - "eslint": "^6.8.0", - "eslint-config-prettier": "^6.14.0", - "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-standard": "^4.0.2", - "eslint-plugin-vue": "^6.2.2", - "jest": "^25.5.4", - "jest-serializer-vue": "^2.0.2", - "node-sass": "^4.14.1", - "postcss-loader": "^3.0.0", - "postcss-preset-env": "^6.7.0", - "prettier": "^1.19.1", - "regenerator-runtime": "^0.13.7", - "sass-loader": "^8.0", - "source-sans-pro": "^3.6.0", - "stylelint": "^13.7.2", - "stylelint-config-standard": "^19.0.0", - "vue-jest": "^3.0.7", - "vue-loader": "^15.9.3", - "vue-router": "^3.4.7", - "vue-template-compiler": "^2.6.12", - "webpackbar": "^4.0.0", - "workbox-webpack-plugin": "^4.3.1" - }, - "scripts": { - "start": "encore dev-server --port=8234 --progress --disable-host-check --verbose", - "build": "encore production --progress", - "postbuild": "rm public/assets/fonts/*.ttf; rm public/assets/fonts/*.eot; rm public/assets/fonts/*.woff; rm public/assets/images/fa-*.svg;", - "build:stats": "encore production --progress --json > webpack_stats.json", - "serve": "encore dev --watch", - "lint": "eslint --ext .js,.vue, assets", - "lint-fix": "eslint --ext .js,.vue, assets --fix", - "stylelint": "stylelint 'assets/scss'", - "stylelint-fix": "stylelint 'assets/scss' --fix", - "csfix": "eslint --ext .js,.vue, assets --fix; stylelint 'assets/scss' --fix", - "test": "jest" - }, - "browserslist": [ - "> 1%" - ], - "jest": { - "moduleFileExtensions": [ - "js", - "json", - "vue" + "name": "bolt", + "version": "4.1.3", + "homepage": "https://boltcms.io", + "author": "Bob den Otter (https://boltcms.io)", + "license": "MIT", + "description": "Bolt 4 npm/javascript packages", + "keywords": [ + "bolt", + "cms", + "php", + "symfony", + "vue", + "content", + "management", + "system" ], - "transform": { - "^.+\\.js$": "/node_modules/babel-jest", - ".*\\.(vue)$": "/node_modules/vue-jest" + "bugs": { + "url": "https://github.com/bolt/core/issues" }, - "moduleNameMapper": { - "^@/(.*)$": "/assets/js/app/$1" + "main": "webpack.config.js", + "directories": { + "tests": "tests" }, - "snapshotSerializers": [ - "/node_modules/jest-serializer-vue" - ] - } + "repository": { + "type": "git", + "url": "git://github.com/bolt/core.git" + }, + "dependencies": { + "@vue/cli-service": "^4.5.8", + "axios": "^0.19.2", + "baguettebox.js": "^1.11.1", + "bootbox": "^5.5.1", + "bootstrap": "^4.5.3", + "browserslist": "^4.14.5", + "caniuse-lite": "^1.0.30001150", + "codemirror": "^5.58.1", + "dropzone": "^5.7.2", + "flagpack": "^1.0.5", + "hotkeys-js": "^3.8.1", + "jquery": "^3.5.1", + "locutus": "^2.0.14", + "luxon": "^1.25.0", + "no-scroll": "^2.1.1", + "node-vibrant": "^3.1.6", + "popper.js": "^1.16.1", + "register-service-worker": "^1.7.1", + "selectize": "^0.12.6", + "simplemde": "^1.11.2", + "stylelint-config-recommended-scss": "^4.2.0", + "stylelint-scss": "^3.18.0", + "terser": "^4.8.0", + "tinycolor2": "^1.4.2", + "vue": "^2.6.12", + "vue-flatpickr-component": "^8.1.6", + "vue-multiselect": "^2.1.6", + "vue-simplemde": "^1.1.2", + "vue-trumbowyg": "^3.6.2", + "vuedraggable": "^2.24.3", + "vuex": "^3.5.1", + "zxcvbn": "^4.4.2" + }, + "devDependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-runtime": "^7.12.1", + "@babel/polyfill": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@fortawesome/fontawesome-free": "^5.15.1", + "@symfony/webpack-encore": "^0.30.2", + "@vue/test-utils": "^1.1.0", + "ajv-keywords": "^3.5.2", + "autoprefixer": "^9.8.6", + "babel-core": "^7.0.0-bridge.0", + "babel-eslint": "^10.1.0", + "babel-jest": "^25.5.1", + "eslint": "^6.8.0", + "eslint-config-prettier": "^6.14.0", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-standard": "^4.0.2", + "eslint-plugin-vue": "^6.2.2", + "genversion": "^2.2.1", + "jest": "^25.5.4", + "jest-serializer-vue": "^2.0.2", + "node-sass": "^4.14.1", + "postcss-loader": "^3.0.0", + "postcss-preset-env": "^6.7.0", + "prettier": "^1.19.1", + "regenerator-runtime": "^0.13.7", + "sass-loader": "^8.0", + "source-sans-pro": "^3.6.0", + "stylelint": "^13.7.2", + "stylelint-config-standard": "^19.0.0", + "vue-jest": "^3.0.7", + "vue-loader": "^15.9.3", + "vue-router": "^3.4.7", + "vue-template-compiler": "^2.6.12", + "webpackbar": "^4.0.0", + "workbox-webpack-plugin": "^4.3.1" + }, + "scripts": { + "start": "encore dev-server --port=8234 --progress --disable-host-check --verbose", + "build": "encore production --progress", + "postbuild": "rm public/assets/fonts/*.ttf; rm public/assets/fonts/*.eot; rm public/assets/fonts/*.woff; rm public/assets/images/fa-*.svg;", + "build:stats": "encore production --progress --json > webpack_stats.json", + "serve": "encore dev --watch", + "lint": "eslint --ext .js,.vue, assets", + "lint-fix": "eslint --ext .js,.vue, assets --fix", + "stylelint": "stylelint 'assets/scss'", + "stylelint-fix": "stylelint 'assets/scss' --fix", + "csfix": "eslint --ext .js,.vue, assets --fix; stylelint 'assets/scss' --fix", + "test": "jest", + "genversion": "genversion --es6 --semi assets/js/version.js" + }, + "browserslist": [ + "> 1%" + ], + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "vue" + ], + "transform": { + "^.+\\.js$": "/node_modules/babel-jest", + ".*\\.(vue)$": "/node_modules/vue-jest" + }, + "moduleNameMapper": { + "^@/(.*)$": "/assets/js/app/$1" + }, + "snapshotSerializers": [ + "/node_modules/jest-serializer-vue" + ] + } } diff --git a/templates/pages/about.html.twig b/templates/pages/about.html.twig index 1b54f916b..32a9aa4ff 100644 --- a/templates/pages/about.html.twig +++ b/templates/pages/about.html.twig @@ -13,7 +13,10 @@ {% block main %} -

Bolt {{ constant('Bolt\\Version::VERSION') }} - {{ constant('Bolt\\Version::CODENAME') }}

+

+ Bolt {{ constant('Bolt\\Version::VERSION') }} + {% if constant('Bolt\\Version::CODENAME') %} - {{ constant('Bolt\\Version::CODENAME') }}{% endif %} +

{{ 'about.system_info'|trans }}:

    @@ -22,6 +25,7 @@
  • PHP version: {{ php }}
  • Symfony version: {{ symfony }}
  • Operating System: {{ os_name }} - {{ os_version }}
  • +
  • Assets version: -

@@ -89,4 +93,10 @@ {# @todo: Once we settle on a Markdown component (like MDE or ToastUI), add it here. #} + + {% endblock main %}