Browse Source

Gitbook Auto Published

willin 6 years ago
parent
commit
371483637e
7 changed files with 280 additions and 145 deletions
  1. 0 100
      SUMMARY.md
  2. 92 0
      _sidebar.md
  3. 0 11
      cmd
  4. 0 24
      gulpfile.js
  5. 102 0
      index.html
  6. 3 10
      package.json
  7. 83 0
      sw.js

+ 0 - 100
SUMMARY.md

@@ -1,100 +0,0 @@
-# Summary
-
-- [前言](INTRO.md)
-- [版权](COPYRIGHT.md)
-
-## 知识篇
-
-- [操作系统(OS X)](basic/osx.md)
-- 必备神器
-  - [Brew](basic/resource/brew.md)
-  - [OhMyZsh](basic/resource/zsh.md)
-  - [Dnsmasq](basic/resource/dnsmasq.md)
-  - [IDE](basic/resource/ide.md)
-  - [科学上网](basic/resource/ss.md)
-  - [在线资源](basic/resource/online.md)
-  - [离线资源](basic/resource/offline.md)
-  - [前端资源](basic/resource/frontend.md)
-- 基础知识
-  - [HTTP](basic/knowledge/http.md)
-  - [SHELL](basic/knowledge/shell.md)
-  - [GIT](basic/knowledge/git.md)
-  - [Promise](basic/knowledge/promise.md)
-  - [Docker 加速](basic/knowledge/docker.md)
-- Vanilla JS
-  - [小技巧](basic/js/tricks.md)
-  - [Fetch AJAX](basic/js/fetch.md)
-  - [ES Next](basic/js/es.md)
-  - [Map](basic/js/map.md)
-  - [Reduce](basic/js/reduce.md)
-  - [正则替换](basic/js/regexp.md)
-- Node.js
-  - [包管理](basic/node/pkg.md)
-  - [Hexo静态博客搭建](basic/node/hexo.md)
-  - [GitBook静态文档生成](basic/node/gitbook.md)
-  - [Babel](basic/node/babel.md)
-  - [Test](basic/node/test.md)
-  - [Benchmark](basic/node/benchmark.md)
-  - [造轮子(NPM)篇](basic/node/npm.md)
-- DB
-  - [MySQL](basic/db/mysql.md)
-  - [Redis](basic/db/redis.md)
-- 常用框架
-  - [HAPI](basic/framework/hapi.md)
-  - [Socket.IO](basic/framework/socketio.md)
-  - [Electron](basic/framework/electron.md)
-  - [UDP](basic/framework/udp.md)
-  - [Koa](basic/framework/koa.md)
-  - [Vue](basic/framework/vue.md)
-  - [React Redux](basic/framework/redux.md)
-  - [NativeScript](basic/framework/nativescript.md)
-- 算法入门(使用ES 6/7)
-  - [奇数求和](basic/algorithm/sum-of-odd-numbers.md)
-  - [查找单数](basic/algorithm/find-the-odd-int.md)
-  - [查找杂散数](basic/algorithm/find-the-stray-number.md)
-
-## 经验篇
-
-- [设计](experience/design/README.md)
-  - [需求分析](experience/design/requirements.md)
-  - [产品设计](experience/design/product.md)
-  - [系统架构](experience/design/architecture.md)
-  - [系统架构设计实践](experience/design/system.md)
-- [项目](experience/project/README.md)
-  - [分治原则](experience/project/divide.md)
-  - [项目结构](experience/project/structure.md)
-  - [开发指南](experience/project/develop.md)
-  - [功能模块设计](experience/project/user/module.md)
-  - [数据库设计](experience/project/user/db.md)
-  - [缓存设计](experience/project/user/cache.md)
-  - [BDD实践](experience/project/user/bdd.md)
-  - [代码细节处理](experience/project/user/particulars.md)
-- [运维](experience/operation/README.md)
-  - [服务器配置](experience/operation/server.md)
-  - [PM2守护进程](experience/operation/pm2.md)
-  - [Later计划任务](experience/operation/later.md)
-  - [CI工作流](experience/operation/workflow.md)
-  - [重启服务](experience/operation/restarter.md)
-  - [版本回退](experience/operation/rollback.md)
-  - [CertBot证书](experience/operation/certbot.md)
-- 进阶
-  - [元编程构造优雅解决方案](experience/advanced/meta.md)
-  - [Electron桌面应用](experience/advanced/desktop-app.md)
-  - [混合Web应用实践](experience/advanced/mixed-project.md)
-
-## 思想篇
-
-- 能力
-  - [好员工的定义](mind/capability/define-good-employee.md)
-  - [新人成长](mind/capability/growth.md)
-  - [学习能力](mind/capability/study.md)
-  - [问题处理能力](mind/capability/solving.md)
-- 思维模式
-  - [忽略细节,就是屎](mind/thinking/shit.md)
-  - [辩证思维](mind/thinking/dialectical.md)
-  - [克服强迫症](mind/thinking/ocd.md)
-  - [木桶效应](mind/thinking/buckets.md)
-- 团队建设
-  - [招聘原则](mind/team/hire.md)
-  - [会议原则](mind/team/meeting.md)
-  - [人才理念](mind/team/concept.md)

+ 92 - 0
_sidebar.md

@@ -0,0 +1,92 @@
+- [前言](INTRO.md)
+- [版权](COPYRIGHT.md)
+- 知识篇
+  - [操作系统(OS X)](basic/osx.md)
+  - 必备神器
+    - [Brew](basic/resource/brew.md)
+    - [OhMyZsh](basic/resource/zsh.md)
+    - [Dnsmasq](basic/resource/dnsmasq.md)
+    - [IDE](basic/resource/ide.md)
+    - [科学上网](basic/resource/ss.md)
+    - [在线资源](basic/resource/online.md)
+    - [离线资源](basic/resource/offline.md)
+    - [前端资源](basic/resource/frontend.md)
+  - 基础知识
+    - [HTTP](basic/knowledge/http.md)
+    - [SHELL](basic/knowledge/shell.md)
+    - [GIT](basic/knowledge/git.md)
+    - [Promise](basic/knowledge/promise.md)
+    - [Docker 加速](basic/knowledge/docker.md)
+  - Vanilla JS
+    - [小技巧](basic/js/tricks.md)
+    - [Fetch AJAX](basic/js/fetch.md)
+    - [ES Next](basic/js/es.md)
+    - [Map](basic/js/map.md)
+    - [Reduce](basic/js/reduce.md)
+    - [正则替换](basic/js/regexp.md)
+  - Node.js
+    - [包管理](basic/node/pkg.md)
+    - [Hexo静态博客搭建](basic/node/hexo.md)
+    - [GitBook静态文档生成](basic/node/gitbook.md)
+    - [Babel](basic/node/babel.md)
+    - [Test](basic/node/test.md)
+    - [Benchmark](basic/node/benchmark.md)
+    - [造轮子(NPM)篇](basic/node/npm.md)
+  - DB
+    - [MySQL](basic/db/mysql.md)
+    - [Redis](basic/db/redis.md)
+  - 常用框架
+    - [HAPI](basic/framework/hapi.md)
+    - [Socket.IO](basic/framework/socketio.md)
+    - [Electron](basic/framework/electron.md)
+    - [UDP](basic/framework/udp.md)
+    - [Koa](basic/framework/koa.md)
+    - [Vue](basic/framework/vue.md)
+    - [React Redux](basic/framework/redux.md)
+    - [NativeScript](basic/framework/nativescript.md)
+  - 算法入门(使用ES 6/7)
+    - [奇数求和](basic/algorithm/sum-of-odd-numbers.md)
+    - [查找单数](basic/algorithm/find-the-odd-int.md)
+    - [查找杂散数](basic/algorithm/find-the-stray-number.md)
+- 经验篇
+  - [设计](experience/design/README.md)
+    - [需求分析](experience/design/requirements.md)
+    - [产品设计](experience/design/product.md)
+    - [系统架构](experience/design/architecture.md)
+    - [系统架构设计实践](experience/design/system.md)
+  - [项目](experience/project/README.md)
+    - [分治原则](experience/project/divide.md)
+    - [项目结构](experience/project/structure.md)
+    - [开发指南](experience/project/develop.md)
+    - [功能模块设计](experience/project/user/module.md)
+    - [数据库设计](experience/project/user/db.md)
+    - [缓存设计](experience/project/user/cache.md)
+    - [BDD实践](experience/project/user/bdd.md)
+    - [代码细节处理](experience/project/user/particulars.md)
+  - [运维](experience/operation/README.md)
+    - [服务器配置](experience/operation/server.md)
+    - [PM2守护进程](experience/operation/pm2.md)
+    - [Later计划任务](experience/operation/later.md)
+    - [CI工作流](experience/operation/workflow.md)
+    - [重启服务](experience/operation/restarter.md)
+    - [版本回退](experience/operation/rollback.md)
+    - [CertBot证书](experience/operation/certbot.md)
+  - 进阶
+    - [元编程构造优雅解决方案](experience/advanced/meta.md)
+    - [Electron桌面应用](experience/advanced/desktop-app.md)
+    - [混合Web应用实践](experience/advanced/mixed-project.md)
+- 思想篇
+  - 能力
+    - [好员工的定义](mind/capability/define-good-employee.md)
+    - [新人成长](mind/capability/growth.md)
+    - [学习能力](mind/capability/study.md)
+    - [问题处理能力](mind/capability/solving.md)
+  - 思维模式
+    - [忽略细节,就是屎](mind/thinking/shit.md)
+    - [辩证思维](mind/thinking/dialectical.md)
+    - [克服强迫症](mind/thinking/ocd.md)
+    - [木桶效应](mind/thinking/buckets.md)
+  - 团队建设
+    - [招聘原则](mind/team/hire.md)
+    - [会议原则](mind/team/meeting.md)
+    - [人才理念](mind/team/concept.md)

+ 0 - 11
cmd

@@ -4,14 +4,3 @@ git add .
 git commit -m 'Gitbook Auto Published'
 git push origin master
 git push coding master
-
-rm -rf _book
-node_modules/.bin/gitbook build
-cd _book
-git init
-git add .
-git commit -m "Gitbook Auto Deployed"
-git remote add origin git@github.com:js-cool/leader.js.cool.git
-git remote add coding git@git.coding.net:willin/leader.js.cool.git
-git push -f coding master:coding-pages
-git push -f origin master:gh-pages

+ 0 - 24
gulpfile.js

@@ -1,24 +0,0 @@
-var browserSync = require('browser-sync');
-var gulp = require('gulp')
-var run = require('gulp-run')
-
-gulp.task('browser-sync', function() {
-    browserSync({
-        server: {
-            baseDir: "./_book"
-        }
-    });
-});
-
-gulp.task('build-doc', function () {
-    run('npm run build').exec('', function() {
-        run('echo build DONE!').exec().pipe(browserSync.reload({stream:true}));
-    });
-
-})
-
-gulp.task('watch', function () {
-    gulp.watch(['./**/*.md', './node_modules/gitbook-plugin-theme-material/*'], ['build-doc']);
-})
-
-gulp.task('default', ['build-doc', 'browser-sync', 'watch']);

+ 102 - 0
index.html

@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="UTF-8">
+  <title>不可替代的团队领袖培养计划</title>
+  <meta name="description" content="Description">
+  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
+  <link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
+  <link rel="stylesheet" href="//unpkg.com/mermaid/dist/mermaid.min.css">
+  <style>.markdown-section{max-width:95% !important;}</style>
+</head>
+<body>
+  <div id="app"></div>
+</body>
+<script type="text/javascript">
+window.$docsify = {
+  name: 'leader.js.cool',
+  repo: 'https://github.com/js-cool/leader.js.cool.git',
+  loadSidebar: true,
+  subMaxLevel: 2,
+  formatUpdated: '{YYYY}-{MM}-{DD} {HH}:{mm}',
+  executeScript: true,
+  alias: {
+    '/basic/_sidebar.md': '/_sidebar.md',
+    '/basic/algorithm/_sidebar.md': '/_sidebar.md',
+    '/basic/db/_sidebar.md': '/_sidebar.md',
+    '/basic/framework/_sidebar.md': '/_sidebar.md',
+    '/basic/js/_sidebar.md': '/_sidebar.md',
+    '/basic/knowledge/_sidebar.md': '/_sidebar.md',
+    '/basic/node/_sidebar.md': '/_sidebar.md',
+    '/basic/resource/_sidebar.md': '/_sidebar.md',
+    '/experience/_sidebar.md': '/_sidebar.md',
+    '/experience/advanced/_sidebar.md': '/_sidebar.md',
+    '/experience/design/_sidebar.md': '/_sidebar.md',
+    '/experience/operation/_sidebar.md': '/_sidebar.md',
+    '/experience/project/_sidebar.md': '/_sidebar.md',
+    '/experience/project/user/_sidebar.md': '/_sidebar.md',
+    '/mind/_sidebar.md': '/_sidebar.md',
+    '/mind/capability/_sidebar.md': '/_sidebar.md',
+    '/mind/team/_sidebar.md': '/_sidebar.md',
+    '/mind/thinking/_sidebar.md': '/_sidebar.md'
+  },
+  search:{
+    placeholder: '搜索',
+    noData: '未找到结果'
+  },
+  plugins: [
+    function(hook, vm) {
+      hook.ready(function () {
+        mermaid.initialize({startOnLoad: false});
+        var adScript = document.createElement('script');
+        adScript.src = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
+        adScript.setAttribute('async', true);
+        document.body.appendChild(adScript);
+      });
+      hook.beforeEach(function (md) {
+        var url = 'https://github.com/js-cool/leader.js.cool/blob/master' + vm.route.file
+        var editUrl = '[:memo: 编辑本章节](' + url + ')\n'
+        return md
+          + '\n----\n'
+          + '最后更新 {docsify-updated} '
+          + editUrl
+      });
+      hook.doneEach(function () {
+        mermaid.init(undefined,'.mermaid');
+        var main = document.getElementById('main');
+        var paragraphs = main.getElementsByTagName('p');
+        var ads = [];
+        if(paragraphs.length > 15) {
+          ads.push(Math.ceil(Math.random()*paragraphs.length));
+        }
+        ads.push(paragraphs[paragraphs.length-1]);
+        for(var i = 0; i < ads.length; i += 1) {
+          ads[i].insertAdjacentHTML('afterend', '<ins class="adsbygoogle" style="display:block;margin: 1.5em auto;" data-ad-client="ca-pub-5059418763237956" data-ad-slot="9518721243" data-ad-format="auto"></ins>');
+          (adsbygoogle = window.adsbygoogle || []).push({});   
+        }
+      });
+    }
+  ],
+  markdown: {
+    renderer: {
+      code: function(code, lang) {
+        var html = '';
+        if(code.match(/^sequenceDiagram/) || code.match(/^graph/) || code.match(/^gantt/)){
+          html = '<div class="mermaid">' + code + '</div>';
+        }
+        var hl = Prism.highlight(code, Prism.languages[lang] || Prism.languages.markup)
+        return html + '<pre v-pre data-lang="' + lang + '"><code class="lang-' + lang + '">' + hl + '</code></pre>'
+      }
+    }
+  }
+}
+if (typeof navigator.serviceWorker !== 'undefined') {
+  navigator.serviceWorker.register('sw.js')
+}
+</script>
+<script type="text/javascript" src="//unpkg.com/docsify/lib/docsify.min.js"></script>
+<script type="text/javascript" src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
+<script type="text/javascript" src="//unpkg.com/prismjs/components/prism-bash.min.js"></script>
+<script type="text/javascript" src="//unpkg.com/prismjs/components/prism-sql.min.js"></script>
+<script type="text/javascript" src="//unpkg.com/mermaid/dist/mermaid.min.js"></script>
+</html>

+ 3 - 10
package.json

@@ -1,12 +1,10 @@
 {
   "name": "leader",
-  "version": "2.0.0",
+  "version": "3.0.0",
   "description": "不可替代的团队领袖培养计划",
   "main": "index.js",
   "scripts": {
-    "start": "./cmd",
-    "test": "gulp",
-    "build": "gitbook build"
+    "start": "docsify serve . --port 3456 --open"
   },
   "repository": {
     "type": "git",
@@ -23,12 +21,7 @@
     "url": "https://coding.net/u/willin/p/leader.js.cool/topic"
   },
   "homepage": "https://coding.net/u/willin/p/leader.js.cool/git",
-  "dependencies": {
-    "gitbook-cli": "^2.2.0"
-  },
   "devDependencies": {
-    "browser-sync": "^2.18.7",
-    "gulp": "^3.9.1",
-    "gulp-run": "^1.7.1"
+   "docsify-cli": "^4.1.8"
   }
 }

+ 83 - 0
sw.js

@@ -0,0 +1,83 @@
+/* ===========================================================
+ * docsify sw.js
+ * ===========================================================
+ * Copyright 2016 @huxpro
+ * Licensed under Apache 2.0
+ * Register service worker.
+ * ========================================================== */
+
+const RUNTIME = 'docsify'
+const HOSTNAME_WHITELIST = [
+  self.location.hostname,
+  'fonts.gstatic.com',
+  'fonts.googleapis.com',
+  'unpkg.com'
+]
+
+// The Util Function to hack URLs of intercepted requests
+const getFixedUrl = (req) => {
+  var now = Date.now()
+  var url = new URL(req.url)
+
+  // 1. fixed http URL
+  // Just keep syncing with location.protocol
+  // fetch(httpURL) belongs to active mixed content.
+  // And fetch(httpRequest) is not supported yet.
+  url.protocol = self.location.protocol
+
+  // 2. add query for caching-busting.
+  // Github Pages served with Cache-Control: max-age=600
+  // max-age on mutable content is error-prone, with SW life of bugs can even extend.
+  // Until cache mode of Fetch API landed, we have to workaround cache-busting with query string.
+  // Cache-Control-Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=453190
+  if (url.hostname === self.location.hostname) {
+    url.search += (url.search ? '&' : '?') + 'cache-bust=' + now
+  }
+  return url.href
+}
+
+/**
+ *  @Lifecycle Activate
+ *  New one activated when old isnt being used.
+ *
+ *  waitUntil(): activating ====> activated
+ */
+self.addEventListener('activate', event => {
+  event.waitUntil(self.clients.claim())
+})
+
+/**
+ *  @Functional Fetch
+ *  All network requests are being intercepted here.
+ *
+ *  void respondWith(Promise<Response> r)
+ */
+self.addEventListener('fetch', event => {
+  // Skip some of cross-origin requests, like those for Google Analytics.
+  if (HOSTNAME_WHITELIST.indexOf(new URL(event.request.url).hostname) > -1) {
+    // Stale-while-revalidate
+    // similar to HTTP's stale-while-revalidate: https://www.mnot.net/blog/2007/12/12/stale
+    // Upgrade from Jake's to Surma's: https://gist.github.com/surma/eb441223daaedf880801ad80006389f1
+    const cached = caches.match(event.request)
+    const fixedUrl = getFixedUrl(event.request)
+    const fetched = fetch(fixedUrl, { cache: 'no-store' })
+    const fetchedCopy = fetched.then(resp => resp.clone())
+
+    // Call respondWith() with whatever we get first.
+    // If the fetch fails (e.g disconnected), wait for the cache.
+    // If there’s nothing in cache, wait for the fetch.
+    // If neither yields a response, return offline pages.
+    event.respondWith(
+      Promise.race([fetched.catch(_ => cached), cached])
+        .then(resp => resp || fetched)
+        .catch(_ => { /* eat any errors */ })
+    )
+
+    // Update the cache with the version we fetched (only for ok status)
+    event.waitUntil(
+      Promise.all([fetchedCopy, caches.open(RUNTIME)])
+        .then(([response, cache]) => response.ok && cache.put(event.request, response))
+        .catch(_ => { /* eat any errors */ })
+    )
+  }
+})