Node.js的路徑模組提供了一些有用的功能來處理檔案路徑。

path模組提供了許多非常有用的功能來存取和操作檔案系統。

不需要單獨安裝它。由於它是Node的核心部分,只需透過require進行引用即可:

const path = require('path')

此模組提供了path.sep來提供路徑分隔符號(在Windows上為\,在Linux和macOS上為/),以及path.delimiter提供路徑分隔符(在Windows上為;,在Linux和macOS上為:)。

以下是path的方法:

path.basename()

返回路徑的最後一部分。第二個參數可以過濾掉檔案的副檔名:

require('path').basename('/test/something') //something
require('path').basename('/test/something.txt') //something.txt
require('path').basename('/test/something.txt', '.txt') //something

path.dirname()

返回路徑的目錄部分:

require('path').dirname('/test/something') // /test
require('path').dirname('/test/something/file.txt') // /test/something

path.extname()

返回路徑的副檔名部分:

require('path').extname('/test/something') // ''
require('path').extname('/test/something/file.txt') // '.txt'

path.isAbsolute()

如果是絕對路徑則返回true

require('path').isAbsolute('/test/something') // true
require('path').isAbsolute('./test/something') // false

path.join()

將兩個或多個路徑部分組合起來:

const name = 'flavio'
require('path').join('/', 'users', name, 'notes.txt') //'/users/flavio/notes.txt'

path.normalize()

當路徑包含相對位置符(...)或連續的斜線時,嘗試計算實際的路徑:

require('path').normalize('/users/flavio/..//test.txt') ///users/test.txt

path.parse()

將一個路徑解析為一個包含其組成部分的物件:

  • root:根路徑
  • dir:從根路徑開始的目錄路徑
  • base:檔案名稱+副檔名
  • name:檔案名稱
  • ext:檔案的副檔名

範例:

require('path').parse('/users/test.txt')

結果:

{
  root: '/',
  dir: '/users',
  base: 'test.txt',
  ext: '.txt',
  name: 'test'
}

path.relative()

接受兩個路徑作為參數,返回從第一個路徑到第二個路徑的相對路徑,基於當前工作目錄。

範例:

require('path').relative('/Users/flavio', '/Users/flavio/test.txt') //'test.txt'
require('path').relative('/Users/flavio', '/Users/flavio/something/test.txt') //'something/test.txt'

path.resolve()

可以使用path.resolve()來計算相對路徑的絕對路徑:

path.resolve('flavio.txt') //'/Users/flavio/flavio.txt'(如果從我的家目錄運行)

通過指定第二個參數,resolve將使用第一個參數作為第二個參數的基礎:

path.resolve('tmp', 'flavio.txt')//'/Users/flavio/tmp/flavio.txt'(如果從我的家目錄運行)

如果第一個參數以斜線開頭,表示它是絕對路徑:

path.resolve('/etc', 'flavio.txt')//'/etc/flavio.txt'