diff --git a/.gitignore b/.gitignore index 2cb9179..947cd6f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ node_modules /dist /build +/public/changelog.html /public/notification.png # local env files diff --git a/package-lock.json b/package-lock.json index e6c68d6..3e7c469 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3070,12 +3070,6 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", - "dev": true - }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", @@ -6808,16 +6802,6 @@ "es6-promise": "^4.0.3" } }, - "es6-templates": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", - "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", - "dev": true, - "requires": { - "recast": "~0.11.12", - "through": "~2.3.6" - } - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -9310,19 +9294,6 @@ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", "dev": true }, - "html-loader": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.5.tgz", - "integrity": "sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==", - "dev": true, - "requires": { - "es6-templates": "^0.2.3", - "fastparse": "^1.1.1", - "html-minifier": "^3.5.8", - "loader-utils": "^1.1.0", - "object-assign": "^4.1.1" - } - }, "html-minifier": { "version": "3.5.21", "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", @@ -11099,16 +11070,6 @@ "object-visit": "^1.0.0" } }, - "markdown-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/markdown-loader/-/markdown-loader-5.0.0.tgz", - "integrity": "sha512-CnRuBrTQNJ2VNlyfPJl+14QU6Sfscse4M6TpwuY0KDuCafMHv6vAcVYInphXFtdvtvjG5kMpF+PwN6CWke0M3A==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "marked": "^0.6.0" - } - }, "marked": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.2.tgz", @@ -17368,26 +17329,6 @@ "readable-stream": "^2.0.2" } }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", - "dev": true, - "requires": { - "ast-types": "0.9.6", - "esprima": "~3.1.0", - "private": "~0.1.5", - "source-map": "~0.5.0" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - } - } - }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -19262,7 +19203,8 @@ "striptags": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz", - "integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0=" + "integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0=", + "dev": true }, "stylehacks": { "version": "4.0.3", diff --git a/package.json b/package.json index 7c592c3..166bf94 100644 --- a/package.json +++ b/package.json @@ -18,9 +18,10 @@ "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint", - "electron:build": "npm run generate-icons && vue-cli-service electron:build", - "electron:serve": "vue-cli-service electron:serve", + "electron:build": "npm run generate-icons && npm run generate-changelog-html && vue-cli-service electron:build", + "electron:serve": "npm run generate-changelog-html && vue-cli-service electron:serve", "postinstall": "electron-builder install-app-deps && npm run generate-icons", + "generate-changelog-html": "node ./scripts/generate-changelog-html.js", "generate-icons": "node ./scripts/generate-icons.js" }, "dependencies": { @@ -31,7 +32,6 @@ "portal-vue": "^2.1.3", "prism-themes": "^1.0.1", "prismjs": "^1.15.0", - "striptags": "^3.1.1", "vue": "^2.6.10", "vue-electron": "^1.0.6", "vue-prism-editor": "^0.1.2", @@ -54,13 +54,13 @@ "@vue/eslint-config-airbnb": "^3.0.4", "electron": "^3.0.13", "electron-icon-maker": "0.0.4", - "html-loader": "^0.5.5", - "markdown-loader": "^5.0.0", + "marked": "^0.6.2", "move-file": "^1.0.0", "node-sass": "^4.12.0", "rimraf": "^2.6.3", "sass-loader": "^7.0.1", "semantic-release": "^15.13.3", + "striptags": "^3.1.1", "svg-loader": "0.0.2", "tailwindcss": "^0.6.6", "vue-cli-plugin-electron-builder": "^1.3.0", diff --git a/scripts/generate-changelog-html.js b/scripts/generate-changelog-html.js new file mode 100644 index 0000000..8231eb5 --- /dev/null +++ b/scripts/generate-changelog-html.js @@ -0,0 +1,20 @@ +/* eslint-disable import/no-extraneous-dependencies */ + +const fs = require('fs'); +const marked = require('marked'); +const path = require('path'); +const striptags = require('striptags'); + +const file = path.resolve(__dirname, '..', 'CHANGELOG.md'); +const destination = path.resolve(__dirname, '..', 'public', 'changelog.html'); +let contents = '# Changelog not found.'; + +if (fs.existsSync(file)) { + contents = fs.readFileSync(file, 'utf-8'); +} + +let html = marked(contents); +html = striptags(html, ['h1', 'h3', 'ul', 'li', 'strong']); +html = html.replace(/\([0-9a-z]*\)/g, ''); + +fs.writeFileSync(destination, html); diff --git a/src/views/Changelog.vue b/src/views/Changelog.vue index 4047b5e..f48694b 100644 --- a/src/views/Changelog.vue +++ b/src/views/Changelog.vue @@ -7,26 +7,36 @@