偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Go1.25 新特性:Modules 將支持忽略機(jī)制!

開發(fā) 前端
Go 的模塊依賴管理(Go modules),雖然已經(jīng)推出了許多年。但一直存在著許多問題點(diǎn)和可以提高的空間。今天給大家?guī)矸窒淼氖?Go1.25 中將會對此做的一個(gè)較為實(shí)用的功能特性說明。

大家好,我是煎魚。

Go 的模塊依賴管理(Go modules),雖然已經(jīng)推出了許多年。但一直存在著許多問題點(diǎn)和可以提高的空間。

今天給大家?guī)矸窒淼氖?Go1.25 中將會對此做的一個(gè)較為實(shí)用的功能特性說明。

問題背景

在多語言的項(xiàng)目中,使用 Go modules 或相關(guān)工具鏈(例如:gopls)時(shí)會有一些令人頭疼的問題點(diǎn)。

如下問題點(diǎn):

  • 在大型的多語言項(xiàng)目中(如:包含 node_modules、Bazel 構(gòu)建輸出等目錄),使用命令如 go list ./...go testgo vet 時(shí),Go 工具鏈會遍歷所有目錄,即使很多目錄與 Go 無關(guān),導(dǎo)致執(zhí)行緩慢。
  • gopls 在這些項(xiàng)目中索引無關(guān)目錄,造成 CPU 和內(nèi)存高耗,影響 IDE 性能。
  • 如果被忽略的目錄中帶有示例 .go 文件,go mod tidy 會意外將它們納入模塊依賴,破壞模塊一致性。

在大型的多語言項(xiàng)目中都稍顯劣勢。因?yàn)橐坏┏霈F(xiàn)類似的場景,gopls 通常會占用 VSCode 中的大量 CPU 資源。同時(shí)我的印象中 GoLand 建立索引就比較費(fèi)時(shí)間。

社區(qū)自救

另辟蹊徑

Go 社區(qū)中的組件,例如:goimports 已有各種臨時(shí)方案。

例如:在目錄中放空 go.mod,使用工具特定 ignore 設(shè)置,如 gopls.directoryFilters 或 .goimportsignore)。

但這些方法不統(tǒng)一且不易共享管理,且會造成 Go 模塊依賴管理的生態(tài)碎片化,是不太好的。

借助標(biāo)準(zhǔn)(都被拒絕)

Go 社區(qū)在 issues 中其實(shí)討論過多種方案。畢竟首先利用現(xiàn)有功能特性,有助于快速解決問題。但很可惜都被拒絕了。

具體如下:

1、使用 go.mod 文件指定要忽略的目錄:

一開始被拒絕了,后面反水了。理由是因?yàn)?nbsp;go.mod 并非像 NodeJS 中的 package.json 那樣通用的配置文件。

2、使用單獨(dú)的 .goignore 文件:

被拒絕。理由是這與 Rob 希望避免新增點(diǎn)文件的意愿相悖,盡管與其他工具(如 .dockerignore、.gitignore.bazelignore 等)保持一致,但仍存在顧慮。擔(dān)心增加新的頂級配置文件違背 Go 社區(qū)傳統(tǒng)。

Go1.25 新特性:在 go.mod 中新增 ignore 指令

在 Go1.25 新特性中,將會正式支持在 go.mod 文件中使用 ignore 指令引用目錄,來忽略某些目錄。

圖片圖片

例子介紹

示例的 go.mod 代碼如下:

ignore (
  ./node_modules
  ./bazel?out
  build_cache
)

支持兩種路徑語法:

  • ./directory_name:模塊根目錄下的特定路徑。例如:ignore ./foo/bar。
  • directory_name(無需使用 ./):模塊內(nèi)部任意位置的匹配目錄名稱及其子目錄。例如:ignore foo。

注意事項(xiàng)

1、版本的要求上,在 go1.25 開始生效,會借助到 go.mod 中的 go 行版本進(jìn)行識別。并會確保滿足 Go 之前的兼容性保障措施。

2、另外在該 ignore 指令中,有些內(nèi)容物需要特別注意:

  • 被忽略的目錄在構(gòu)建和分析過程中被視作以 _ 或 . 開頭的隱藏文件夾:

不會匹配 ./... 等包通配符。

gopls 和其他基于 go list 的工具將跳過掃描這些目錄。

  • 即使忽略目錄中的內(nèi)容仍會被包含進(jìn)模塊壓縮包(zip)中,以避免校驗(yàn)和、代理一致性問題。

總結(jié)

這個(gè)新的提案已經(jīng)確定將在 Go1.25 釋出,官方文檔也已經(jīng)修改。后續(xù)我們將可以在 go.mod 文件中通過 ignore 指令管理不需掃描或構(gòu)建的目錄。

新版本發(fā)布后,將有效幫助到一些大型和多語言項(xiàng)目中的 Go 開發(fā)者。

尤其是正在處理多語言或有大量自動(dòng)生成目錄的 Go 倉庫,值得在 go.mod 中嘗試添加 ignore 指令。有可能有意想不到的性能提高。

責(zé)任編輯:武曉燕 來源: 腦子進(jìn)煎魚
相關(guān)推薦

2025-07-21 11:49:44

GoGit子目錄

2025-04-14 08:49:10

2025-06-16 08:54:01

macOS模式版本

2025-04-29 08:59:37

2025-08-07 09:09:29

2025-08-12 02:00:00

Go優(yōu)化OpenSSL

2025-05-07 08:55:14

GoMap存儲

2025-05-12 08:58:14

GoDWARF5二進(jìn)制

2024-12-23 08:44:49

2023-03-13 00:10:46

Go語言版本

2021-09-05 18:25:30

Go命令倉庫

2024-01-22 00:30:00

Go編程Go 1.22

2025-04-28 05:00:00

2012-11-28 11:01:05

IBMdW

2025-10-28 01:00:00

GoRecordertrace 格式

2025-03-28 01:00:00

Go語言版本

2022-02-11 21:01:18

GoNetip網(wǎng)絡(luò)庫

2024-12-30 11:05:28

泛型Go類型別名

2021-02-02 09:10:12

Go語言二進(jìn)制

2017-12-11 16:32:07

JavaJDK 10語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號