在一个Angular2应用程序中,我已经在webpack配置中设置了文件加载器,就像这样:
据我理解,文件加载器在node_modules文件夹中查找与给定表达式(在本例中是字体文件)匹配的任何文件,并将它们复制到构建输出中的/assets/fonts文件夹中。然而,由于没有实际将文件复制到目标文件夹中,因此这种方法并不起作用。我错过了什么吗?
另外,我也想知道如何处理冲突,因为在多个包的node_modules中可能会有具有相同名称的文件。
更多信息: vendor.scss文件包括以下内容: $zmdi-font-path: "assets/fonts"; @import "~material-design-iconic-font/scss/material-design-iconic-font.scss";
sass-loader最终将其应用于结果,生成以下CSS:
上述两个步骤会导致浏览器向
我还在管道中使用
并像这样在我的组件中包含sass:
{
test: /\.(eot|svg|ttf|woff|woff2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'file?name=/assets/fonts/[name].[ext]'
}
我在其他配置文件中也有这个:
modulesDirectories: ['node_modules']
据我理解,文件加载器在node_modules文件夹中查找与给定表达式(在本例中是字体文件)匹配的任何文件,并将它们复制到构建输出中的/assets/fonts文件夹中。然而,由于没有实际将文件复制到目标文件夹中,因此这种方法并不起作用。我错过了什么吗?
另外,我也想知道如何处理冲突,因为在多个包的node_modules中可能会有具有相同名称的文件。
更多信息: vendor.scss文件包括以下内容: $zmdi-font-path: "assets/fonts"; @import "~material-design-iconic-font/scss/material-design-iconic-font.scss";
sass-loader最终将其应用于结果,生成以下CSS:
@font-face {
font-family: 'Material';
src:url('assets/fonts/Material-Design-Iconic-Font.woff2?v=2.2.0') format('woff2'),url('assets/fonts/Material-Design-Iconic-Font.woff?v=2.2.0') format('woff'),url('assets/fonts/Material-Design-Iconic-Font.ttf?v=2.2.0}') format('truetype');
font-weight: normal;
font-style: normal;
}
上述两个步骤会导致浏览器向
assets/fonts/Material-Design-Iconic-Font.woff2?v=2.2.0
的字体文件发送请求。显然,这只有在运行时才会发生。我应该在哪里require
该文件,以便在构建时将其复制到assets/fonts中?我还在管道中使用
sass-loader
:
{
test: /.scss$/,
loaders: ['raw-loader', 'sass-loader']
}并像这样在我的组件中包含sass:
styleUrls: [
'./../assets/scss/main.scss'
]
我可以看到从浏览器中访问时,HTML包含了CSS,但字体调用返回404。