使用webpack打包工具,將圖片資源檔案打包完後發現一個問題。
在打包檔bundle.js中
#我的圖片引用的是相對路徑。而我上線的專案入口html和資源檔案是分開的。請問有什麼方法在生產環境中打包的時候直接將引用圖片的相對位置改為我設定的絕對位置。
看了下別人的方案,有的說修改webpack.config.js中的output。
#我為publicPath設定了位置,但是我查看了下bundle.js中圖片的引用位置,還是相對的。 。 。 。 。求解
const { resolve } = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var OpenBrowserPlugin = require('open-browser-webpack-plugin');
module.exports = {
entry: [
'./index.js'
],
output: {
filename: 'bundle.js',
path: resolve(__dirname, 'dist'),
publicPath: '/'
},
context: resolve(__dirname, 'src'),
module: {
rules: [
{
test: /\.js$/,
use: [
'babel-loader',
],
exclude: /node_modules/
},
{
test:/\.(png|gif|jpg|jpeg|bmp)$/i,
use:[
'url-loader?limit=8192&name=images/[hash:8].[name].[ext]',//限制大小8kb
"file-loader?name=images/[hash:8].[name].[ext]"
],
},
{
test:/\.(png|woff|woff2|svg|ttf|eot)($|\?)/i,
use:[
'url-loader?limit=8192&name=images/[hash:8].[name].[ext]',//限制大小小于8kb
"file-loader?name=images/[hash:8].[name].[ext]"
],
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
'postcss-loader',
],
},
{
test: /\.scss$/,
include:resolve(__dirname, 'src'),
loaders: [
'style-loader',
'css-loader?modules&sourceMap&importLoaders=1&localIdentName=[hash:base64:8]',
'postcss-loader',
]
},
],
},
plugins: [
// webpack 内置的 banner-plugin
new webpack.BannerPlugin("Copyright by 309187341@qq.com"),
// html 模板插件
new HtmlWebpackPlugin({
template: __dirname + '/index.html'
}),
new webpack.LoaderOptionsPlugin({
options: {
postcss: function(){
return [
require("autoprefixer")({ //通过这个插件,能够将CSS3的后缀自动添加上。
browsers: ['ie>=8','>1% in CN']
})
]
}
}
})
],
};
你把css不要打包到bundle.js中,單獨抽取成css檔案試試看裡面的路徑看,然後我看你貼出來的webpack中的publicPath還是/。我本地的測試的效果如下。