天天看點

Typora + GitHub = 效率

Typora 是一款簡單、高效而且優雅的 Markdown 編輯器,它提供了一種所見即所得的全新的 Markdown 寫作體驗。它把源碼編輯和效果預覽兩者合二為一,在輸入 Markdown 代碼的時候即時生成預覽效果。Typora 的一切都圍繞純粹的生産效率而設計。

Typora一直是老逛最喜歡的 markdown 編輯器,寫部落格、記筆記的首選軟體。相信大部分朋友也在使用 Typora 這款軟體。

但是 Typora 之前是不支援圖床功能的,隻能通過第三方插件實作圖檔自動上傳的功能。不過最近 Typora 有了更新,終于支援圖床功能了,接下來我會分别介紹借助插件上傳圖檔和 Typora 自身的圖床功能。老逛親身體驗,Typora 軟體自帶的圖檔上傳功能很慢,不如自己寫的插件好用。

1. 借助插件實作自動上傳

之前老逛也是使用第三方插件進行圖檔的上傳,該插件安裝後的使用效果如下:

Typora + GitHub = 效率

把圖檔拖進 md 編輯器,圖檔會自動上傳到圖床,上傳成功圖檔頂部會出現綠色背景的白字進行提醒。該插件支援、GitHub、七牛雲、阿裡雲、碼雲等。

該插件是 Thobian 同學開源的插件,僅支援 Windows 系統。

2. 插件安裝

安裝環境

Typora 版本:0.9.68 (Windows x86)

下載下傳位址:https://typora.io/windows/typora-update-ia32-0320.exe

Typora安裝目錄:D:\Program Files\Typora ,或者安裝在其他目錄

安裝步驟

1. 下載下傳插件代碼,公衆号「逛逛GitHub 」背景回複「md插件」下載下傳

2. 複制插件相關代碼檔案:window.html、plugins

3. 将複制的插件代碼檔案,粘貼到 Typora 安裝目錄下的 resources\app 檔案夾下

4. 安裝完成,重新開機 Typora

插件配置

接下來可以配置将圖檔上傳到哪個圖床,打開 plugins/image/upload.js 檔案,拉到最下面 将最後一行的 $.image.init(); 按照下面的說明進行配置:

上傳到Github - 推薦

免費且無需自己搭建伺服器,是一種不錯的方式,配置中需要填寫token,添加 token 可登陸 GitHub後通路此連結:https://github.com/settings/tokens

僅給 typora 使用的 token 授予最小的權限(repo.public_repo) 即可。

//注冊token的盡量不要跟其他應用共用,同時授予最小權限
//免費+無需自己搭建伺服器,是一種不錯的方式
$.image.init({
    target:'github',
    quality:1, //圖檔壓縮開關,1表示原圖上傳 取值為:0<quality<=1,如果要壓縮推薦 0.7
    github:{
        Token : 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 添加一個僅給typora使用的token 授予最小的權限(repo.public_repo) ,添加token:https://github.com/settings/tokens
        CommitterName : 'nickname', // 送出人昵稱,寫你github的昵稱
        CommitterEmail : '[email protected]', // 送出人郵箱,寫你github的郵箱
        Repository : 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // github項目名,比如你的項目位址是:https://github.com/Thobian/typora-plugins-win-img 那就是後面的“Thobian/typora-plugins-win-img”
        Filepath : 'typora', // 圖檔在項目中的儲存目錄,可以不用提前建立目錄,github送出時發現沒有會自動建立
        // 【注意:開啟CDN後會将原github的檔案位址換成 jsDelivr 的位址,如出現鏡像出現國内無法通路,或者不再繼續營運你的圖檔也将不能通路到,請謹慎開啟該功能】
        jsDelivrCND : false, // 是否開啟GitHub圖檔走鏡像,國内有時候通路不太友善,如要打開設定為:true
    }
});           

上傳到自建伺服器

将圖檔上傳位址換成你自己的後端接口,由于調用時不帶登入态,請注意接口安全别被壞人利用。

為了防止壞人利用你伺服器接口,插件支援設定請求頭,可一定程度避免被利用

接口協定:

  • 請求方式:POST
  • 請求參數:data:image/png;base64,xxxxxx (圖檔原轉換成base64後的值)
  • 成功響應:{‘code’:0, ‘message’:‘成功’, ‘data’:{‘url’=>‘imageURL’}}
  • 失敗響應:{‘code’:x, ‘message’:‘錯誤原因’, ‘data’:null} 失敗時,code必須未非0

後端接口代碼可以參考代碼檔案:

upload.php

$.image.init({
    target:'self',
    self:{
        //預設上傳位址 https://jiebianjia.com/typora-plugins/upload.html
        url:"https://you-server/the-image-upload-path",
        headers:{
            //預設: token:B40289FC92ED660F433BF0DB01577FDE
            token:"value"  //自己定義好,并在接口裡面檢查避免壞人利用你接口
        }
    }
});           

上傳到騰訊雲OSS

//為了你騰訊雲的安全,強烈建議你為這個操作添加一個單獨的子賬号,并隻開啟API通路權限
//添加子賬号:https://console.cloud.tencent.com/cam
//更多關于騰訊雲子賬号(CAM)說明:https://cloud.tencent.com/document/product/598/13665
$.image.init({
    target:'tencent',
    tencent : {
        Bucket: 'bucket-name', // 對象存儲->存儲桶清單(存儲桶名稱就是Bucket)
        SecretId: 'SecretId', // 通路控制->使用者->使用者清單->使用者詳情->API密鑰 下檢視
        SecretKey: 'SecretKey', // 通路控制->使用者->使用者清單->使用者詳情->API密鑰 下檢視
        Region: 'Region', // 對象存儲->存儲桶清單(所屬地域中的英文就是Region)
        folder: 'typora', // 可以把上傳的圖檔都放到這個指定的檔案夾下
    },
});           

上傳到阿裡雲OSS

//為了你阿裡雲賬号的安全,強烈建議你為這個操作添加一個單獨的子賬号,并隻開啟API通路權限
//添加子賬号:https://ram.console.aliyun.com/users
//給子賬号授權:https://ram.console.aliyun.com/permissions
//更多關于阿裡雲子賬号(RAM)說明:https://help.aliyun.com/product/28625.html
//SecretId 就是阿裡雲的:AccessKey ID
//SecretKey 就是阿裡雲的:AccessKey Secret,這個值隻能在你建立 AccessKey 時看到,是以要保管好,否則隻能重新生成
$.image.init({
    target:'aliyun',
    aliyun : {
        // 個人覺得阿裡雲的這個 AccessKey 沒有騰訊雲的好用
        SecretId: 'xxxx', // 需要先建立 RAM 使用者,同時通路方式選擇“程式設計通路”
        SecretKey: 'xxxx', // 最好是子賬号的key,僅授予oss讀寫權限(不包括删除)
        Folder: 'typora', // 可以把上傳的圖檔都放到這個指定的檔案夾下
        BucketDomain : 'http://xxx.com/', // 存儲空間下有個:Bucket 域名 挑一個就好了
    }
});           

上傳到七牛雲

//“密鑰管理”頁面位址:https://portal.qiniu.com/user/key
$.image.init({
    target:'qiniu',
    qiniu: {
        UploadDomain: 'https://xxx.com', // 上傳位址,需要根據你存儲空間所在位置選擇對應“用戶端上傳”位址 詳細說明:https://developer.qiniu.com/kodo/manual/1671/region-endpoint
        AccessDomain: 'http://xxx.com/', // 上傳後預設隻會傳回相對通路路徑,需要設定好存儲空間的通路位址。進入“檔案管理”下面可以看到個“外鍊域名”就是你的位址了,複制過來替換掉 xxx 就可以了。
        AccessKey : 'xxxx', // AK通過“密鑰管理”頁面可以擷取到
        SecretKey: 'xxxx', // SK通過“密鑰管理”頁面可以擷取到
        Folder: 'typora', // 可以把上傳的圖檔都放到這個指定的檔案夾下
            
        policyText: {
            scope: "xxx", // 對象存儲->空間名稱,通路控制記得設定成公開
            deadline: 225093916800, // 寫死了:9102-12-12日,動态的好像偶爾會簽名要不過
        },
    }
});           

上傳到碼雲

// !!!注意當圖檔大于1M時, gitee 必須登入後才能檢視!!!
$.image.init({
    target:'gitee',
    gitee: {
            message: "From:https://github.com/Thobian", // 必須參數,送出消息(預設為:add image)
            branch: "master", // 要送出到的分支(預設為:master)
            token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 碼雲token申請位址 https://gitee.com/profile/personal_access_tokens
            userName: 'userName', // 使用者名 比如你的gitee個人首頁位址是:https://gitee.com/thobian ,那userName就是:thobian
            repositorie: 'repositorie', // 倉庫名 比如你的gitee圖檔倉庫位址是:https://gitee.com/thobian/typora,那麼repositorie就是 typora
            Folder: 'image', // 可以把上傳的圖檔都放到這個指定的檔案夾下
            BucketDomain: 'https://gitee.com/api/v5/repos/',// 這個是不用變的,直接copy就好
    }
});           

如果在設定插件時遇到任何問題可以取 issue 中尋找解決方案:

https://github.com/Thobian/typora-plugins-win-img/issues

3. Typora 自動上傳功能

雖然插件支援多種圖庫,但僅僅支援 Windows 系統。不過 Typora 已經支援圖檔上傳功能了,在配置之前,要確定軟體的版本更新到最新,老版本是不支援圖檔上傳功能,配置中沒有上傳圖檔該選項:

Typora + GitHub = 效率

更新軟體

下載下傳最新的軟體 https://www.typora.io/#windows,本文中阿改使用的版本是 0.9.86,更新後打開 檔案 -> 偏好設定 -> 圖檔插入 ,就會發現有圖檔上傳這個選項了,如下圖所示,選擇我勾選的配置。

Typora + GitHub = 效率

緊接着點選上圖中的「下載下傳或更新」按鈕,下載下傳 PicGo-Core 核心支援。下載下傳完畢後進行配置。

配置 Token

選擇 sm.ms 作為圖床,官網位址:https://sm.ms

特點:永久存儲免注冊,圖檔連結支援https,可以删除上傳的圖檔,提供多種圖檔連結格式,建立于2015年,目前免費使用者無法使用香港節點是以速度比較慢

圖檔上傳限制:每個圖檔最大5M,每次最多上傳10張

1. 注冊或登陸 sm.ms

https://sm.ms/login

2. 生成 token

https://sm.ms/home/apitoken3.
3. 配置 token
           

在 Typora 配置中,圖像 -> 打開配置檔案,将下面代碼 copy 進去,然後 token 改成自己的就可以了。

Typora + GitHub = 效率

注意修改後重新開機軟體:

{
  "picBed": {
    "uploader": "smms", 傳圖床為 SM.MS,
    "smms": {
      "token": "xxxxxxxxxxxxxxxxxxxxx" //這裡面的token換成剛剛生成的 sm.ms 的token
    }
  },
  "picgoPlugins": {}
}           

效果預覽

推薦閱讀 1. 一款基于 Spring Boot 開發 OA 開源産品2. 面試官:Mybatis裡的設計模式有哪些?3. 牛逼!Docker從入門到上瘾4. 連夜撸了一個簡易聊天室5. 推薦一款 Java 對象映射神器