內建模組 - path 與 os#
path 和 os 是 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. 實際應用範例#
結合 path 和 os 取得家目錄下的設定檔路徑:
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#