`Path` module - Node.js

因为本人使用的操作系统是 OS X ,所以一下书写规范均符合 POSIX(Portable Open System Interface eXtended),Windows 用户请自行查阅资料。

path.basename(path[, suffix])

1
2
path.basename('/path/to/project/index.html', '.html')
// 'index'

path.delimiter

1
2
3
console.log(process.env.PATH)
// /opt/homebrew/opt/llvm/bin:/opt/homebrew/opt/llvm/bin:/Applications/Sublime Text.app/Contents/SharedSupport/bin/:/Applications/Visual Studio Code.app/Contents/Resources/app/bin/:/Users/Mccranky/.gem/ruby/3.1.3/bin:/Users/Mccranky/.rubies/ruby-3.1.3/lib/ruby/gems/3.1.0/bin:/Users/Mccranky/.rubies/ruby-3.1.3/bin::/opt/local/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mysql/support-files:/usr/local/mysql/bin:/etc/platform-tools:/usr/local/go/bin:/usr/local/MacGPG2/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Users/Mccranky/.nami/bin:/Users/Mccranky/.spicetify
// undefined

输出第一行为环境变量。
输出第二行的undefined示意无返回值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
process.env.PATH.split(path.delimiter)
/*
[
'/opt/homebrew/opt/llvm/bin',
'/opt/homebrew/opt/llvm/bin',
'/Applications/Sublime Text.app/Contents/SharedSupport/bin/',
'/Applications/Visual Studio Code.app/Contents/Resources/app/bin/',
'/Users/Mccranky/.gem/ruby/3.1.3/bin',
'/Users/Mccranky/.rubies/ruby-3.1.3/lib/ruby/gems/3.1.0/bin',
'/Users/Mccranky/.rubies/ruby-3.1.3/bin',
'',
'/opt/local/bin',
'/opt/homebrew/bin',
'/opt/homebrew/sbin',
'/usr/local/bin',
'/usr/bin',
'/bin',
'/usr/sbin',
'/sbin',
'/usr/local/mysql/support-files',
'/usr/local/mysql/bin',
'/etc/platform-tools',
'/usr/local/go/bin',
'/usr/local/MacGPG2/bin',
'/usr/local/share/dotnet',
'~/.dotnet/tools',
'/Library/Apple/usr/bin',
'/Users/Mccranky/.nami/bin',
'/Users/Mccranky/.spicetify'
]
*/

path.delimiter: :

path.dirname

1
2
path.dirname('path/to/file.txt')
// 'path/to'

path.extname

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
path.extname('index.html')
// '.html'

path.extname('index.foo.md')
// '.md'

path.extname('index.')
// '.'

path.extname('index')
// ''

path.extname('.index')
// ''

path.extname('.index.md')
// '.md'

path.format(pathObject)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// `${dir}${path.sep}${base}`
path.format({
root: '/ignored',
dir: '/home/user/dir',
base: 'file.txt',
})
// '/home/user/dir/file.txt'

path.format({
root: '/',
base: 'file.txt',
ext: 'ignored',
})
// '/file.txt'

path.format({
root: '/',
name: 'file',
ext: '.txt',
})
// '/file.txt'

path.format({
root: '/',
name: 'file',
ext: 'txt',
})
// '/file.txt'

path.isAbsolute

1
2
3
4
path.isAbsolute('/foo/bar') // true
path.isAbsolute('/baz/..') // true
path.isAbsolute('qux/') // false
path.isAbsolute('.') // false

path.join([...paths])

1
2
3
4
5
path.join('')
// '.'

path.join('/', '/foo', 'bar', 'baz', '..')
// '/foo/bar'

path.normalize(path)

1
2
path.normalize('/foo/bar//baz/asdf/quux/..')
// Returns: '/foo/bar/baz/asdf'

path.parse(path)

1
2
3
4
5
6
7
8
9
10
path.parse('/home/user/dir/file.txt')
/*
{
root: '/',
dir: '/home/user/dir',
base: 'file.txt',
ext: '.txt',
name: 'file'
}
*/
1
2
3
4
5
6
┌─────────────────────┬────────────┐
│ dir │ base │
├──────┬ ├──────┬─────┤
│ root │ │ name │ ext │
" / home/user/dir / file .txt "
└──────┴──────────────┴──────┴─────┘

path.posix

只是输出一下path模组所有的方法。

path.relative(from, to)

1
2
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb')
// '../../impl/bbb'

path.resolve([...paths])

1
2
3
4
5
path.resolve('')
'/Users/Mccranky'

path.join('foo', 'bar', 'baz', '..')
// '/Users/Mccranky/foo/bar'

path.sep

path.sep: /

1
2
'foo/bar/baz'.split(path.sep)
// ['foo', 'bar', 'baz']