🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[toc] ## cwd:当前工作目录 `cwd`即Current Working Directory,它的中文意思是当前工作目录,它是一个**绝对路径**。 直观感受就是下图中运行`1.test.js`时命令行所处的目录 ![](https://user-gold-cdn.xitu.io/2018/5/18/163737426e98f928?w=474&h=119&f=png&s=18376) ### 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); //系统环境变量 ```