path.join和path.resovle区别

对于以/开始的路径片段,path.join只是简单的将该路径片段进行拼接

而path.resolve将以/开始的路径片段作为根目录,在此之前的路径将会被丢弃,最终返回的是一个绝对路径

 __dirname:返回当前文件所在文件夹的绝对路径

进行webpack配置时,一般使用path.join配合__dirname

 

path.join   方法使用平台特定的分隔符[Unix系统是/,Windows系统是\ ]把全部给定的 path 片段连接到一起,并规范化生成的路径。若任意一个路径片段类型错误,会报错

__dirname
// __dirname返回当前文件所在的绝对路径
const path = require('path');

const path1 = path.join(__dirname, '/foo');
const path2 = path.join(__dirname, './foo/bar');
const path3 = path.join('/foo', 'bar', '/baz/apple', 'aaa', '..');
const path4 = path.join('foo', 'bar', 'baz');


console.log(path1);
console.log(path2);
console.log(path3);
console.log(path4);

// 输出结果
/Users/xiao/work/test/foo
/Users/xiao/work/test/foo/bar
/foo/bar/baz/apple
foo/bar/baz

 

path.resolve   方法会把一个路径或路径片段的序列解析为一个绝对路径

const path = require('path');

const path1 = path.resolve('/a/b', '/c/d');
// 结果: /c/d
const path2 = path.resolve('/a/b', 'c/d');
// 输出: /a/b/c/d
const path3 = path.resolve('/a/b', '../c/d');
// 输出: /a/c/d
const path4 = path.resolve('a', 'b');
// 输出: /Users/xiao/work/test/a/b

 

参考:

https://juejin.cn/post/6844903861920989198

 

 

-----smile

 

posted @ 2021-04-16 16:19  Walker-lyl  阅读(119)  评论(0编辑  收藏  举报