Licence
ISC
Version
1.0.9
Deps
2
Size
67 kB
Vulns
0
Weekly
0
@yarn-tool/get-global-dirs
注意事項
此模組基於 sindresorhus/global-directory 並作為 CommonJS (CJS) 模組使用。
目前版本存在以下限制與已知問題(源自原版或環境差異):
- pnpm YAML 支援缺失:原版模組尚未支援讀取 pnpm 的 YAML 格式配置(如
config.yaml),僅支援rc格式。- pnpm 套件路徑差異:在某些環境下,pnpm 的全局套件路徑可能位於
.../pnpm/store/5/node_modules而非預設的.../pnpm/global/5/node_modules。- 暫無修復計畫:目前暫時不打算針對上述原版即存在的 bug 進行修正。
獲取全局安裝目錄的工具,支援 npm、yarn 和 pnpm。
Get global installation directories for npm, yarn, and pnpm.
功能特色
- 多套件管理器支援: 自動偵測並解析 npm、yarn 和 pnpm 的全局目錄
- 跨平台相容: 支援 Windows、macOS 和 Linux
安裝
yarn add @yarn-tool/get-global-dirs
yarn-tool add @yarn-tool/get-global-dirs
yt add @yarn-tool/get-global-dirs
使用方法
import globalDirectory from '@yarn-tool/get-global-dirs';
// 獲取 npm 全局目錄
console.log(globalDirectory.npm.prefix);
//=> '/usr/local'
console.log(globalDirectory.npm.packages);
//=> '/usr/local/lib/node_modules'
console.log(globalDirectory.npm.binaries);
//=> '/usr/local/bin'
// 獲取 yarn 全局目錄
console.log(globalDirectory.yarn.packages);
//=> '/Users/username/.config/yarn/global/node_modules'
// 獲取 pnpm 全局目錄
console.log(globalDirectory.pnpm.packages);
//=> '/Users/username/Library/pnpm/global/5/node_modules'
API
globalDirectory
返回一個物件,包含三個屬性:
npm: IGlobalDirectoryEntry
prefix: 全局前綴目錄(相當於npm prefix --global)packages: 全局套件目錄(相當於npm root --global)binaries: 全局二進位檔目錄(相當於npm bin --global)
yarn: IGlobalDirectoryEntry
prefix: Yarn 全局資料目錄packages: Yarn 全局套件目錄binaries: Yarn 全局二進位檔目錄
pnpm: IGlobalDirectoryEntry
prefix: pnpm 資料目錄packages: pnpm 全局套件目錄binaries: pnpm 全局二進位檔目錄
設定(Configuration)
本模組沒有自身的設定檔,解析結果完全取決於執行環境中的環境變數(Environment Variables)與各套件管理器的設定檔。 優先順序由高至低如下:
通用
| 來源 | 說明 |
|---|---|
npm_config_* 環境變數 |
例如 npm_config_prefix,大小寫不敏感,連字號 - 會正規化為底線 _;優先度最高 |
~/.npmrc |
使用者層級的 npm 設定檔(prefix 等鍵值) |
PREFIX |
覆寫 npm / yarn 的全局前綴(Global Prefix) |
全域 npmrc |
Windows 為 %APPDATA%/npm/etc/npmrc;Homebrew 安裝則取 $(brew --prefix)/lib/node_modules/npm/npmrc;其餘為 <install dir>/etc/npmrc |
npm prefix --global 推導值 |
以上皆未設定時,由 process.execPath 推導預設前綴 |
npm
- 無任何設定時:Windows 使用
%APPDATA%/npm,其餘平台使用dirname(dirname(process.execPath))(例如/usr/local/bin/node→/usr/local)。
yarn
XDG_DATA_HOME:設定 yarn 資料目錄(Data Directory),於yarn子目錄下解析。- Windows:優先使用
%LOCALAPPDATA%/Yarn/Data,否則退回~/.config/yarn。 - root 使用者:若
process.getuid() === 0且非 fakeroot 環境,家目錄(Home Directory)採用/usr/local/share。 - yarn 的
binaries由PREFIX(Windows 為%LOCALAPPDATA%/Yarn,否則DESTDIR + /usr/local)加上bin組成。
pnpm
PNPM_HOME:pnpm 資料目錄,優先度最高。XDG_DATA_HOME/XDG_CONFIG_HOME:分別對應資料目錄與設定檔位置。global-dir、global-bin-dir:可經由 pnpm 設定檔(rc)或~/.npmrc指定,未設定時退回<pnpm data dir>/global與<pnpm data dir>。- 平台預設值:
- macOS:
~/Library/pnpm - Linux:
~/.local/share/pnpm - Windows:
%LOCALAPPDATA%/pnpm,否則~/.pnpm - 設定檔路徑:macOS 為
~/Library/Preferences/pnpm/rc、Windows 為%LOCALAPPDATA%/pnpm/config/rc、其餘為~/.config/pnpm/rc
- macOS:
已知限制:目前未支援 pnpm 的
config.yaml(YAML 格式)設定檔,僅支援rc格式,詳見文首的注意事項。