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()
}