webpack中的"pragma style"是什么意思?

what is the meaning of "pragma style" in webpack?

devtool configuration docs 他们说:

Prefixing @, # or #@ will enforce a pragma style. (Defaults to #, recommended)

这是什么意思?

不同的浏览器需要不同的格式来指定源映射。如果您的浏览器没有显示 webpack 文件的源映射,那么您可以更改该选项以使其与您的浏览器兼容。

为了更明确一点,所指的 "pragma" 是向浏览器表示元数据的字符序列。在这种情况下,元数据告诉浏览器在哪里获取源映射文件,它是否应该决定加载它(例如,当用户打开浏览器开发工具时)。

如 sirlancelot 的 link 所示,pragma 的标准格式是使用以下形式的注释,以 //#:

开头

//# sourceMappingURL=/path/to/file.js.map

在最新版本的 Webpack 中,如果您没有在 devtool 设置中指定 pragma 字符,那么它默认使用注释字符后的 # 字符,如上所示。

虽然在旧版本的 Webpack 中,pragma 字符用于默认为 @,这将导致以下形式的注释:

//@ sourceMappingURL=/path/to/file.js.map

在最近的浏览器中使用 //@ 表单现在将导致浏览器控制台中出现弃用警告(至少在 Chrome 中)。

如果您需要支持旧版浏览器,您可以通过在 devtool 设置前加上所需字符来覆盖默认编译指示,例如:

devtool: "@source-map"

或将其明确设置为 #

devtool: "#source-map"

但最干净的 IMO 方法是省略前缀字符并让 Webpack 通过将其指定为来添加默认值:

devtool: "source-map"