【HEXO】消失在說明文件裡的scripts資料夾

  1. 1. 先說說hexo-blog-encrypt
  2. 2. 來談談script資料夾這檔事
  3. 3. npm_module的改寫
  4. 4. 小結

說真的,在用HEXO之前其實就有不少文件說到HEXO的說明文件相當的蛋疼,我當時還不相信這件事,直到了我要改寫hexo-blog-encrypt這個套件為止…..

今天就來說說這個消失在說明文件裡的scripts資料夾,以及改寫npm module時的注意事項吧~

先說說hexo-blog-encrypt

為什麼會搞出這件事呢,首先要從hexo-blog-encrypt開始說起…

還記得我的上一篇家有大貓小說到了! 這個文章是有上鎖加密的吧?這就是依賴hexo-blog-encrypt套件所做出來的功能

不過測試套件功能的初期,常常會發生HEXO佈景完全跑掉的問題…加密套件跟佈景會衝突這我也是第一次聽說呀OAO

檢查了一下套件的原始碼後,才發現原來套件自帶一個輸入密碼頁面的CSS檔,而這個CSS檔會在hexo generate時複製到public資料夾內,而檔名剛剛好就叫做style.css …..

所以說是套件把我原有佈景的css檔給洗掉了呀,這還真是意想不到的插曲…

解法也還算簡單,只要把發布階段複製過去的檔名改一下,再把套件對加密文章插入的css引用部分改成相同的檔名就行了

不過呢…我本身是用git做版本控制的,整個專案也會在多台電腦上編輯,而node_modules是被寫進.gitignore

這就逼我做出個選擇來了,是要將整個套件拉出來修改呢?還是要把整個node_module資料夾納入版本控管…摁,我選了前者。


來談談script資料夾這檔事

在HEXO的說明文件中,關於外掛的部分,HEXO寫到一點:

如果您的程式碼很簡單,建議您撰寫腳本,您只需要把 JavaScript 檔案放到 scripts 資料夾,在啟動時就會自動載入一次。

好啦~問題來了,在執行hexo init時應該會產生好所有可能需要用到的資料夾,可是就是沒有看到 scripts 資料夾呀….

沒有產生倒也不打緊,反正我自己建個資料夾就是了,可是問題來了,這到底要放哪裡呢….

官方文件沒寫!真的,我翻遍整本官方文件,就是沒有寫到scripts應該要放哪裡

就當我死心的時候,突然看到github上hexo專案的11a9df提交….

居然還把script資料夾的說明砍掉了!! 我的媽呀,scripts資料夾可不是deprecated的功能耶…如果要砍掉,可不可以請你在別的地方加註scripts資料夾應該放到哪裡去…

npm_module的改寫

其實一般來說,這種套件如果要改的地方是有利於套件發展的,應該是要送pull request給原作者,請他直接修改比較好…一來我不用把套件整個複製出去重寫,二來我還可以繼續享受套件管理的好處

不過我這次時間沒那麼多,雖然我還是會提交pull request,不過短期之內還是會先拉出來重寫一遍的

所以說不要直接在node_modules中改寫,主要還是因為版本控制的方便跟套件管理軟體很有可能會動到那個資料夾的緣故…因此拉出來重新改寫才是比較好的選擇

hexo套件的改寫也沒甚麼太大的難處,把主程式碼的部分移植到scripts資料夾,把其他程式碼移動到另一個自訂的資料夾,修改對應的路徑後,最後把原本套件的dependency寫進package.json裡面,不難吧~

小結

其實說穿了,這篇就只是想抱怨一下HEXO文件的不人道,以及預防下次還有這種事情發生而已…

我是希望不會在有同樣的事情發生…不過誰說得準呢?紀錄一下,以防萬一囉~