什麼時候該引入 Lockfile?

原文撰於 Twitter。 撰文初衷 第一次看到沒有 commit package-lock.json 的 repo TL;DR 事實上這樣在 library 上沒有什麼問題。Lockfile 的追蹤有個小原則: 應用程式建議追蹤 lockfile:不追蹤,下次 npm install 就無法確定具體的依賴版本是什麼。 函式庫可以不用追蹤,因為使用者安裝套件時,套件管理器會根據依賴自動選取最適合的版本,而你自己的 lockfile 會被忽略1。不過建議追蹤,見下文。 函式庫「該不該」追蹤 lockfile? 假如函式庫有用到諸如 ESLint 的工具,追蹤一下可以避免之後設定開發依賴的麻煩, 所以像 NPM 官方就是推薦 無論如何都追蹤 lockfile。 不過也有預設不推薦在 library 情境下追蹤 lock 的例子,比如 Rust 的 Cargo 套件管理器2。不過 Cargo 的開發工具主要都是作為 submodule 安裝在系統中,通常不會跟著 repo 一起追蹤,所以不太適合放在一起比較。 不過要注意:這時候的 lockfile 就不是追給下游應用程式看的,主要是為了自己開發方便。 為什麼「應用程式」就該追蹤 lockfile? package.json 通常不是描述固定的版本,而是一個版本區間:舉個例子:你可能在 package.json 裡面描述 vue: "^2.4.0",但實際上 NPM 幫你選了 2.7.13。這個行為是可以預測的,可以參考 NPM 官方的 Semver 計算機:https://semver.npmjs.com。 ...

October 18, 2022 · pan93412

The comparison of Linter and Formatter

Motivation src: https://twitter.com/bystartw/status/1568217424658583553?s=61&t=UVzhpuQaGcgZkGpySz_yVQ Noticing some developers are confused with “Linter” and “Formatter,” I made a simple figure showing what messages Linter and Formatter prefer to print. Thanks to @nonoesp for his incisive introduction to Linter and Formatter!

September 9, 2022 · pan93412

vChewing 出了 2.4.0 SP2 了!

src: https://twitter.com/bystartw/status/1567200310430662656?s=61&t=UVzhpuQaGcgZkGpySz_yVQ vChewing 出了 2.4.0 SP2 了!🎉 自己覺得 vChewing 是除了官方注音之外,長得最好看(因為有 IMK 加持),而且功能跟選字功能也很棒的輸入法,真的很推薦想嘗試第三方輸入法的朋友試試看!(連結見引文) Figure 1: vChewing 提交很活躍! 資安疑慮 另外關於 vChewing (下稱 vC) 的資安或隱私疑慮: vC 在 2.3.0 之後引入 Apple 官方的沙盒機制,因此只要你沒有授予授權,輸入法本身是看不到你的資料夾的。 雖然我沒有完全閱讀 vC 的 src,但至少它的 Shift 是靠旁敲的方式偵測的,不是記錄所有鍵盤輸入 vC 只有更新和網站相關有連到個人站台 稽核方式 如果有興趣稽核 vChewing 外連的情況,可以自己 clone 回來用 regex 查,或者是直接用這個第三方網站看: sourcegraph ** 如果還是信不過(認為作者會混淆連結)的話,也可以自己掛一個抓包軟體偵測 vC 的所有請求啦…… 雖然我是找不到除了更新以外的請求 code:sourcegraph

September 7, 2022 · pan93412