关于path.join() 和path.resolve

201 阅读1分钟

关于path.join() 和path.reslove() 大家应该不陌生,在webpack打包中经常用 const path = require('path')

  • __dirname 是node的一个全局变量,可以获得当前文件所在文件夹的绝对路径

image.png

image.png

  • path.resolve() var path = require("path") //引入node的path模块

参数必须是字符串,否则报错,返回值也是string类型

path.resolve('/foo/bar', './baz') returns '/foo/bar/baz'

path.resolve('/foo/bar', 'baz') returns '/foo/bar/baz'

path.resolve('/foo/bar', '/baz') returns '/baz'

path.resolve('/foo/bar', '../baz') returns '/foo/baz'

path.resolve('home','/foo/bar', '../baz') returns '/foo/baz'

path.resolve('home','./foo/bar', '../baz') returns '/home/foo/baz'

path.resolve('home','foo/bar', '../baz') returns '/home/foo/baz'

**从后向前**,若字符以 / 开头,不会拼接到前面的路径(因为拼接到此已经是一个绝对路径)

若以 ../ 开头,拼接前面的路径,且不含最后一节路径;

若以 ./ 开头 或者没有符号 则拼接前面路径;

  • path.join()

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');

可以分为两部分

先是 /foo/bar/baz/asdf/quux

当继续拼接到".."的时候是返回上级目录

所以得到/foo/bar/baz/asdf

path.join('/foo', 'bar', 'baz/asdf', 'quux', '.');

得到 /foo/bar/baz/asdf/quux, "."和"/"无影响

path.join('/foo', 'bar', 'baz/asdf', '..', '..');

两次返回上级目录 得到 /foo/bar