为什么在 webpack 配置中使用 __dirname 和 path.resolve?

Why use __dirname along with path.resolve in webpack config?

我正在浏览这个 webpack 教程:https://youtu.be/TOb1c39m64A

在 1:30:00 左右,他讨论了 __dirnamepath.resolve 中的使用,但是我不太明白使用和不使用它有什么区别。

他们 (path.resolve & __dirname) 不是同一个意思吗?两者都给出了该文件所在的当前绝对目录 运行。当我删除 __dirname 时,它仍然在相同的根位置创建 build 文件(即使 webpack.config.js)文件不在根级别,这一事实证实了这一点。即以下两个代码产生相同的结果:

__dirname

  output: {
    assetModuleFilename: "images/[hash][ext][query]",
    path: path.resolve(__dirname, 'dist')
  }, 

没有__dirname:

  output: {
    assetModuleFilename: "images/[hash][ext][query]",
    path: path.resolve('dist')
  }, 

那么这里用__dirname有什么用呢??

您有权在您的方案中使用它们以相同的方式工作。

但这两者之间存在细微差别,我会尽力解释。

Node 脚本中的

__dirname 将为您提供当前 JS 文件所在的绝对路径。

另一方面,

path.resolve 为您提供绝对路径,如果不是从路径段构建,则默认为当前工作目录。 (这是你的情况)。

where js file residescurrently working directory 的路径不同。

如何找到这种差异? 在您的应用中,您可以使用以下命令更改当前目录:processs.chdir(./example).

现在,如果您检查您的地址,它们将不相同。 path.resolve 还将在您的路径中附加此 /example 部分。 __dirname 仍会在正确的路径上引用。

很快在您的情况下它们将完全相同,但 __dirname 是更可靠的方法。