使用 <link> 标记和 HTMLWebpackPlugin 加载 CSS

Load CSS with <link> tag and HTMLWebpackPlugin

我想使用 <link>(这很重要 - 我不想使用 <style>)标记来加载外部 CSS(来自 npm 依赖项)。我正在使用 HTMLWebpackPlugin。

我试过这样的方法:

<link href="style!css!file!~@internal-scope/package-name/dist/some.css" rel="stylesheet" id="important-id">

但是 Webpack 一直用 [Object object] 替换 href。我认为这是因为 Webpack 正在尝试使用 esModules?但是当我使用 ...!file?esModule=false!... 关闭 esModule 时,我收到如下错误:

 Module not found: Error: Can't resolve './' in (...)

我也尝试只使用 file-loader(正如@felixmosh 所建议的)——仍然是与上面相同的问题。

在您的情况下,链接 css-loaderstyle-loader 不相关。

css-loader 加载 css 并向下传递带有选择器映射 + css 字符串的 对象 style-loader 注入 css 和 returns 相同的 object.

因此,您得到 [Object object]

尝试只使用 file-loader,其中 returns 一个带有静态文件路径的 字符串 ,并将文件发送到 outputPath.

<link href="!!file?esModule=false!~@internal-scope/package-name/dist/some.css" rel="stylesheet" id="important-id">
// ---------^ these !! are important to prevent from running rest of the loaders which are suitable from your config.

顺便说一句,为什么您要尝试将其直接注入模板而不是将其导入 js 并让 HTMLWebpack 执行此操作? (默认情况下将 link 标记注入 emitted css 文件)