path是nodejs的内置模块,提供了处理和转换文件路径的工具
const path = require('path')
index.js文件,文件路径:D:node-test/server/bin/index.js
console.log(__filename);
console.log(__dirname);
console.log(path.resolve('./'));
console.log(path.resolve('..'));
console.log(path.resolve(__dirname,'..'));
输出当前命令的文件路径
console.log(__filename);
//D:node-test/server/bin/index.js
输出当前命令的文件所在文件夹路径
console.log(__dirname);
//D:node-test/server/bin/
在AMD、CMD、CommonJs中都可以使用该值,但是在ES6环境下,该值失效
import path from 'path'
const __dirname = path.resolve();
将 to 参数解析为绝对路径,给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径(方法将一系列路径或路径段解析为绝对路径)
对路径进行解析
path.parse('C:\\path\\dir\\file.txt');
// Returns:
// { root: 'C:\\',
// dir: 'C:\\path\\dir',
// base: 'file.txt',
// ext: '.txt',
// name: 'file' }
path.format(pathObject)
从对象中返回路径字符串,和 path.parse 相反。
path:文件所在路径,ext:文件后缀名,可选参数
path.basename('/foo/bar/baz/asdf/quux.html');
// 'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// 'quux'
返回路径中文件的后缀名,即路径中最后一个’.‘之后的部分。如果一个路径中并不包含’.‘或该路径只包含一个’.’ 且这个’.'为路径的第一个字符,则此命令返回空字符串。
path.extname('/foo/bar/baz/asdf/quux.html');// '.html'
path.extname('/foo/bar/baz/asdf');// ''
返回路径中代表文件夹的部分,其实就是指定路径的父级文件夹
path.dirname('/foo/bar/baz/asdf/quux.html');// '/foo/bar/baz/asdf'
path.dirname('/foo/bar/baz/asdf');// '/foo/bar/baz'
用于将绝对路径转为相对路径,返回从from 到 to
的相对路径(基于当前工作目录)
path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb');// 返回: '..\\..\\impl\\bbb'
path.relative('C:\test\index.js', 'C:\test\form.js');// "../form.js"
上述第二个例子返回的是"../form.js"而不是"./form.js",两个文件在同一个文件夹,相对路径应该是一个".",也就是"./form.js"才对啊????!!!!
,但是实测却不是
而且对于上述的相对路径的说明感觉是反的
,API 的参数说明不正确,例如真实案例中:
path1:'C:\test\form.js’在path2:'C:\test\index.js’中的相对路径,是"./form.js",也就是from=path1,to=path2,所以该方法的正常参数解析应该是:
path.relative(to,from)
,而不是path.relative(from, to)
规范化路径,注意’…’ 和 ‘.’
判断参数 path 是否是绝对路径
用于连接路径。该方法的主要用途是正确使用当前系统的路径分隔符
,Unix系统是"/",Windows系统是""
属性 | 描述 |
---|---|
path.sep | 平台的文件路径分隔符,’\’ 或 ‘/’。 |
path.delimiter | 平台的分隔符, ; or ‘:’. |
path.posix | 提供上述 path 方法,不过总以 posix 兼容的方式交互 |
path.win32 | 提供上述 path 方法,不过总以 win32 兼容的方式交互 |
process.execPath: 当前执行node的路径(如:/bin/node)
使用的场景有两种
敲击命令的所在路径,即在那个路径下执行的该命令,得到就是该路径
运行该文件的node命令所在目录,同终端一样
node file.js