- 资源内联。使用 
html-inline-css-webpack-plugin - 单独的文件。
 
css-loader
作用:用于加载 .css 文件,并且转换成 CommonJS 对象。也就是说样式代码会被放到 JS 里面去。
配置(只用了 css-loader):
// webpack.config.jsmodule.exports = {//...module: {rules: [{test: /.css$/,use: ['css-loader'],}]}}
结果:
打包后的文件不包含任何 CSS 文件。

样式代码在 JS 文件里。
style-loader
作用:将样式通过 <style> 标签插入到 head 中。
插入是一个动态的过程,打包后生成的 HTML 文件没有 <style></style> 标签,而是在代码运行时动态的创建 style 标签,然后将 CSS Style 插入到 style 标签里面去。
配置:
// webpack.config.jsmodule.exports = {//...module: {rules: [{test: /.css$/,use: ['style-loader','css-loader']}]}}
结果:


打包后的文件不包含任何 CSS 文件。

样式代码在 JS 文件里。
运行时(运行时插入):

使用 style-loader 可以配置 options.injectType: 'singletonStyleTag'。
mini-css-extract-plugin
作用:将 CSS 提取到单独的文件中。
配置:
// webpack.config.jsmodule.exports = {//...plugins: [new MiniCssExtractPlugin()],module: {rules: [{test: /.css$/,use: [MiniCssExtractPlugin.loader,'css-loader']}]}}
结果:


打包后的文件中 CSS 文件,并且 HTML 文件中使用 <link /> 链接了该 CSS 文件。
<link href="search_7860b96e.css" rel="stylesheet" />
html-inline-css-webpack-plugin
使用 html-inline-css-webpack-plugin 需要 mini-css-extract-plugin 和 html-webpack-plugin。
作用:内联样式
<link rel="stylesheet" /> ====> <style>...<style/>
配置:
// webpack.config.jsmodule.exports = {//...plugins: [new MiniCssExtractPlugin(),new HtmlWebpackPlugin(),new HTMLInlineCSSWebpackPlugin()],module: {rules: [{test: /.css$/,use: [MiniCssExtractPlugin.loader,'css-loader']}]}}
结果:


总结:
CSS 内联的思路是:先将 CSS 提取打包成一个单独的 CSS 文件(使用 MiniCssExtractPlugin.loader),然后再将提取的 CSS 内容注入到页面的 style 里面去。这个过程在构建阶段完成。
