关于path.join() 和path.reslove() 大家应该不陌生,在webpack打包中经常用 const path = require('path')
- __dirname 是node的一个全局变量,可以获得当前文件所在文件夹的绝对路径
- 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