对于以/开始的路径片段,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