- cwd:当前工作目录
- process.cwd()
- path.resolve()
- process.chdir()
- __filename:当前文件路径
- __dirname:当前文件夹路径
- path.sep:路径分隔符
- 拼接路径
- path.normalize()
- path.join()
- path.basename()/extname
- path.parse()/format():解析和重组路径
- path.delimiter:环境变量分隔符
pre-notify
emmm,整理一下路径相关的东东,会更新哟!(づ ̄ 3 ̄)づ
cwd:当前工作目录
cwd
即Current Working Directory,它的中文意思是当前工作目录,它是一个绝对路径。
直观感受就是下图中运行1.test.js
时命令行所处的目录
process.cwd()
我们在node中可以这样获取 当前工作目录
process.cwd();
复制代码
path.resolve()
path模块的resolve方法也能获取当前工作目录
path.resolve('./');
复制代码
和process.cwd()相比,这个方法的优势在于它还能根据当前工作目录往下拼接路径
console.log(path.resolve('./','a'))
<<<输出
当前工作目录的绝对路径+'/a'
复制代码
[danger] 注意: 如果拼接路径时候某一个子项带有'/',比如'/a',就会从系统根目录下的a文件夹开始拼接,并且该项之前的拼接项都将失效。(但是在window下若子项带有''并不会出现这个问题)
process.chdir()
此方法能改变当前的工作目录
process.chdir('..')
复制代码
require()
关于require有一点需要注意的是
require
若使用相对路径,即./
,那么这个相对路径是相对于当前模块的,而path.resolve
是相对于cwd
的!
另外,众所周知的,a/b/c
,这样的路径会直接在node_modules
找a/b/c
。
__filename:当前文件路径
我们能在模块中使用__filename
来获取当前文件的绝对路径。
console.log(__filename);
复制代码
__dirname:当前文件夹路径
我们能在模块中使用__dirname
来获取当前文件夹的绝对路径。
console.log(__dirname);
复制代码
path.sep:路径分隔符
path.sep
,即 separator ,路径分隔符
console.log(path.sep); // /或\ 根据的是你当前的系统是win还是linux系列
console.log(path.win32.sep); //window \
console.log(path.posix.sep); //linux /
复制代码
拼接路径
path.normalize()
该方法会对路径进行容错处理,主要是:
- 路径分隔符多不多
- 有没有
..
,有的话自动转化
const {normalize} = require('path');
console.log(normalize('/usr///\/local/////bin')); // /usr/local/bin
console.log(normalize('usr//local/../bin')); // /usr/bin
复制代码
path.join()
此方法会在真正拼接路径之前调用path.normalize
const {join} = require('path');
console.log(join('usr/','local','bin')); // usr/local/bin
复制代码
此方法中并不能使用./
来解析当前模块所处的路径,So我们往往搭配__dirname
来进行路径的拼接
path.join(__dirname,'a','b')
复制代码
path.basename()/extname
extname->文件类型
console.log(path.extname('1.a.b.js')); // .js 取最后一个.
复制代码
basename->文件名
此方法还可以手动指定要去除的后缀(默认为最后一个.
以及后面的部分)
console.log(path.basename('1.a.b.js','b.js')); // 1.a.
复制代码
path.parse()/format():解析和重组路径
onst {parse,format} = require('path');
const ret = parse(filePath);
console.log(ret);
// { root: '/',
// dir: '/usr/local/bin',
// base: 'no.txt',
// ext: '.txt',
// name: 'no' }
console.log(format(ret)); // /usr/local/bin/no.txt
//format若存在冲突dir和base的优先级较高
复制代码
path.delimiter:环境变量分隔符
path.delimiter
,delimiter,中文意思是定界符的意思,实际上是系统变量
的分隔符。
let path = require('path');
console.log(path.delimiter);
console.log(path.posix.delimiter); // :
console.log(path.win32.delimiter); // ;
复制代码
查看当前操作系统上设置的环境变量
console.log('PATH',process.env.PATH); //系统环境变量
复制代码