Deno 完整性檢查與鎖定文件

2020-06-24 17:05 更新

介紹

假設(shè)您的模塊依賴于遠(yuǎn)程模塊 https://some.url/a.ts。當(dāng)?shù)谝淮尉幾g您的模塊時(shí),a.ts 被下載、編譯、緩存。它將保持這樣,直到您在一個(gè)新的機(jī)器上運(yùn)行您的模塊(生產(chǎn)環(huán)境?)或是重新加載緩存(例如通過 deno cache --reload)。但當(dāng) https://some.url/a.ts 的內(nèi)容變化時(shí)會(huì)發(fā)生什么?這將導(dǎo)致您的生產(chǎn)模塊使用了和本地模塊不同的依賴。Deno 的解決方法是使用完整性檢查與鎖定文件。

緩存與鎖定文件

Deno 可以使用一個(gè)較小的 JSON 文件存儲(chǔ)和檢查模塊的子資源完整性。 使用 --lock=lock.json 啟用和指定鎖文件檢查。 要更新或創(chuàng)建鎖,可以使用 --lock=lock.json --lock-write。--lock=lock.json 告訴 Deno 要使用哪個(gè)鎖文件,--lock-write 用來向鎖文件輸出依賴的哈希值。 (--lock-write 必須和 --lock 一起使用) 一個(gè)鎖文件可能看起來像這樣,針對(duì)依賴項(xiàng)存儲(chǔ)文件的哈希值: { "https://deno.land/std@v0.50.0/textproto/mod.ts": "3118d7a42c03c242c5a49c2ad91c8396110e14acca1324e7aaefd31a999b71a4", "https://deno.land/std@v0.50.0/io/util.ts": "ae133d310a0fdcf298cea7bc09a599c49acb616d34e148e263bcb02976f80dee", "https://deno.land/std@v0.50.0/async/delay.ts": "35957d585a6e3dd87706858fb1d6b551cb278271b03f52c5a2cb70e65e00c26a", ... }

運(yùn)行時(shí)驗(yàn)證

像上面的緩存一樣,您也可以在使用 deno run 子命令時(shí)配合--lock=lock.json 選項(xiàng),從而在運(yùn)行期間驗(yàn)證所有被鎖定的模塊的完整性。請(qǐng)記住,這只會(huì)針對(duì)先前添加到 lock.json 文件中的依賴項(xiàng)進(jìn)行驗(yàn)證。新的依賴項(xiàng)將被緩存,但不會(huì)被檢驗(yàn)。 您也可以通過使用 --cached-only 選項(xiàng)來要求遠(yuǎn)程依賴都已經(jīng)被緩存。 deno run --lock=lock.json --cached-only mod.ts 如果依賴樹中有尚未緩存的 mod.ts 依賴項(xiàng),此操作將失敗。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)