[![doocs-md](https://cdn.jsdelivr.net/gh/doocs/md/public/assets/images/logo-2.png)](https://github.com/doocs/md)

微信 Markdown 编辑器

[![sync status](https://github.com/doocs/md/workflows/Sync/badge.svg)](https://github.com/doocs/md/actions) [![deploy status](https://github.com/doocs/md/workflows/Build%20and%20Deploy/badge.svg)](https://github.com/doocs/md/actions) [![prettier status](https://github.com/doocs/md/workflows/Prettier/badge.svg)](https://github.com/doocs/md/actions) [![users](https://badgen.net/badge/Who's/using/green)](#谁在使用) [![PRs Welcome](https://badgen.net/badge/PRs/welcome/green)](../../pulls)
[![github](https://badgen.net/badge/⭐/GitHub/blue)](https://github.com/doocs/md) [![gitee](https://badgen.net/badge/⭐/Gitee/blue)](https://gitee.com/doocs/md) [![license](https://badgen.net/github/license/doocs/md)](./LICENSE) [![release](https://img.shields.io/github/v/release/doocs/md.svg)](../../releases)
## 项目介绍 > 本项目基于 [wechat-format](https://github.com/lyricat/wechat-format) 进行二次开发,感谢 [lyricat](https://github.com/lyricat) 的创意和贡献! Markdown 文档自动即时渲染为微信图文,让你不再为微信文章排版而发愁!只要你会基本的 Markdown 语法,就能做出一篇样式简洁而又美观大方的微信图文。 ## 在线编辑器地址 - Netlify: https://mdhere.netlify.app - Gitee Pages:https://doocs.gitee.io/md - GitHub Pages:https://doocs.github.io/md 注:推荐使用 Chrome 浏览器,效果最佳。另外,对于国内(中国)的朋友,访问 [Gitee Pages](https://doocs.gitee.io/md) 速度会相对快一些。 ## 为何二次开发 现有的开源微信 Markdown 编辑器,样式繁杂,也不符合我个人的审美需求。在我使用它们进行文章排版的时候,经常还要自己做一些改动,费时费力,因此动手做了二次开发。 欢迎各位朋友随时提交 PR,让这款微信 Markdown 编辑器变得更好!如果你有新的想法,也欢迎在 [Discussions 讨论区](https://github.com/doocs/md/discussions)反馈。 ## 功能特性 - [x] 支持自定义 CSS 样式 - [x] 支持 Markdown 所有基础语法 - [x] 支持浅色、暗黑两种主题模式 - [x] 支持 Ctrl + F 快速格式化文档 - [x] 支持色盘取色,快速替换文章整体色调 - [x] 支持多图上传,可自定义配置图床 - [x] 支持自定义上传逻辑 - [x] 支持在编辑框右键弹出功能选项卡 ## 目前支持哪些图床 | # | 图床 | 使用时是否需要配置 | 备注 | | --- | ----------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | 1 | 默认 | 否 | - | | 2 | [Gitee](https://gitee.com) | 配置 `Repo`、`Token` 参数 | 图片超过 1MB 无法正常展示 | | 3 | [GitHub](https://github.com) | 配置 `Repo`、`Token` 参数 | [如何获取 GitHub token?](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token) | | 4 | [阿里云](https://www.aliyun.com/product/oss) | 配置 `AccessKey ID`、`AccessKey Secret`、`Bucket`、`Region` 参数 | [如何使用阿里云 OSS?](https://help.aliyun.com/document_detail/31883.html) | | 5 | [腾讯云](https://cloud.tencent.com/act/pro/cos) | 配置 `SecretId`、`SecretKey`、`Bucket`、`Region` 参数 | [如何使用腾讯云 COS?](https://cloud.tencent.com/document/product/436/38484) | | 6 | [七牛云](https://www.qiniu.com/products/kodo) | 配置 `AccessKey`、`SecretKey`、`Bucket`、`Domain`、`Region` 参数 | [如何使用七牛云 Kodo?](https://developer.qiniu.com/kodo) | | 7 | 自定义上传 | 是 | [如何自定义上传?](#自定义上传逻辑) | ![select-and-change-color-theme](https://doocs.oss-cn-shenzhen.aliyuncs.com/img//1606034542281-a8c99fa7-c11e-4e43-98da-e36012f54dc8.gif) ![copy-and-paste](https://doocs.oss-cn-shenzhen.aliyuncs.com/img//1606034542372-59707c83-2caf-4a96-9bb6-c4effaecf731.gif) ![custom](https://doocs.oss-cn-shenzhen.aliyuncs.com/img//1606034542180-4d1c48b1-75f6-4794-95f7-e3b877c2b6a2.gif) ![doocs-md-upload-image](https://doocs.oss-cn-shenzhen.aliyuncs.com/img//1606034542512-0769a336-b9eb-4d58-83c1-29db7b54f71b.gif) ## 注意事项 如果你使用了某些浏览器脚本修改了网页背景色,可能导致渲染后的文章出现背景色分块的现象,详见 [#63](https://github.com/doocs/md/issues/63)。 ## 自定义上传逻辑 在工具上没有提供预定义图床的情况下,你只需要自定义上传逻辑即可,这对于例如你不方便使用公共图床,而是使用自己的上传服务时非常有用。 你只需要在给定的函数中更改上传代码即可,为了方便,这个函数提供了可能使用的一些参数: 示例代码: ```js const { file, util, okCb, errCb } = CUSTOM_ARG; const param = new FormData(); param.append("file", file); util.axios .post("http://127.0.0.1:9000/upload", param, { headers: { "Content-Type": "multipart/form-data" }, }) .then((res) => { okCb(res.url); }) .catch((err) => { errCb(err); }); // 提供的可用参数: // CUSTOM_ARG = { // content, // 待上传图片的 base64 // file, // 待上传图片的 file 对象 // util: { // axios, // axios 实例 // CryptoJS, // 加密库 // OSS, // ali-oss // COS, // cos-js-sdk-v5 // Buffer, // buffer-from // uuidv4, // uuid // qiniu, // qiniu-js // tokenTools, // 一些编码转换函数 // getDir, // 获取 年/月/日 形式的目录 // getDateFilename, // 根据文件名获取它以 时间戳+uuid 的形式 // }, // okCb: resolve, // 重要!上传成功后给此回调传 url 即可 // errCb: reject, // 上传失败调用的函数 // } ``` 如果你创建了适用于其他第三方图床的上传代码,我们非常欢迎你分享它。 ## 如何开发和部署 ```sh # 安装依赖 npm i # 启动开发模式 npm start # 部署在 /md 目录 npm run build # 访问 http://127.0.0.1:9000/md # 部署在根目录 npm run build:h5-netlify # 访问 http://127.0.0.1:9000/ ``` ## 快速搭建私有服务 通过我们的 npm cli 你可以轻易搭建属于自己的微信 Markdown 编辑器。 ```sh # 安装 npm i -g @doocs/md-cli # 启动 md-cli # 访问 open http://127.0.0.1:8800/md/ # 启动并指定端口 md-cli port=8899 # 访问 open http://127.0.0.1:8899/md/ ``` md-cli 支持以下命令行参数: - `port` 指定端口号,默认 8800,如果被占用会随机使用一个新端口。 - `spaceId` dcloud 服务空间配置 - `clientSecret` dcloud 服务空间配置 ## 谁在使用

Doocs开源社区

掘墓人的小铲子

全网重点

爱码士的内心独白

乐玩nodejs npm工具库

简静慢

0加1

编程图解

码云Gitee

好酸一柠檬

不知所云Hub

会泽百家

平凡而诗意

治恒说说

柯宁申的叙事屋

我的 Beta 世界

ApachePulsar

生化环材

秀宇笔记

IT王小二

小二来碗饭

青年技术宅

路引科研

凯文有事找你

软件部落库

网文小密圈
注:如果你使用了本 Markdown 编辑器进行文章排版,并且希望在本项目 README 中展示你的公众号,请到 [#5](https://github.com/doocs/md/discussions/5) 留言。