2 回答

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
我有它的工作。萬歲!
我從來沒有最終使用publicPath. 也許有辦法改變它,但這最終成為了一條紅鯡魚。相反,我重組了我的src目錄以遵循我正在尋找的模式,并刪除了路徑,html-loader因此在構(gòu)建過程中路徑不會改變。
這是我的新源目錄:
/ src /
-home.html
templates/
-about.html
js/
-home.js
-about.js
images/
-00.jpg
-01.jpg
scss/
-style.scss
您可以看到home.html是故意在主目錄上而不是在/templates. images/圖像源在home.html和其他地方引用../images/。
現(xiàn)在html-loader,我copy-webpack-plugin以前需要 / 將圖像從源目錄復(fù)制到構(gòu)建文件夾,而不是 ,就像html-loader在構(gòu)建過程中更改路徑一樣。我試了幾次才發(fā)現(xiàn)這html-loader是罪魁禍?zhǔn)住?/p>
這是我最后的工作 webpack 配置記錄。
// webpack.config.js
const webpack = require('webpack');
const path = require('path');
const HtmlWebPackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const CopyPlugin = require('copy-webpack-plugin');
module.exports = {
context: path.resolve(__dirname, 'src'),
entry: {
home: './js/home.js',
about: './js/about.js',
},
output: {
filename: (pathData) => {
return pathData.chunk.name === 'home' ? 'bundle.js' : '[name]/bundle.js';
},
path: path.resolve(__dirname, 'public_html')
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, "css-loader"]
},{
test: /\.sass$|\.scss$/,
use: [
MiniCssExtractPlugin.loader,
{ loader: 'css-loader' },
{ loader: 'sass-loader' },
],
},{
test: /\.(jpg|png|svg)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[path][name].[ext]'
}
}
]
}
]
},
plugins: [
new CopyPlugin({
patterns: [
{from:'./image',to:'image'}
],
}),
new HtmlWebPackPlugin({
hash: true,
filename: 'index.html', // landing page remains in root directory
template: 'index.html',
chunks: ['home']
}),
new HtmlWebPackPlugin({
hash: true,
filename: 'about/index.html', // all other pages move to subdirectories
template: 'templates/about.html',
chunks: ['about']
}),
new MiniCssExtractPlugin({
filename: "style.css"
}),
new CleanWebpackPlugin()
]
};

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
我以這種方式解決了問題。
在視圖上導(dǎo)入圖像
Import YourImage from '../../public/assets/img/your-image.png';
在需要的地方調(diào)用并實(shí)施它們
src={YourImage}
或者在你的 classNames
background-image: `url(${YourImage})`
在 webpack.config.js 文件的規(guī)則部分從 GitHub 配置項(xiàng)目存儲庫的路徑。
存儲庫:“https://maikpwwq.github.io/your-repository/”
rules: [ { type: "asset", test: /\.(png|svg|jpg|gif|jpeg)$/i, use: [{ options: { publicPath: '/your-repository/'}, loader: 'file-loader' ]} } ]
添加回答
舉報(bào)