语境
首先我做了很多研究,但我没有成功。
我使用 django 作为后端,为了管理我的前端依赖项,我使用了 webpack (starter),我对其进行了修改以满足我的需要。
这是我的 npm / webpack 管理结构的一部分:
- 前端
- 源代码
- 上市
- 建造
- 上市
我正在使用 CopyWebpackPlugin 来管理我的资产,例如图像和字体。放置在public
文件夹中的所有资产都正确复制到build/public
.
但是,我尝试添加一个新模式条目以从位于 node_modules 中的 fontawesome 获取字体并将其复制到build/public
文件夹中,但无论我尝试什么都会出错。我无法弄清楚我做错了什么。
模式条目
output: {
path: Path.join(__dirname, '../build'),
filename: 'js/[name].js',
},
...
new CopyWebpackPlugin(
{
patterns: [
{from: Path.resolve(__dirname, '../public'), to: 'public'},
{
from: Path.resolve(__dirname, '../node_modules/@fortawesome/fontawesome-free/webfonts'),
to: 'public/fonts'
},
]
}
),
错误
应指定插件名称中的错误
所以我试图通过显式命名来获取一个文件,to
并且它正在工作。
{
from: Path.resolve(__dirname, '../node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot'),
to: 'public/fonts/fa-brands-400.eot'
},
但我想让它在整个文件夹中工作。
然后我想知道问题是由模块规则引起的:
{
test: /\.(ico|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2)(\?.*)?$/,
use: {
loader: 'file-loader',
options: {
name: '[path][name].[ext]',
},
},
},
我尝试了一些修改,但没有找到任何解决方案。
编辑
我也试过这个@Andrey:将字体和图像的过程隔离在自己的test
. 好吧,什么都没有改变:/
{
test: /\.(eot|otf|webp|svg|ttf|woff|woff2)(\?.*)?$/,
/* Exclude images while working with fonts, e.g. .svg can be both image or font. */
exclude: Path.resolve(__dirname, '../public/images'),
use: {
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'fonts/'
},
},
},
即使删除这些测试也会导致我犯同样的错误。所以我想这是来自我的模式定义。
我看到上面有 3 个错误name
,所以我.svg
从 webfonts node_modules 中删除了这三个文件。它已经成功构建。所以我仍然卡住了,因为我不知道这怎么可能......