path.resolve()的用法

前言

webpack的使用中,都会遇到配置output的情况,在path中有这么一段配置:

const path = require('path')
module.exports = {
  ...
  output: {
    filename: './js/[name][contenthash].js',
    path: path.resolve(__dirname, 'dist')
  }
}

其中有一段path.resolve(__dirname, ‘dist’)一直没明白是什么意思,关键是不知道resolve的作用是什么,官方给出的解释如下:

path.resolve([…paths])#
中英对照
新增于: v0.3.4
…paths 路径或路径片段的序列
返回:
path.resolve() 方法将路径或路径片段的序列解析为绝对路径。
给定的路径序列从右到左处理,每个后续的 path 会被追加到前面,直到构建绝对路径。 例如,给定路径片段的序列:/foo、/bar、baz,调用 path.resolve(‘/foo’, ‘/bar’, ‘baz’) 将返回 /bar/baz,因为 ‘baz’ 不是绝对路径,而 ‘/bar’ + ‘/’ + ‘baz’ 是。
如果在处理完所有给定的 path 片段之后,还没有生成绝对路径,则使用当前工作目录。
生成的路径被规范化,并删除尾部斜杠(除非路径解析为根目录)。

官方给的解释比较隐晦,看完后还是不太清楚,故尝试带入不同的参数查看结果,过程如下:

resolve的用法

我们先来看一下带入不同参数给出的结果,代码中文件所在目录为:
F:\Workspaces\webpack\src
__dirname为node自带参数,返回的是当前文件所在目录

// path.js
path.resolve()
// 输出结果:F:\Workspaces\webpack
path.resolve('/dist')
// 输出结果:F:\dist
path.resolve('dist')
// 输出结果:F:\Workspaces\webpack\dist
path.resolve('./dist')
// 输出结果:F:\Workspaces\webpack\dist
path.resolve(__dirname, '/dist')
// 输出结果:F:\dist
path.resolve(__dirname, './dist')
path.resolve(__dirname, 'dist')
// 输出结果:F:\Workspaces\webpack\src\dist
path.resolve(__dirname, 'dist', 'js')
// 输出结果:F:\Workspaces\webpack\src\dist\js

通过上面的测试,我们不难看出,path.resolve()默认输出的是当前项目的根目录(工作路径),path.resolve()将入参从后往前拼接为一个绝对路径,如果我们在靠后的参数给到一个绝对路径,那么就会忽略前方的参数。
按照正常的用法,我们应该在第一个参数给到一个绝对路径,然后后面的参数用相对路径拼接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

传说中的腿腿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值