diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 4c257de..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -dist -lib \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 7dbae3b..0000000 --- a/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -# 编译环境 -language: node_js - -# Node 版本 -node_js: - - "10" - -# 安装依赖 -install: - - npm install - -# 代码编译 -script: - - npm run build - - npm run release - -# 发布配置 -deploy: - # 发布到 gh-pages - - provider: pages - local_dir: dist - skip_cleanup: true - github_token: $GITHUB_TOKEN - keep_history: true - on: - branch: master - # 发布到 npm - - provider: npm - email: $NPM_EMAIL - api_key: $NPM_TOKEN - skip_cleanup: true - on: - tags: true - branch: master diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 8bbb8f9..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,11 +0,0 @@ -# 更新日志 - -- 修订版本号:修复 bug,代码调整,功能优化。 -- 次版本号:新增功组件或者新增功能。 -- 主版本号:含有破坏性更新和新特性。 - -## 0.1.0 - -`2020-04-15` - -- 🎉 第一个组件示例 diff --git a/README.md b/README.md deleted file mode 100644 index b6bed2a..0000000 --- a/README.md +++ /dev/null @@ -1,693 +0,0 @@ -# VUE-UI-DOCS - -vue 2.x 组件库自动解析 `Markdown` 示例,自动构建发布到 `github-pages` 和 `npm` - -[旧版本代码](https://github.com/kitorv/vue-ui-docs/tree/v0.x) - -## 实现目标 - -- 自动发布 - - [x] 使用 `Travis` 自动构建和发布代码 - - [x] 提交代码到 `master` 分支,自动发布到 `github-pages` - - [x] 打标签 `tag` 到 `master` 分支,自动发布到 `npm` -- 文档解析 - - [x] `.md` 文件通过编写 `webpack` 加载器解析为 `vue` 代码 - - [x] `Markdown` 文件解析其中包含 `snippet::: {code} :::` 格式为局部组件 -- 项目构建 - - [x] `travis` 自动构建 [https://travis-ci.org/github/kitorv/vue-ui-docs](https://travis-ci.org/github/kitorv/vue-ui-docs) - - [x] `github-pages` 在线访问 [https://kitorv.github.io/vue-ui-docs](https://kitorv.github.io/vue-ui-docs) - - [x] `npm` 包安装 [https://www.npmjs.com/package/vue-ui-docs](https://www.npmjs.com/package/vue-ui-docs) - -代码示例格式: - -````markdown -:::snippet 通过 `v-button` 标签初始化按钮。 - -```html - -``` - -::: -```` - -解析示例渲染: - -![代码解析示例](site/images/vue-snippet-02.png) - -## 创建项目 - -1. 全局安装 `Vue CLI` 更多内容查看[官方文档](https://cli.vuejs.org/zh/guide/installation.html) - -```bash -npm install -g @vue/cli -``` - -2. `vue ui` 可视化操作,也可以通过 `vue crate {project}` - -```bash -vue ui -``` - -![启动CLI](site/images/vue-ui-01.png) - -3. 创建项目 - -![创建项目](site/images/vue-ui-02.png) - -4. 预设配置 - -![预设配置](site/images/vue-ui-03.png) - -5. 手动配置 - -![手动配置](site/images/vue-ui-04.png) - -6. 详细配置 - -![详细配置](site/images/vue-ui-05.png) - -7. 安装依赖 - -![安装依赖](site/images/vue-ui-06.png) - -8. 启动项目 - -![启动项目](site/images/vue-ui-07.png) - -9. 访问地址 - -![访问地址](site/images/vue-ui-08.png) - -10. 浏览器访问 - -![浏览器访问](site/images/vue-ui-09.png) - -## 结构调整 - -1. 文件结构调整 - -```javascript -├─site //示例网站目录 -│ └─components //示例网站组件 -│ └─router //路由配置 -│ │ └─index.js //路由配置文件 -│ └─views //示例页面 -│ │ └─Home.vue //示例网站首页 -│ └─App.vue //项目入口 -│ └─main.js //启动文件 -├─src //源码目录 -``` - -2. 根目录创建 `vue.config.js` 配置 - -```javascript -module.exports = { - pages: { - index: { - entry: "site/main.js", - }, - }, -}; -``` - -3. 相关的依赖、路由配置进行调整,`Home.vue` 页面调整 - -```vue - - - -``` - -4. 页面访问 - -![页面访问](site/images/vue-ui-10.png) - -## 组件开发 - -1. `Button` 组件开发 - -```html - - - - - -``` - -2. 安装配置 `src/button/index.js` - -```javascript -import Button from "./src/button"; - -Button.install = (Vue) => { - Vue.component(Button.name, Button); -}; - -export default Button; -``` - -3. 组件集成安装 `src/index.js` - -```javascript -import Button from "./button/index.js"; - -const components = [Button]; - -const install = (Vue) => { - components.forEach((component) => { - Vue.use(component); - }); -}; - -export default { - install, -}; -``` - -4. 入口文件引入 `site/main.js` - -```javascript -import VueUIDocs from "../src/index"; -Vue.use(VueUIDocs); -``` - -## 文档解析 - -1. 文档示例组件开发 `site/components/snippet.vue` ,并且在 `site/main.js` 使用 `Vue.component` 全局注册 - -```html - - - - - -``` - -2. `build/markdown-loader.js` 解析 marokdown 为 vue 文件,并且自定义解析代码块 `:::snippet {content} :::` - -```javascript -const MarkdownIt = require("markdown-it"); -const MarkdownItContainer = require("markdown-it-container"); -const VueTemplateComplier = require("vue-template-compiler"); -const hljs = require("highlight.js"); -const { parse, compileTemplate } = require("@vue/component-compiler-utils"); - -module.exports = function(source) { - // 需要解析成vue代码块集合 - const componentCodeList = []; - let styleCodeList = []; - const globalScript = []; - // 初始还MarkdownIt用于转换md文件为html - const markdownIt = MarkdownIt({ - html: true, - xhtmlOut: true, - // 将markdown中的代码块用hljs高亮显示 - highlight: function(str, lang) { - if (lang && hljs.getLanguage(lang)) { - return `
${
-          hljs.highlight(lang, str, true).value
-        }
`; - } - return `
${markdownIt.utils.escapeHtml(
-        str
-      )}
`; - }, - }); - // 解析【:::tip:::】 - markdownIt.use(MarkdownItContainer, "tip"); - // 解析【:::warning:::】 - markdownIt.use(MarkdownItContainer, "warning"); - // 使用【markdown-it-container】插件解析【:::snippet :::】代码块为vue渲染 - markdownIt.use(MarkdownItContainer, "snippet", { - // 验证代码块为【:::snippet :::】才进行渲染 - validate(params) { - return params.trim().match(/^snippet\s*(.*)$/); - }, - // 代码块渲染 - render(tokens, index) { - const token = tokens[index]; - const tokenInfo = token.info.trim().match(/^snippet\s*(.*)$/); - if (token.nesting === 1) { - // 获取snippet第一行的表述内容 - const desc = tokenInfo && tokenInfo.length > 1 ? tokenInfo[1] : ""; - // 获取vue组件示例的代码 - const nextIndex = tokens[index + 1]; - let content = nextIndex.type === "fence" ? nextIndex.content : ""; - if (!/^