當前位置: 妍妍網 > 碼農

Node 之父新作:一個全新的 NPM 下載源工具!

2024-05-25碼農

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心~

在前端開發中,使用第三方 npm 模組可以顯著提高我們的工作效率。我們既可以建立並分享自己的模組到 npm 倉庫,供其他開發者使用,也可以從倉庫中獲取他人的模組以加快開發行程。

然而,在中國大陸,由於特定的網路限制,從 npm 倉庫下載模組經常異常緩慢,甚至直接失敗。一個常見的解決方法是切換到如淘寶或騰訊等映像源。

在離開 Node 官方團隊後,「Node 之父」開發了一個新的 JavaScript 執行時環境 Deno,該環境在多個方面對 Node 進行了改進。最近,針對 npm 倉庫中的長期問題,他提出了一個名為 JSR(JS 下載源)的全新方案。

「這不是另一個 npm 包管理器!」「Node 之父」這樣強調。讓我們透過查閱「Node 之父」在 Deno 官方部落格上的文章,了解一下這個與 npm 倉庫競爭的新計畫 JSR。

在最近幾年,新的包管理器如yarn和pnpm已經增強了npm包的下載體驗。然而,作為JavaScript生態系基石的npm註冊源本身的發展幾乎處於停滯狀態,其最近一次顯著更新是幾年前引入的「files」標簽。盡管JavaScript語言發展迅速,其分發模式卻顯得相對落後。

在我建立Node的時代,JavaScript尚無統一的模組系統,導致npm註冊源及Node預設采用require語法和CJS模組,這一模組系統無法在瀏覽器中使用,具有根本性缺陷。大約在2015年,JavaScript采納了ES模組和import語法。盡管如今大多數JavaScript程式碼都采用ES模組,其分發路徑仍然復雜,特別是在涉及到TypeScript時。

為解決這些問題,JSR應運而生,它不僅僅是另一個npm包管理器,而是一種旨在改變JavaScript和TypeScript程式碼在伺服器、瀏覽器和各種工具間共享方式的革命性下載源。JSR透過簡化開發者長期面臨的復雜性,從根本上改善了程式碼的分發方式。它專註於ES模組,並優先支持TypeScript,消除了繁瑣的package.json配置和tsconfig編譯選項的困擾。

JSR還透過包評分系統鼓勵最佳實踐,類似於Dart社群在pub.dev中的做法,為包含詳盡JSDoc文件的每個匯出符號的包提供更高的評分。與Go和Rust等其他現代編程生態系一樣,JSR提供開箱即用的自動化文件生成功能。

JSR本質上是一個新的registry,不僅僅是npm的另一個客戶端。它不要求開發者放棄現有的npm內容或完全切換到一個全新的JS模組生態,而是旨在補充現有的npm註冊源。它允許依賴npm包,專為TypeScript最佳化,並且只支持ES模組。適用於Deno和基於npm的計畫如Node、Bun等,且完全開源免費。

你可以像這樣安裝軟體包:

# 基於 npm:
npx jsr add xxx
# 基於 deno:
deno add xxx

JSR包能夠整合到依賴npm的現有軟體系統中,因為JSR自身作為一個npm下載源分發與npm相容的tarball檔。這使得JSR包能夠被包括在任何使用npm、yarn或pnpm的計畫中,並且可以與私有下載源無縫整合。這種方式的npm tarball分發被認為是非常優秀的。

在Deno環境中,我們特別重視安全性,把它作為JavaScript開發的首要考量。雖然沒有下載源能夠完全監控所有釋出的程式碼,但JSR透過提高釋出者的透明度和確保釋出過程的安全性,提供了一種更為安全的方法。

JSR還透過整合OIDC令牌和GitHub Actions,利用供應鏈安全技術來建立高級的、可驗證的程式碼來源證明,並將其保存在Sigstore中。這樣不僅保證了程式碼的真實性,也加強了對開發者責任的信任和確立。

JavaScript作為廣泛使用的程式語言,其普遍性和易用性為其贏得了大量的使用者。一個中心化的社群對於JavaScript是必要的,開發者可以在這裏共享他們的成果,而不會感到過於復雜。

我們堅信,JavaScript將繼續在軟體開發領域保持其核心地位,而JSR的設計正是為了支持這種持久的相關性。盡管JSR不是一個傳統的包管理器,它提供了一種新的方法來管理和保護程式碼,致力於成為一個穩定且具有前瞻性的平台,旨在加強和保護JavaScript開發。

因此,JSR不僅僅是生態系中的另一個工具,更是一種徹底改變我們如何分發JavaScript和TypeScript程式碼的根本性變革。

結語

我是林三心

  • 一個待過 小型toG型外包公司、大型外包公司、小公司、潛力型創業公司、大公司 的作死型前端選手;

  • 一個偏前端的全幹工程師;

  • 一個不正經的金塊作者;

  • 逗比的B站up主;

  • 不帥的小紅書博主;

  • 喜歡打鐵的籃球菜鳥;

  • 喜歡歷史的乏味少年;

  • 喜歡rap的五音不全弱雞如果你想一起學習前端,一起摸魚,一起研究簡歷最佳化,一起研究面試進步,一起交流歷史音樂籃球rap,可以來俺的摸魚學習群哈哈,點這個,有7000多名前端小夥伴在等著一起學習哦 -->