学习 webpack 时遇到:path.resolve()
webpack.config.js: output:{ filename:'[name].bundle.js', // 把一个路径或路径片段的序列解析为一个绝对路径 path:path.resolve(__dirname,'dist') },
然后去看了 node.js 文档发现还是不理解,它的解释是:
path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。 例如,给定的路径片段的序列为:/foo、/bar、baz,则调用 path.resolve('/foo', '/bar', 'baz') 会返回 /bar/baz。
给的例子有:
path.resolve('/foo/bar', './baz'); // 返回: '/foo/bar/baz' path.resolve('/foo/bar', '/tmp/file/'); // 返回: '/tmp/file' path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif'); // 如果当前工作目录为 /home/myself/node, // 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif'
我的理解是像拼接字符串一样从右到左将参数拼成一个绝对路径,但是给出的每一个例子都完全不符合这个理解,然后看了一篇path的join和resolve的使用区别后的理解可以解释这些例子:
path.resolve([…paths])里的每个参数都类似在当前目录执行一个cd操作,从左到右执行,返回的是最后的当前目录,
这样理解才和文档中的例子对上号,例如:
path.resolve('/foo/bar','./baz'); 相当于:
cd /foo/bar //此时当前路径为 /foo/bar cd ./baz //此时路径为 /foo/bar/baz
path.resolve('/foo/bar', '/tmp/file/'); 相当于:
cd /foo/bar //此时路径为 /foo/bar cd /tmp/file/ //此时路径为 /tmp/file
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');// 如果当前工作目录为 /home/myself/node,相当于:
cd wwwroot //此时路径为/home/myself/node/wwwroot cd static_files/png/ //此时路径为/home/myself/node/wwwroot/static_files/png/ cd ../gif/image.gif //这里用cd描述其实是不对的。。。。此时路径为/home/myself/node/wwwroot/static_files/gif/image.gif
这样就可以解释文档里的例子,但是也不确定到底对不对。
参考:小tips:path的join和resolve的使用区别
作者:kikyou`
原文链接:HelloWeb前端网 » path.resolve()理解 » 感谢您的浏览,希望能有所帮助。
欢迎您加入“Helloweb” 学习交流群:
196291215 共同交流并结识同行,在这里说出您的收获与感想或有什么不同的观点,我们期待您的留言,分享,让我们一起进步!