鍍金池/ 問答/HTML/ webpack如何打包圖片文件

webpack如何打包圖片文件

目錄結(jié)構(gòu)是這樣的,dist里面的文件是打包過后的文件

圖片描述

現(xiàn)在html,js,css都順利打包,唯有src下的img不知道如何打包到dist/img下。

我希望的是在src/css/index.css下 寫background:url(../img/head.jpg),通過打包后會在dist下自動生成img文件夾,里面放著打包過后的圖片,并且路徑引用全都是對的。我大概知道要用到url-loader,但是網(wǎng)上看了很多教程,我的問題并沒有的到解決

webpack.config.js配置下

var path = require('path');
var  webpack = require('webpack');
var  HtmlWebpackPlugin = require('html-webpack-plugin');


var  ExtractTextPlugin = require("extract-text-webpack-plugin");   



module.exports={
        entry:{

        'app/dist/js/index':'./app/src/js/index.js'

        },

        module: {

            rules: [
                {
                test: /\.css$/,
                use: ExtractTextPlugin.extract({
                    fallback: "style-loader", 
                    use: "css-loader"
                })
                },
                //es6
                {
                    test:/\.js$/, //匹配.js文件
                    //排除也就是不轉(zhuǎn)換node_modules下面的.js文件
                    exclude: /(node_modules|bower_components)/,
                //加載器  webpack2需要loader寫完整 不能寫babel 要寫 bable-loader
                    use:[{loader:"babel-loader"}]
                }
            ]

        },

        output: {
            filename: '[name].[chunkHash:5].js',
        },
        plugins:[


            new HtmlWebpackPlugin({
                filename: './app/dist/index.html',
                chunks: ['app/dist/js/index'],
                template: './app/src/page/index.html',
            }),

            new ExtractTextPlugin({
                filename: (getPath)=>{
                    return getPath('[name].[contenthash:5].css').replace('js','css')
                }
            })


        ]

}
回答
編輯回答
怣人

可使用html-loader依賴:

安裝:npm i -D html-loader

添加配置使用:

module: {
  rules: [{
    test: /\.html$/,
    use: [ {
      loader: 'html-loader',
    }],
  }]
}

然后,就可以在html文件中正常使用src了

如果配置不太會,可以看下自寫的一篇webpack簡易教程

2017年3月15日 22:57
編輯回答
小曖昧

最終還是解決了,貼一下解決方案
先看一下目錄
圖片描述

我們的多頁面項目會有很多模塊,比如app和back,里面有對應(yīng)的html,css,js,img(中規(guī)中矩)
之前的解決方案是在每個模塊下生成dist文件,里面有對應(yīng)打包好的html,css,js,打包不出img,
那么這是不對的,這時候如果在css里寫圖片的絕對路徑時打包是會出錯的,(background:url()這樣的東西無法使用),也是因為這個原因在這里尋找答案,

圖片描述

最后重新配置,在根目錄生成build文件,里面包含自己的各個模塊,

2017年12月9日 19:42
編輯回答
墻頭草
      {
        test: /\.jpg$/,
        use:[{loader:'url-loader?limit=1024&publicPath=dist/js/'}]
      }

首先安裝url-loader。這個配置文件中url-loader后面的publicPath參數(shù)是打包后靜態(tài)文件的路徑前綴。你可以去看看這個文章 傳送門

2017年8月24日 05:30