【发布时间】:2017-10-30 11:30:28
【问题描述】:
我有一个使用 Webpack 编译的 Typescript 应用程序。 这是我的 scss 文件的加载方式:
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'resolve-url-loader', 'sass-loader?sourceMap']
},
这是我的字体的加载方式:
{
test: /\.woff(2)?(\?v=.+)?$/,
use: 'url-loader?limit=10000&mimetype=application/font-woff'
},
{
test: /\.(ttf|eot|svg)(\?v=.+)?$/,
use: 'file-loader'
},
然后我有一个文件app.scss 有这行:
@import "~primeng/resources/themes/omega/theme.scss";
在node_modules 的一个名为theme.scss 的文件中,有一个字体导入:
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url('fonts/roboto-v15-latin-regular.eot'); /* IE9 Compat Modes */
src: local('Roboto'), local('Roboto-Regular'),
url('fonts/roboto-v15-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('fonts/roboto-v15-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
url('fonts/roboto-v15-latin-regular.woff') format('woff'), /* Modern Browsers */
url('fonts/roboto-v15-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
url('fonts/roboto-v15-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */
}
但是当我编译时出现错误:
`Module not found: Error: Can't resolve './fonts/roboto-v15-latin-regular.eot'
in 'path_to_project/src/app'`
所以看来问题在于 Webpack 查找相对于 app.scss 的字体,而不是相对于导入的 theme.scss 查找它。这是resolve-url-loader 应该解决的问题。你看我已经为 scss 文件配置了resolve-url-loader。那么有什么问题呢?
【问题讨论】:
标签: javascript webpack sass primeng