直接在应用程序(webpack)的入口点导入文件加载器。感叹号是啥?

Posted

技术标签:

【中文标题】直接在应用程序(webpack)的入口点导入文件加载器。感叹号是啥?【英文标题】:Importing file-loader directly in entry point of app (webpack). What is the exclamation point?直接在应用程序(webpack)的入口点导入文件加载器。感叹号是什么? 【发布时间】:2018-10-23 16:48:24 【问题描述】:

我正在使用 React 模板,但由于多种原因,我目前对这一行感到非常困惑。

require('file-loader?name=[name].[ext]!./index.html');
    首先,为什么入口点应用文件中需要文件加载器?

    name=[name] 参数在做什么?

    感叹号是什么意思?

【问题讨论】:

【参考方案1】:

这是一个 Webpack 加载器(在本例中为 file-loader)的示例,它是 used inline。

当使用内联 Webpack 加载器时,而不是通过 Webpack 配置文件的 module.rules 数组中的对象,要使用的加载器的名称会附加到您想要(或导入)的文件的名称之前,以! 分隔。任何要传递给加载程序的选项都在加载程序名称之后指定为查询字符串或 JSON 字符串,? 分隔加载程序名称和加载程序选项。

鉴于 file-loader 将文件复制到 Webpack 输出目录并返回其 URL,require("file-loader?name=[name].[ext]!./index.html")./index.html 复制到具有原始名称和扩展名的输出目录。如果调用 require 的结果被分配给任何变量,在这种情况下,它将返回 /index.html(如果在 Webpack 配置文件中设置,则以公共路径为前缀)。

所有这些都是特定于 Webpack 的——如果你试图在 Node.js 中运行这段代码而不通过 Webpack,你几乎肯定会得到一个错误。

【讨论】:

以上是关于直接在应用程序(webpack)的入口点导入文件加载器。感叹号是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Webpack 2 未解析 webpack.config.js 中的入口点

Webpack,多个入口点 Sass 和 JS

webpack详解----resolve

Webpack - 不要为某个入口点输出包

webpack 可以在不需要或导入的情况下捆绑 js 文件吗? Q2:为啥需要图表?

Webpack 4 配置入口点和输出(每个项目文件夹中生成的dist文件夹)