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

V S*_*S X 9 path node.js reactjs webpack

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

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

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

__dirname

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

没有__dirname

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

__dirname那么这里需要用到什么呢??

Pre*_*vic 12

您有权在您的场景中它们将以相同的方式工作。

但这两者之间有一个微妙的区别,我将尽力解释它。

Node 脚本中的__dirname将为您提供当前 JS 文件所在位置的绝对路径。

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

where js file resides和的路径之间存在差异currently working directory

你怎样才能找到这个差异呢?在您的应用程序中,您可以使用以下命令更改当前目录processs.chdir(./example)

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

不久之后,在您的情况下,它们的工作原理将完全相同,但是__dirname更强大的方法。