diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index b7d6eb882..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "prettier.eslintIntegration": true -} diff --git a/package-lock.json b/package-lock.json index bb18bcb53..a457820ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2644,7 +2644,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2665,12 +2666,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2685,17 +2688,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2812,7 +2818,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2824,6 +2831,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2838,6 +2846,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2845,12 +2854,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -2869,6 +2880,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2949,7 +2961,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2961,6 +2974,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3046,7 +3060,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3082,6 +3097,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3101,6 +3117,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3144,12 +3161,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/package.json b/package.json index b697fd103..14f99d1eb 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "build:ssr": "node build/ssr.js", "build:cover": "node build/cover.js", "build": "rimraf lib themes/* && run-s build:js build:css build:css:min build:ssr build:cover", - "prepare": "npm run build", + "prepack": "npm run build", "pub:next": "cross-env RELEASE_TAG=next sh build/release.sh", "pub": "sh build/release.sh", "postinstall": "opencollective postinstall" diff --git a/src/core/config.js b/src/core/config.js index a1386b274..0bf6e0f84 100644 --- a/src/core/config.js +++ b/src/core/config.js @@ -1,6 +1,6 @@ import {merge, hyphenate, isPrimitive, hasOwn} from './util/core' -export default function () { +export default function (vm) { const config = merge( { el: '#app', @@ -28,7 +28,7 @@ export default function () { noCompileLinks: [], relativePath: false }, - window.$docsify + typeof window.$docsify === 'function' ? window.$docsify(vm) : window.$docsify ) const script = diff --git a/src/core/init/index.js b/src/core/init/index.js index fe88c31d4..87b920209 100644 --- a/src/core/init/index.js +++ b/src/core/init/index.js @@ -9,7 +9,7 @@ import {isFn} from '../util/core' export function initMixin(proto) { proto._init = function () { const vm = this - vm.config = config() + vm.config = config(vm) initLifecycle(vm) // Init hooks initPlugin(vm) // Install plugins diff --git a/src/core/render/compiler.js b/src/core/render/compiler.js index 354b6a920..c20b640c7 100644 --- a/src/core/render/compiler.js +++ b/src/core/render/compiler.js @@ -237,10 +237,16 @@ export class Compiler { !_self._matchNotCompileLink(href) && !config.ignore ) { - if (href === _self.config.homepage) { - href = 'README' + // skip hrefs like `#/page?id=section`, which are already in the format + // Docsify compiles hrefs to + // TODO move this to router.toURL + // TODO make a note of why we need this + if (!href.trim().startsWith('#/')) { + if (href === _self.config.homepage) { + href = 'README' + } + href = router.toURL(href, null, router.getCurrentPath()) } - href = router.toURL(href, null, router.getCurrentPath()) } else { attrs += href.indexOf('mailto:') === 0 ? '' : ` target="${linkTarget}"` } @@ -258,7 +264,7 @@ export class Compiler { attrs += ` title="${title}"` } - return `${text}` + return `${text}` } origin.paragraph = renderer.paragraph = function (text) { let result diff --git a/src/core/render/index.js b/src/core/render/index.js index fae1bc526..d9dd88270 100644 --- a/src/core/render/index.js +++ b/src/core/render/index.js @@ -11,18 +11,29 @@ import {isPrimitive} from '../util/core' import {scrollActiveSidebar, scroll2Top} from '../event/scroll' import {prerenderEmbed} from './embed' -function executeScript() { +function getScript() { const script = dom .findAll('.markdown-section>script') .filter(s => !/template/.test(s.type))[0] + if (!script) { - return false + return null } + const code = script.innerText.trim() + if (!code) { - return false + return null } + return code +} + +function executeScript() { + const code = getScript() + + if (!code) return + setTimeout(_ => { window.__EXECUTE_RESULT__ = new Function(code)() }, 0) @@ -52,13 +63,14 @@ function renderMain(html) { if ( this.config.executeScript !== false && typeof window.Vue !== 'undefined' && - !executeScript() + // !executeScript() + !getScript() ) { - setTimeout(_ => { + // setTimeout(_ => { const vueVM = window.__EXECUTE_RESULT__ vueVM && vueVM.$destroy && vueVM.$destroy() window.__EXECUTE_RESULT__ = new window.Vue().$mount('#main') - }, 0) + // }, 0) } else { this.config.executeScript && executeScript() }