鍍金池/ 問答/HTML/ Webpack 打包怎么修改 css img 路徑?

Webpack 打包怎么修改 css img 路徑?

現(xiàn)在的目錄結構如下

|--src---img-a.png
       |-scss-b.scss
       |-index.html

在 b.scss 中

#b {
    backgroun-image: url( ../img/a.png )
}

在 index.html 中

<img src="./img/a.png">

配置 webpack

module.exports = {
    mode: 'production',
    entry: './src/index.js',
    output: {
        path: path.resolve( __dirname, 'dist' ),
        filename: '[name].bundle.js',
        publicPath: './',
    },
    module: {
        rules: [
            {
                test: /\.scss$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    "css-loader",
                    "sass-loader"],
            },
            {
                test: /\.png$/,
                use: [
                    { loader: 'file-loader', options: {
                        name: 'img/[name].[ext]',
                    } }
                ]
            },
            {
                test: /\.html$/,
                use: {
                    loader: 'html-loader',
                    options: {
                        attrs: ['img:src']
                    }
                }
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './src/html/index.html',
        } ),
        new MiniCssExtractPlugin({
            filename: "css/[name].css",
            chunkFilename: "css/[id].css"
          }),
    ],
};

發(fā)現(xiàn) html 打包出來的 img 路徑是 ./img/a.png 能被成功訪問,但是 提取出來的 css 訪問的路徑也是 ./img/a.png 也就不能訪問圖片了

請問應該如何修改同時讓 index.html 以及 css 能被正常訪問同一個圖片

回答
編輯回答
凹凸曼

提取 js 中的 css 部分到單獨的文件

這種情況下所以單獨需要配置 publicPath,復寫其中資源的路徑
2017年2月26日 10:26
編輯回答
青檸

使用 url-loader
name是定義打包后的圖片文件夾以及圖片的名稱

...
    {
        test: /\.(png|jpg|jpeg|gif|eot|ttf|woff|woff2|svg|svgz|tmpl)(\?.+)?$/,
        exclude: /favicon\.png$/,
        use: [{
            loader: 'url-loader',
            options: {
                limit: 400,
                name: 'assets/' + (isDev ? '[name].[ext]' : '[name].[ext]?[hash:7]')
            }
        }]
    }
...
2018年7月20日 14:55