源頭
最近切換了很多次做筆記的位置。大致可以分為三類:
- macos 備忘
- 印象筆記
- bear、UIysses
- vscode
各有優缺點,用過的都知道。最終我想基於 vscode + git 來作為日記本。vscode 提供的 markdown 的編寫體驗和介面都無可挑剔,缺陷也很明顯:不可以像其他日記本一樣同步。所以在日常的碼字型驗中,經常就是公司電腦編輯的,忘了 push,回去用自己電腦開啟,寫的東西都不在。
為了解決上面的痛點,因此有了現在這個 auto-diary 外掛。
這款外掛目前支援直接在 vscode 外掛市場搜尋安裝
這款外掛主要解決的就是上面所說的同步問題。主要會做下面的事情:
- 檢測專案 workspace 根路徑是否有 .auto-diary.json 配置檔案
- 如果有配置檔案,則會在第一次進入 workspace 的時候更新遠端的程式碼倉庫
- 編寫文件的過程中,如果有檔案儲存,會自動做一次提交,然後推送到遠端倉庫
目前外掛還有較多限制,我能想到的有以下幾點:
- 面向懂 git 的程式設計師
- 不支援同時編輯(涉及到衝突問題),但是多機器沒啥毛病
- 應該沒有了吧,有待發現(提交反饋地址:issues)
外掛編寫過程記錄
環境準備與開發除錯方式
全域性安裝需要用的工具
yarn global add yo generator-code vsce
複製程式碼
安裝好之後使用 yo 生成模板工程
yo code
複製程式碼
根據提示選擇(將官網推薦的選擇項扣下來,供參考):
# ? What type of extension do you want to create? New Extension (TypeScript)
# ? What's the name of your extension? HelloWorld
### Press <Enter> to choose default for all options below ###
# ? What's the identifier of your extension? helloworld
# ? What's the description of your extension? LEAVE BLANK
# ? Enable stricter TypeScript checking in 'tsconfig.json'? Yes
# ? Setup linting using 'tslint'? Yes
# ? Initialize a git repository? Yes
# ? Which package manager to use? npm
複製程式碼
其中有一點不一樣,我選擇使用 yarn 作為包管理器,這個根據個人喜好就行。
現在基本上模板已經建好了,進入工作目錄:
cd ./helloworld
複製程式碼
由於在建立模板工程的時候,依賴已經下載好了。
開啟入口檔案 extension.ts ,裡面會有很多詳細的註釋,這裡需要注意一下:
- 如果 vscode 飄紅,那麼有可能是 vscode.d.ts 沒有正確下載,那麼刪除 node_modules 之後重新下載依賴試一下
- nodejs 生態的工具包,親測是可以直接用的,像比較有名氣的 shell.js 直接開箱即用
- 官方 api 地址可以好好看一下,vscode 這個包暴露了全部可以使用的介面。
接下來就是按照自己的需求編寫程式碼了。
關於除錯的部分,有個地方需要注意。預設的模板專案裡面,外掛的啟用方式是需要在命令皮膚輸入 hello world 指令。所以除錯的時候需要每次 reload window 之後再輸一個命令才能啟用外掛。這裡可以改變一下外掛的啟用方式。下圖是支援的啟用方式列表:
我使用的是圈出的部分,表示工作目錄包含特定檔案就會啟用外掛,這和目錄中的配置檔案剛好是吻合的。
好了,正式除錯開始。首先開啟 vscode 除錯皮膚。選中第一個,點啟動。(這裡預設已經熟練使用 vscode 除錯功能~~)
然後會彈出一個除錯用的編輯器介面(可以理解為這個編輯器中已經加入了現在正在編寫的外掛,其他地方和普通編輯器一樣)就可以除錯功能了,如果程式碼有更新,則只需要 reload 除錯用的編輯器就可以了。
釋出外掛
首先,需要在微軟自己的azure devops網站註冊賬號。考慮到這個過程我也弄了很久,我打算把步驟寫清楚:
- 點選上面的連結,找到註冊或者登陸的按鈕(微軟賬號可以直接用)
- 登陸進入之後會提示增加一個組織
- 看到管理皮膚之後點選個人資訊裡面的 Security
- 建立一個 Personal Access Token(一定需要給足相應的許可權,官方教程中會有一個醒目的截圖的)
- 複製建立出來的 token 儲存好,指不定下次還會用上,但是你下次是看不到這個 token 的。
得到 token 之後繼續本地操作。
建立一個釋出者(這裡就要用到上面得到的token 了)
vsce create-publisher <publisher-name>
複製程式碼
打包外掛(打一個可以本地化安裝的 package 釋出操作不依賴這一步)
vsce package
複製程式碼
釋出外掛
vsce publish
複製程式碼
看到成功的提示之後,就表示完成了,然後再去官方外掛市場看一下吧。
後續可能需要完善的東西,文件、外掛logo等等。