[node] Path Module
const path = require('path');
path.resolve(); // 取得當前資料夾的絕對路徑
path.resolve(__dirname, 'folderName');
path.resolve 和 path.join 的差別
keywords: path.resolve
, path.join
/**
* join 是單純把指定的路徑連結在一起
* resolve 會把最後一個帶有 '/' 的路徑當作根目錄,類似 "cd" 的效果
**/
const join = path.join(__dirname, '/a', '/b', 'c'); // directory_path/src/a/b/c
const resolve = path.resolve(__dirname, '/a', '/b', 'c'); // /b/c
path.basename 取的檔案名稱
keywords: path.basename
, path.extname
, path.parse
const filePath = '/foo/bar/baz/asdf/quux.html';
// 取得檔案和副檔名
path.basename(filePath); // quux.html
// 只要檔案名稱不要附檔名
const extension = path.extname(filePath);
const name = path.basename(filePath, extension); // quux
// 取得詳細的檔案路徑、名稱、副檔名
path.parse(filePath);
// {
// root: '/',
// dir: '/foo/bar/baz/asdf',
// base: 'quux.html',
// ext: '.html',
// name: 'quux'
// }
其他
取得檔案路徑
keywords: __dirname
, __filename
, process.cwd()
, ./
__dirname
:獲得當前被執行檔案所在的資料夾路徑__filename
:獲得當前被執行檔案所在的檔案路徑process.cwd()
:獲得當前執行 node 指令時候的檔案夾目錄名./
: 不使用 require 時候,./
與process.cwd()
一樣,使用 require 時候,與__dirname
一樣
舉例來說,當我在 $HOME/Projects
資料夾中執行 node ./scripts/foo.js
時,分別會得到:
__dirname: /Users/pjchen/Projects/scripts # 被執行檔案所在的資料夾路經
__filename: /Users/pjchen/Projects/scripts/foo.js # 被執行檔案所在的檔案路徑
process.cwd(): /Users/pjchen/Projects # 在 Terminal 中執行 node 指令的路徑
foo.js
中的內容:
// ./Projects/scripts/foo.js
console.log('__dirname', __dirname);
console.log('__filename', __filename);
console.log('process.cwd()', process.cwd());
[What's the difference between process.cwd() vs __dirname?] @ StackOverflow