为什么在 webpack 配置中使用 __dirname 和 path.resolve?
Why use __dirname along with path.resolve in webpack config?
我正在浏览这个 webpack 教程:https://youtu.be/TOb1c39m64A
在 1:30:00 左右,他讨论了 __dirname
在 path.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 resides
和 currently working directory
的路径不同。
如何找到这种差异?
在您的应用中,您可以使用以下命令更改当前目录:processs.chdir(./example)
.
现在,如果您检查您的地址,它们将不相同。 path.resolve
还将在您的路径中附加此 /example
部分。 __dirname
仍会在正确的路径上引用。
很快在您的情况下它们将完全相同,但 __dirname
是更可靠的方法。
我正在浏览这个 webpack 教程:https://youtu.be/TOb1c39m64A
在 1:30:00 左右,他讨论了 __dirname
在 path.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 resides
和 currently working directory
的路径不同。
如何找到这种差异?
在您的应用中,您可以使用以下命令更改当前目录:processs.chdir(./example)
.
现在,如果您检查您的地址,它们将不相同。 path.resolve
还将在您的路径中附加此 /example
部分。 __dirname
仍会在正确的路径上引用。
很快在您的情况下它们将完全相同,但 __dirname
是更可靠的方法。