我正在学习CSS课程,已经厌倦了手工输入类似的HTML结构,所以我连接了pug模板和webpack-dev服务器来服务它。
注意:我的入口点是.scss文件,而不是.js
我有两个问题:
( a)只有来自css的资产被加载到构建文件夹中,但是.pug模板中的.pug属性中引用的图像和svg被忽略了。
( b)浏览器重新加载在webpack-dev-server中不起作用
我的webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
entry: './sass/main.scss',
output: {
path: path.resolve(__dirname, 'build'),
filename: 'css/style.css',
},
mode: 'development',
module: {
rules: [
{
test: /\.pug$/,
use: ['pug-loader'],
},
{
test: /\.(css|sass|scss)$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
{
loader: 'css-loader',
},
{
loader: 'postcss-loader',
},
{
loader: 'sass-loader',
},
]
})
},
{
test: /\.(gif|png|jpe?g|svg)$/i,
use: [
// {
// loader: 'file-loader',
// options: {
// name: 'img/[name].[ext]',
// }
// },
{
loader: 'url-loader',
options: {
limit: 10000,
publicPath: "../",
name: 'img/[name].[ext]',
}
}
],
}
],
},
plugins: [
new HtmlWebpackPlugin({
template: './test.pug',
filename: 'index.html',
favicon: 'img/favicon.png',
cache: false,
}),
new ExtractTextPlugin('css/style.css'),
],
devServer: {
contentBase: path.join(__dirname, 'build'),
compress: true,
open: 'firefox',
port: 8080,
hot: true,
},
};请给我建议。
发布于 2019-05-29 17:41:15
似乎这个话题对任何人都不感兴趣,但我找到了解决办法,如下所示:
( a)为了触发webpack将您的资产从.pug模板中包含到依赖关系图中,需要:
img(
alt="Your image"
src=require("./img/image.jpg")
)但是,如果您从单个sprite访问所有SVG,则不能对SVG进行同样的操作。因为:
svg
use(xlink:href=require("./img/sprite.svg#icon"))会抛出和异常,说它找不到那个名字的文件。
因此,我所做的是在模板require("./img/sprite.svg")的开头要求整个sprite,然后以通常的方式指定图标:
svg
use(xlink:href="./img/sprite.svg#icon")( b)关于重新装货问题,并不是那么容易。我玩了MiniCssExtractPlugin选项,但仍然无法让它重新加载。所以我最终从这个要旨和这个回购那里学到了一些想法。但是,必须更改项目的结构,并创建index.js作为入口点。
https://stackoverflow.com/questions/55861855
复制相似问题