Compare commits

..
13 Commits
Author SHA1 Message Date
qingwei.li ec8daca3ec chore: add changelog 4.6.4 2018-03-01 22:42:48 +08:00
qingwei.li 1335baa22f [build] 4.6.4 2018-03-01 22:42:48 +08:00
qingwei.li 123c516836 docs: add fallbackLanguages 2018-03-01 22:40:55 +08:00
Romain Lenzottiandcinwell.li ecc0e04c70 feat(fetch): Add fallback languages configuration. (#402)
fallbackLanguages give the possibility to configure a list of languages which must used the default language when a page is missing in the requested language.
2018-03-01 22:37:30 +08:00
Romain Lenzottiandcinwell.li 278a75ebd5 fix(render): Disable markdown parsing when the file is an HTML (#403) 2018-03-01 22:27:30 +08:00
Romain Lenzottiandcinwell.li b8a4e6ba1b chore: Update dev task in package.json (#404)
- Add rimraf to remove file (Windows/Unix/Mac compliant)
- Add concurrently module to run node app and nodemon concurrently
2018-03-01 22:21:14 +08:00
qingwei.li 01bbbaaf92 fix typo 2018-02-23 11:56:51 +08:00
qingwei.li e5c64a3d8f fix typo 2018-02-23 11:56:12 +08:00
qingwei.li e5ae6e8d25 Merge branch 'master' of github.com:qingwei-li/docsify 2018-02-15 18:36:03 +08:00
qingwei.li 702bb5b715 chore: add changelog 4.6.3 2018-02-15 18:34:48 +08:00
qingwei.li 7cdf751cc5 [build] 4.6.3 2018-02-15 18:34:47 +08:00
qingwei.li 6a09059645 fix(hook): beforeEach don\'t work, fixed #393 2018-02-15 18:34:19 +08:00
Jingjie Yang 杨竞颉andcinwell.li 84f7b5c7c2 chore: typo (#392)
> Only coverpage is loaded when ~~When~~ visiting the home page.
2018-02-15 08:57:17 +08:00
18 changed files with 337 additions and 92 deletions
+1
View File
@@ -3,3 +3,4 @@
/themes/
node_modules
/lib/
.idea
+25
View File
@@ -1,3 +1,28 @@
<a name="4.6.4"></a>
## [4.6.4](https://github.com/QingWei-Li/docsify/compare/v4.6.3...v4.6.4) (2018-03-01)
### Bug Fixes
* **render:** Disable markdown parsing when the file is an HTML ([#403](https://github.com/QingWei-Li/docsify/issues/403)) ([278a75e](https://github.com/QingWei-Li/docsify/commit/278a75e))
### Features
* **fetch:** Add fallback languages configuration. ([#402](https://github.com/QingWei-Li/docsify/issues/402)) ([ecc0e04](https://github.com/QingWei-Li/docsify/commit/ecc0e04))
<a name="4.6.3"></a>
## [4.6.3](https://github.com/QingWei-Li/docsify/compare/v4.6.2...v4.6.3) (2018-02-15)
### Bug Fixes
* **hook:** beforeEach don\'t work, fixed [#393](https://github.com/QingWei-Li/docsify/issues/393) ([6a09059](https://github.com/QingWei-Li/docsify/commit/6a09059))
<a name="4.6.2"></a>
## [4.6.2](https://github.com/QingWei-Li/docsify/compare/v4.6.1...v4.6.2) (2018-02-14)
+1 -1
View File
@@ -1,6 +1,6 @@
![logo](_media/icon.svg)
# docsify <small>4.6.2</small>
# docsify <small>4.6.4</small>
> A magical documentation site generator.
+1 -1
View File
@@ -21,7 +21,7 @@
* [Vue compatibility](vue.md)
* [CDN](cdn.md)
* [Offline Mode(PWA)](pwa.md)
* [Server-client renderer(SSR)](ssr.md)
* [Server-Side Rendering(SSR)](ssr.md)
* [Embed Files <sup style="color:red">(new)<sup>](embed-files.md)
* [Awesome docsify](awesome.md)
+23 -1
View File
@@ -380,7 +380,7 @@ window.$docsify = {
* type: `Boolean`
Only coverpage is loaded when When visiting the home page.
Only coverpage is loaded when visiting the home page.
```js
window.$docsify = {
@@ -413,3 +413,25 @@ window.$docsify = {
ext: '.md'
};
```
## fallbackLanguages
* type: `Array<string>`
List of languages that will fallback to the default language when a page is request and didn't exists for the given local.
Example:
- try to fetch the page of `/de/overview`. If this page exists, it'll be displayed
- then try to fetch the default page `/overview` (depending on the default language). If this page exists, it'll be displayed
- then display 404 page.
```js
window.$docsify = {
fallbackLanguages: [
"fr",
"de"
]
};
```
+1 -1
View File
@@ -21,7 +21,7 @@
* [Vue Kompatibilität](de-de/vue.md)
* [CDN](de-de/cdn.md)
* [Offline Modus (PWA)](de-de/pwa.md)
* [Server-client renderer (SSR)](de-de/ssr.md)
* [Server-Side Rendering (SSR)](de-de/ssr.md)
* [Embed Files <sup style="color:red">(new)<sup>](de-de/embed-files.md)
* [Awesome docsify](de-de/awesome.md)
+18
View File
@@ -401,3 +401,21 @@ window.$docsify = {
ext: '.md'
};
```
## fallbackLanguages
* type: `Array<string>`
List of languages that will fallback to the default language when a page is request and didn't exists for the given local.
Example:
* try to fetch the page of `/de/overview`. If this page exists, it'll be displayed
* then try to fetch the default page `/overview` (depending on the default language). If this page exists, it'll be displayed
* then display 404 page.
```js
window.$docsify = {
fallbackLanguages: ['fr', 'de']
};
```
+1 -1
View File
@@ -1,4 +1,4 @@
# Server client renderer
# Server-Side Rendering
See https://docsify.now.sh
+1 -1
View File
@@ -1,4 +1,4 @@
# Server client renderer
# Server-Side Rendering
See https://docsify.now.sh
+18
View File
@@ -413,3 +413,21 @@ window.$docsify = {
ext: '.md'
};
```
## fallbackLanguages
* type: `Array<string>`
List of languages that will fallback to the default language when a page is request and didn't exists for the given local.
Example:
* try to fetch the page of `/de/overview`. If this page exists, it'll be displayed
* then try to fetch the default page `/overview` (depending on the default language). If this page exists, it'll be displayed
* then display 404 page.
```js
window.$docsify = {
fallbackLanguages: ['fr', 'de']
};
```
+41 -15
View File
@@ -3747,14 +3747,14 @@ function renderMixin (proto) {
callHook(this$1, 'afterEach', html, function (text) { return renderMain.call(this$1, text); });
};
if (this$1.isHTML) {
html = this$1.result;
html = this$1.result = text;
callback();
next();
} else {
prerenderEmbed(
{
compiler: this$1.compiler,
raw: text
raw: result
},
function (tokens) {
html = this$1.compiler.compile(tokens);
@@ -4177,14 +4177,39 @@ function fetchMixin (proto) {
var loadNavbar = ref$1.loadNavbar;
var loadSidebar = ref$1.loadSidebar;
var requestHeaders = ref$1.requestHeaders;
var fallbackLanguages = ref$1.fallbackLanguages;
// Abort last request
last && last.abort && last.abort();
last = get(this.router.getFile(path) + qs, true, requestHeaders);
var file = this.router.getFile(path);
last = get(file + qs, true, requestHeaders);
// Current page is html
this.isHTML = /\.html$/g.test(path);
this.isHTML = /\.html$/g.test(file);
var getFallBackPage = function (file) {
if (!fallbackLanguages) {
return false
}
var local = file.split('/')[1];
if (fallbackLanguages.indexOf(local) === -1) {
return false
}
file = file.replace(new RegExp(("^/" + local)), '');
return get(file + qs, true, requestHeaders)
.then(
function (text, opt) {
this$1._renderMain(text, opt, loadSideAndNav);
},
function (_) {
return this$1._renderMain(null, {}, loadSideAndNav)
}
)
};
var loadSideAndNav = function () {
if (!loadSidebar) { return cb() }
@@ -4199,14 +4224,15 @@ function fetchMixin (proto) {
};
// Load main content
last.then(
function (text, opt) {
this$1._renderMain(text, opt, loadSideAndNav);
},
function (_) {
this$1._renderMain(null, {}, loadSideAndNav);
}
);
last
.then(
function (text, opt) {
this$1._renderMain(text, opt, loadSideAndNav);
},
function (_) {
return getFallBackPage(file) || this$1._renderMain(null, {}, loadSideAndNav)
}
);
// Load nav
loadNavbar &&
@@ -4283,7 +4309,7 @@ function initFetch (vm) {
var ref = vm.config;
var loadSidebar = ref.loadSidebar;
// server-client renderer
// Server-Side Rendering
if (vm.rendered) {
var activeEl = getAndActive(vm.router, '.sidebar-nav', true, true);
if (loadSidebar && activeEl) {
@@ -4379,7 +4405,7 @@ initGlobalAPI();
/**
* Version
*/
Docsify.version = '4.6.2';
Docsify.version = '4.6.4';
/**
* Run Docsify
+1 -1
View File
File diff suppressed because one or more lines are too long
+155 -48
View File
@@ -1,6 +1,6 @@
{
"name": "docsify",
"version": "4.6.2",
"version": "4.6.4",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -150,14 +150,12 @@
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"any-promise": {
"version": "1.3.0",
@@ -651,7 +649,6 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
@@ -663,16 +660,14 @@
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
}
}
},
"chardet": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
"integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
"dev": true
"integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
},
"chokidar": {
"version": "1.7.0",
@@ -748,7 +743,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
"dev": true,
"requires": {
"restore-cursor": "2.0.0"
}
@@ -756,8 +750,7 @@
"cli-width": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz",
"integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=",
"dev": true
"integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao="
},
"clipboard": {
"version": "1.7.1",
@@ -1156,8 +1149,7 @@
"core-js": {
"version": "2.5.3",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz",
"integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=",
"dev": true
"integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4="
},
"core-util-is": {
"version": "1.0.2",
@@ -1629,6 +1621,14 @@
"integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
"dev": true
},
"encoding": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
"requires": {
"iconv-lite": "0.4.19"
}
},
"entities": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
@@ -1653,8 +1653,7 @@
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"eslint": {
"version": "4.14.0",
@@ -1917,7 +1916,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz",
"integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==",
"dev": true,
"requires": {
"chardet": "0.4.2",
"iconv-lite": "0.4.19",
@@ -1963,7 +1961,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
"dev": true,
"requires": {
"escape-string-regexp": "1.0.5"
}
@@ -3273,7 +3270,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
@@ -3337,8 +3333,7 @@
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
"dev": true
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
},
"ignore": {
"version": "3.3.7",
@@ -3678,8 +3673,7 @@
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
"dev": true
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"is-redirect": {
"version": "1.0.0",
@@ -3702,8 +3696,7 @@
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
"is-subset": {
"version": "0.1.1",
@@ -4192,8 +4185,7 @@
"lodash": {
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
"dev": true
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
},
"lodash._reinterpolate": {
"version": "3.0.0",
@@ -4406,8 +4398,7 @@
"mimic-fn": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
"integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=",
"dev": true
"integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg="
},
"minimatch": {
"version": "3.0.4",
@@ -4454,8 +4445,7 @@
"mute-stream": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
"dev": true
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
},
"mz": {
"version": "2.7.0",
@@ -4481,6 +4471,15 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
"node-fetch": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz",
"integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=",
"requires": {
"encoding": "0.1.12",
"is-stream": "1.1.0"
}
},
"nodemon": {
"version": "1.14.7",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.14.7.tgz",
@@ -4590,8 +4589,7 @@
"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
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"object.omit": {
"version": "2.0.1",
@@ -4625,11 +4623,119 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
"dev": true,
"requires": {
"mimic-fn": "1.1.0"
}
},
"opencollective": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz",
"integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=",
"requires": {
"babel-polyfill": "6.23.0",
"chalk": "1.1.3",
"inquirer": "3.0.6",
"minimist": "1.2.0",
"node-fetch": "1.6.3",
"opn": "4.0.2"
},
"dependencies": {
"ansi-escapes": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
"integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4="
},
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
},
"babel-polyfill": {
"version": "6.23.0",
"resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz",
"integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=",
"requires": {
"babel-runtime": "6.26.0",
"core-js": "2.5.3",
"regenerator-runtime": "0.10.5"
}
},
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"requires": {
"core-js": "2.5.3",
"regenerator-runtime": "0.11.1"
},
"dependencies": {
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
}
}
},
"inquirer": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz",
"integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=",
"requires": {
"ansi-escapes": "1.4.0",
"chalk": "1.1.3",
"cli-cursor": "2.1.0",
"cli-width": "2.1.0",
"external-editor": "2.1.0",
"figures": "2.0.0",
"lodash": "4.17.4",
"mute-stream": "0.0.7",
"run-async": "2.3.0",
"rx": "4.1.0",
"string-width": "2.1.1",
"strip-ansi": "3.0.1",
"through": "2.3.8"
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"requires": {
"is-fullwidth-code-point": "2.0.0",
"strip-ansi": "4.0.0"
},
"dependencies": {
"strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"requires": {
"ansi-regex": "3.0.0"
}
}
}
}
}
},
"opn": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
"integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
"requires": {
"object-assign": "4.1.1",
"pinkie-promise": "2.0.1"
}
},
"optimist": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
@@ -4699,8 +4805,7 @@
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
"p-finally": {
"version": "1.0.0",
@@ -4862,14 +4967,12 @@
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
},
"pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "2.0.4"
}
@@ -7866,6 +7969,11 @@
"balanced-match": "0.4.2"
}
},
"regenerator-runtime": {
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
"integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
},
"regex-cache": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
@@ -7968,7 +8076,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
"dev": true,
"requires": {
"onetime": "2.0.1",
"signal-exit": "3.0.2"
@@ -8206,11 +8313,15 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
"integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
"dev": true,
"requires": {
"is-promise": "2.1.0"
}
},
"rx": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
"integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I="
},
"rx-lite": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
@@ -8383,8 +8494,7 @@
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
},
"slice-ansi": {
"version": "1.0.0",
@@ -8514,7 +8624,6 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
@@ -8767,8 +8876,7 @@
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
"dev": true
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"through2": {
"version": "2.0.3",
@@ -8801,7 +8909,6 @@
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
"requires": {
"os-tmpdir": "1.0.2"
}
+8 -5
View File
@@ -1,6 +1,6 @@
{
"name": "docsify",
"version": "4.6.2",
"version": "4.6.4",
"description": "A magical documentation generator.",
"author": {
"name": "qingwei-li",
@@ -21,9 +21,10 @@
],
"scripts": {
"bootstrap": "npm i && lerna bootstrap && npm run build:ssr",
"build": "rm -rf lib themes && node build/build && mkdir lib/themes && mkdir themes && node build/build-css && npm run build:ssr && node build/build-cover",
"dev:build": "rm -rf lib themes && mkdir themes && node build/build --dev && node build/build-css --dev",
"dev": "node app & nodemon -w src -e js,css --exec 'npm run dev:build'",
"build": "rimraf lib themes && node build/build && mkdir lib/themes && mkdir themes && node build/build-css && npm run build:ssr && node build/build-cover",
"dev:build": "rimraf lib themes && mkdir themes && node build/build --dev && node build/build-css --dev",
"dev:watch": "nodemon -w ./src/ -e js,css --exec \"npm run dev:build\"",
"dev": "concurrently \"node app\" \"npm run dev:watch\"",
"build:ssr": "node build/build-ssr",
"test": "eslint {src,packages} --fix",
"pub:next": "RELEASE_TAG=next sh build/release.sh",
@@ -32,13 +33,14 @@
},
"dependencies": {
"marked": "^0.3.12",
"opencollective": "^1.0.3",
"medium-zoom": "^0.3.0",
"opencollective": "^1.0.3",
"prismjs": "^1.9.0",
"tinydate": "^1.0.0",
"tweezer.js": "^1.4.0"
},
"devDependencies": {
"concurrently": "^3.5.1",
"conventional-changelog-cli": "^1.3.5",
"cssnano": "^3.10.0",
"eslint": "^4.14.0",
@@ -48,6 +50,7 @@
"nodemon": "^1.14.7",
"postcss": "^5.2.16",
"postcss-salad": "^1.0.8",
"rimraf": "^2.6.2",
"rollup": "^0.53.3",
"rollup-plugin-async": "^1.2.0",
"rollup-plugin-buble": "^0.18.0",
+1 -1
View File
@@ -37,5 +37,5 @@
"integrity": "sha1-6DWIAbhrg7F1YNTjw4LXrvIQCUQ="
}
},
"version": "4.6.2"
"version": "4.6.4"
}
@@ -1,6 +1,6 @@
{
"name": "docsify-server-renderer",
"version": "4.6.2",
"version": "4.6.4",
"description": "docsify server renderer",
"author": {
"name": "qingwei-li",
+38 -13
View File
@@ -22,15 +22,39 @@ export function fetchMixin (proto) {
proto._fetch = function (cb = noop) {
const { path, query } = this.route
const qs = stringifyQuery(query, ['id'])
const { loadNavbar, loadSidebar, requestHeaders } = this.config
const { loadNavbar, loadSidebar, requestHeaders, fallbackLanguages } = this.config
// Abort last request
last && last.abort && last.abort()
last = get(this.router.getFile(path) + qs, true, requestHeaders)
const file = this.router.getFile(path)
last = get(file + qs, true, requestHeaders)
// Current page is html
this.isHTML = /\.html$/g.test(path)
this.isHTML = /\.html$/g.test(file)
const getFallBackPage = (file) => {
if (!fallbackLanguages) {
return false
}
const local = file.split('/')[1]
if (fallbackLanguages.indexOf(local) === -1) {
return false
}
file = file.replace(new RegExp(`^/${local}`), '')
return get(file + qs, true, requestHeaders)
.then(
(text, opt) => {
this._renderMain(text, opt, loadSideAndNav)
},
_ => {
return this._renderMain(null, {}, loadSideAndNav)
}
)
}
const loadSideAndNav = () => {
if (!loadSidebar) return cb()
@@ -45,14 +69,15 @@ export function fetchMixin (proto) {
}
// Load main content
last.then(
(text, opt) => {
this._renderMain(text, opt, loadSideAndNav)
},
_ => {
this._renderMain(null, {}, loadSideAndNav)
}
)
last
.then(
(text, opt) => {
this._renderMain(text, opt, loadSideAndNav)
},
_ => {
return getFallBackPage(file) || this._renderMain(null, {}, loadSideAndNav)
}
)
// Load nav
loadNavbar &&
@@ -121,7 +146,7 @@ export function fetchMixin (proto) {
export function initFetch (vm) {
const { loadSidebar } = vm.config
// server-client renderer
// Server-Side Rendering
if (vm.rendered) {
const activeEl = getAndActive(vm.router, '.sidebar-nav', true, true)
if (loadSidebar && activeEl) {
+2 -2
View File
@@ -135,14 +135,14 @@ export function renderMixin (proto) {
callHook(this, 'afterEach', html, text => renderMain.call(this, text))
}
if (this.isHTML) {
html = this.result
html = this.result = text
callback()
next()
} else {
prerenderEmbed(
{
compiler: this.compiler,
raw: text
raw: result
},
tokens => {
html = this.compiler.compile(tokens)