gpt4 book ai didi

webpack - 使用 webpack 和 postcss-loader 导入字体很棒

转载 作者:行者123 更新时间:2023-12-04 18:34:48 25 4
gpt4 key购买 nike

我正在尝试更新我的 webpack 构建以利用 postcss 和 postcss-loader。但是我在加载字体、图像等时遇到问题。

例如尝试导入 Font Awesome 。

这是我在 postcss 之前的设置,它有效:

CSS:

@import "~font-awesome/css/font-awesome.min.css";

webpack.config:
  ...
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'

带有 postcss 的 webpack:
  ...
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'
}]
}
...

但是,当我这样做时,会出现如下错误:

ERROR in ./style.css Module build failed: ModuleNotFoundError: Module not found: Error: Can't resolve '../fonts/fontawesome-webfont.eot' in '/test-project/public'



我也尝试了其他一些库(即 Bootstrap 、传单)并且遇到了同样的问题。

最佳答案

看来 css-loader无法解析到 font-awesome/fonts 的相对 url 路径目录。

您需要一个 alias在您的 css-loader像这样的选择。

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

此外,如果您还使用使用 ../fonts 的项目,您可能需要更具体地使用别名。相对路径。

关于webpack - 使用 webpack 和 postcss-loader 导入字体很棒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48601150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com