使用 webpack 配置静态资源内联


作者:Seiya

时间:2019年07月15日


资源内联的意义


代码层面:

  • 页面框架的初始化脚本;

  • 上报相关打点;

  • css 内联避免页面闪动;


请求层面:减少 http 网络请求数:

  • 小图片或字体内联(url-loader);


html 和 js 内联


  • raw-loader 内联 html

    <script>${require('raw-loader!babel-loader!./meta.html')}</script>
    

  • raw-loader 内联 JS

    <script>${require('raw-loader!babel-loader!../node_modules/lib-flexible/flexible.js')}</script>
    


css 内联


  • 方案一:style-loader

    具体配置如下:

    module.exports = {
    	...
    	module: {
    		rules: [
    			test: /\.less$/,
    			use: [
    				{
    					loader: 'style-loader',
    					options: {
    						/* 样式插入到 head 中 */
    						insertAt: 'top';
    						/* 将所有的 style 标签合并为一个 */
    						singleton: true
    					}
    				}
    				'css-loader',
    				'less-loader',
    			]
    		]
    	}
    }
    

  • 方案二:html-inline-css-webpack-plugin

    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const HTMLInlineCSSWebpackPlugin = require("html-inline-css-webpack-plugin").default;
    
    module.exports = {
    	plugins: [
    		new MiniCssExtractPlugin({
    			filename: "[name].css",
    			chunkFilename: "[id].css"
    		}),
    		new HtmlWebpackPlugin(),
    		new HTMLInlineCSSWebpackPlugin(),
    	],
    	module: {
    		rules: [
    			{
    				test: /\.css$/,
    				use: [
    					MiniCssExtractPlugin.loader,
    					"css-loader"
    				]
    			}
    		]
    	}
    }
    
最后更新时间: 2019-7-15 15:27:07