Webpack 使用网页包和PostSS加载器导入字体
我正在尝试更新我的网页包构建以利用POSTSS和POSTSS加载器。但是,我在加载字体、图像等时遇到问题 例如,尝试导入字体 这是我在POSTSS之前的设置,它可以工作: css: webpack.config:Webpack 使用网页包和PostSS加载器导入字体,webpack,postcss,postcss-loader,postcss-import,Webpack,Postcss,Postcss Loader,Postcss Import,我正在尝试更新我的网页包构建以利用POSTSS和POSTSS加载器。但是,我在加载字体、图像等时遇到问题 例如,尝试导入字体 这是我在POSTSS之前的设置,它可以工作: css: webpack.config: ... module: { rules: [{ test: /\.css$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'cs
...
module: {
rules: [{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader'
})
},{
test: /\.(eot|svg|ttf|woff|woff2)$/,
loader: 'file-loader?name=fonts/[name].[ext]'
},{
test: /\.(png|jpg)$/,
loader: 'file-loader?name=images/[name].[ext]'
},{
test: /\.html$/, loader: 'raw-loader'
}]
}
...
正在尝试移动到以下位置:
@import 'font-awesome'
带邮政编码的网页:
...
module: {
rules: [{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [{
loader: 'css-loader',
options: {
importLoaders: 1
}
},{
loader: 'postcss-loader',
options: {
ident: 'postcss',
sourceMap: true,
plugins: [require('postcss-import')()]
}
}]
})
},{
test: /\.(eot|svg|ttf|woff|woff2)$/,
loader: 'file-loader?name=fonts/[name].[ext]'
},{
test: /\.(png|jpg)$/,
loader: 'file-loader?name=images/[name].[ext]'
},{
test: /\.html$/, loader: 'raw-loader'
}]
}
...
但是,当我这样做时,会出现如下错误:
./style.css模块生成中出错失败:ModuleNotFoundError:模块
未找到:错误:无法在中解析“../fonts/fontawesome webfont.eot”
“/测试项目/公共”
我也尝试过其他一些库(即引导库、传单库),但遇到了同样的问题。看来
css加载程序
在解析font/fonts
目录的相对url路径时遇到了问题
您需要在css加载器中设置一个类似这样的选项
use: [{
loader: 'css-loader',
options: {
importLoaders: 1,
alias: {
"../fonts": "font-awesome/fonts"
}
}
}
我在一个示例项目中对此进行了测试,它似乎编译成功
$ ./node_modules/.bin/webpack
Hash: 05687ac67950e58e8485
Version: webpack 3.10.0
Time: 996ms
Asset Size Chunks Chunk Names
fonts/fontawesome-webfont.eot 166 kB [emitted]
fonts/fontawesome-webfont.woff2 77.2 kB [emitted]
fonts/fontawesome-webfont.woff 98 kB [emitted]
fonts/fontawesome-webfont.ttf 166 kB [emitted]
fonts/fontawesome-webfont.svg 444 kB [emitted] [big]
./dist/main.js 2.63 kB 0 [emitted] main
styles.css 38.1 kB 0 [emitted] main
[0] ./main.js 43 bytes {0} [built]
[1] ./main.css 41 bytes {0} [built]
[2] ../node_modules/css-loader?{"importLoaders":1,"alias":{"../fonts":"font-awesome/fonts"}}!../node_modules/resolve-url-loader!../node_modules/postcss-loader/lib?{"ident":"postcss"}!./main.css 43.7 kB [built]
+ 10 hidden modules
Child extract-text-webpack-plugin ../../../../Joshua Barnett\Projects\blah\node_modules\extract-text-webpack-plugin\dist ../../../../Joshua Barnett\Projects\blah\node_modules\css-loader\index.js??ref--0-2!../../../../Joshua Barnett\Projects\blah\node_modules\resolve-url-loader\index.js!../../../../Joshua Barnett\Projects\blah\node_modules\postcss-loader\lib\index.js??postcss!../../../../Joshua Barnett\Projects\blah\js\main.css:
5 assets
[0] ../node_modules/css-loader?{"importLoaders":1,"alias":{"../fonts":"font-awesome/fonts"}}!../node_modules/resolve-url-loader!../node_modules/postcss-loader/lib?{"ident":"postcss"}!./main.css 43.7 kB {0} [built]
+ 8 hidden modules
此外,如果您同时使用的项目使用的是。/font
相对路径,则可能需要更具体地使用别名。此网页配置为我解决了以下问题:
const rules = [{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
importLoaders: 1,
sourceMap: true,
}
},
'resolve-url-loader',
{
loader: 'postcss-loader',
options: {
sourceMap: true,
ident: 'postcss',
plugins: () => [],
}
}
]
}, {
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
loader: 'url-loader?limit=100000',
}]
为什么css加载器只有在使用postcss加载器时才会出现问题?在这一点上,我想我没有看到使用postcss加载器的意义。我想它也失去了对相对路径是相对的地方的引用。我在输出的CSS中使用PostCSS,因此对于较旧的浏览器,它会自动填充多边形。这是否解决了您的问题?alias不再受支持,因为它现在已移动到配置文件中的顶级resolve
块:
const rules = [{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
importLoaders: 1,
sourceMap: true,
}
},
'resolve-url-loader',
{
loader: 'postcss-loader',
options: {
sourceMap: true,
ident: 'postcss',
plugins: () => [],
}
}
]
}, {
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
loader: 'url-loader?limit=100000',
}]