內建模組 - path 與 os#

pathos 是 Node.js 兩個常用的內建模組,分別用於處理檔案路徑和取得作業系統資訊,無需安裝即可使用。


1. path 模組#

path 模組提供跨平台的路徑處理工具,能正確處理 Windows(\)與 Unix/macOS(/)的路徑差異。

1
const path = require("path");

path.join()#

拼接多個路徑片段,自動使用正確的分隔符號:

1
2
const fullPath = path.join("/users", "alice", "documents", "file.txt");
console.log(fullPath); // /users/alice/documents/file.txt(Unix)

path.resolve()#

將相對路徑解析成絕對路徑:

1
2
const absPath = path.resolve("src", "index.js");
console.log(absPath); // /目前工作目錄/src/index.js

path.dirname()#

取得路徑中的目錄部分:

1
console.log(path.dirname("/users/alice/file.txt")); // /users/alice

path.basename()#

取得路徑中的檔案名稱:

1
2
console.log(path.basename("/users/alice/file.txt"));       // file.txt
console.log(path.basename("/users/alice/file.txt", ".txt")); // file

path.extname()#

取得副檔名:

1
2
console.log(path.extname("index.html")); // .html
console.log(path.extname("archive.tar.gz")); // .gz

path.parse()#

將路徑解析成物件:

1
2
3
4
5
6
7
8
9
const parsed = path.parse("/users/alice/file.txt");
console.log(parsed);
// {
//   root: '/',
//   dir: '/users/alice',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file'
// }

__dirname 與 __filename#

在 CommonJS 模組中,可直接使用這兩個全域變數:

1
2
3
4
5
console.log(__dirname);  // 目前檔案所在的目錄絕對路徑
console.log(__filename); // 目前檔案的絕對路徑

// 常見用法:取得相對於目前檔案的路徑
const configPath = path.join(__dirname, "config.json");

2. os 模組#

os 模組提供作業系統相關的資訊與工具。

1
const os = require("os");

常用屬性與方法#

1
2
3
4
5
6
console.log(os.platform());    // 作業系統平台:'win32', 'linux', 'darwin'
console.log(os.arch());        // CPU 架構:'x64', 'arm64'
console.log(os.hostname());    // 主機名稱
console.log(os.homedir());     // 使用者家目錄:'/home/alice' 或 'C:\Users\alice'
console.log(os.tmpdir());      // 暫存目錄路徑
console.log(os.type());        // 作業系統類型:'Windows_NT', 'Linux', 'Darwin'

記憶體資訊#

1
2
3
4
5
const totalMem = os.totalmem();
const freeMem = os.freemem();

console.log(`總記憶體:${(totalMem / 1024 / 1024 / 1024).toFixed(2)} GB`);
console.log(`可用記憶體:${(freeMem / 1024 / 1024 / 1024).toFixed(2)} GB`);

CPU 資訊#

1
2
3
const cpus = os.cpus();
console.log(`CPU 核心數:${cpus.length}`);
console.log(`CPU 型號:${cpus[0].model}`);

換行符號#

不同作業系統的換行符號不同,os.EOL 提供當前系統的換行符:

1
2
const line = "第一行" + os.EOL + "第二行";
console.log(line);

3. 實際應用範例#

結合 pathos 取得家目錄下的設定檔路徑:

1
2
3
4
5
6
7
const path = require("path");
const os = require("os");

const configPath = path.join(os.homedir(), ".myapp", "config.json");
console.log(configPath);
// Windows: C:\Users\alice\.myapp\config.json
// macOS/Linux: /home/alice/.myapp/config.json

Reference#